diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 000000000..c12d62531 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,4 @@ +# These are supported funding model platforms + +github: GitSquared +custom: ['https://gaby.dev/donate'] diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 000000000..27d64fcb8 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,8 @@ +blank_issues_enabled: true +contact_links: + - name: Feature Ideas + url: https://github.com/GitSquared/edex-ui/discussions/new?category=ideas + about: Have a crazy idea for eDEX you'd like to share? Please do so here! + - name: Questions + url: https://github.com/GitSquared/edex-ui/discussions/new?category=questions + about: Confused? Ask all your questions here. diff --git a/.github/ISSUE_TEMPLATE/issue_template.md b/.github/ISSUE_TEMPLATE/issue_template.md new file mode 100644 index 000000000..ce81e60e1 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/issue_template.md @@ -0,0 +1,38 @@ +--- +name: Bug report +about: Something's broken or screaming error messages at you? Let's fix it. +title: '' +labels: investigation + +--- + + + + +## Technical information +**Using version:** + - [ ] `master` (running from GitHub-published source code, currently `v2.2.8-pre`) + - [ ] `latest` (latest release, currently `v2.2.7`) + - [ ] `vX.X.X` (specify other version) + +**Running on:** + - [ ] Linux + - [ ] Windows + - [ ] macOS + +**How comfortable you are with your system and/or IT in general:** + - [ ] I'm kind of lost, honestly + - [ ] I know what's up, I could help you run some commands or checks + - [ ] My machine is fully under my control, tell me what you need + - [ ] I attended [Defcon](https://defcon.org) last year + +--- + +## Problem + +(Write your report here. Screenshots and step-by-step instructions can help a lot!) diff --git a/.github/workflows/build-binaries.yaml b/.github/workflows/build-binaries.yaml new file mode 100644 index 000000000..9154b6351 --- /dev/null +++ b/.github/workflows/build-binaries.yaml @@ -0,0 +1,205 @@ +name: Build packaged binaries + +on: [push, pull_request, create] + +jobs: + build-linux: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Cache node modules + uses: actions/cache@v2 + env: + cache-name: cache-node-modules + with: + # npm cache files are stored in `~/.npm` on Linux/macOS + path: ~/.npm + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + - name: Cache Electron binaries + uses: actions/cache@v2 + env: + cache-name: cache-electron-bins + with: + # cache location is described here: + # https://github.com/electron/get#how-it-works + path: ~/.cache/electron + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + - name: Install system dependencies for x64->x32 cross-build + run: | + sudo apt update + sudo apt install libc6-dev-i386 gcc-multilib g++-multilib + - name: Setup Node.js + uses: actions/setup-node@v1 + with: + node-version: 14 + - name: Setup npm + run: sudo npm i -g npm@7 + - name: Install build deps + run: npm install + - name: Run prebuild script + run: npm run prebuild-linux + - name: Build for x64 / ia32 + run: ./node_modules/.bin/electron-builder build -l --x64 --ia32 + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - uses: actions/upload-artifact@v2 + with: + name: Linux-AppImages + path: dist/*.AppImage + if-no-files-found: error + + build-linux-arm32: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Setup QEMU + uses: docker/setup-qemu-action@v1 + with: + platforms: arm + - name: Cache node modules + uses: actions/cache@v2 + env: + cache-name: cache-node-modules + with: + # npm cache files are stored in `~/.npm` on Linux/macOS + path: ~/.npm + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + - name: Cache Electron binaries + uses: actions/cache@v2 + env: + cache-name: cache-electron-bins + with: + # cache location is described here: + # https://github.com/electron/get#how-it-works + path: ~/.cache/electron + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + - name: Run prebuild outside of QEMU emulator + run: sudo npm i -g npm@7 && npm install && rsync -a --info=progress2 src/ prebuild-src --exclude node_modules && node prebuild-minify.js && rm -rf node_modules + - name: Build for arm32v7 (aka armv7l) + uses: docker://arm32v7/node:14-buster + with: + args: bash -c "npm i -g npm@7 && npm install && ./node_modules/.bin/electron-builder build -l --armv7l" + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - uses: actions/upload-artifact@v2 + with: + name: Linux-arm32-AppImage + path: dist/*.AppImage + if-no-files-found: error + + build-linux-arm64: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Setup QEMU + uses: docker/setup-qemu-action@v1 + with: + platforms: arm64 + - name: Cache node modules + uses: actions/cache@v2 + env: + cache-name: cache-node-modules + with: + # npm cache files are stored in `~/.npm` on Linux/macOS + path: ~/.npm + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + - name: Cache Electron binaries + uses: actions/cache@v2 + env: + cache-name: cache-electron-bins + with: + # cache location is described here: + # https://github.com/electron/get#how-it-works + path: ~/.cache/electron + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + - name: Run prebuild outside of QEMU emulator + run: sudo npm i -g npm@7 && npm install && rsync -a --info=progress2 src/ prebuild-src --exclude node_modules && node prebuild-minify.js && rm -rf node_modules + - name: Build for arm64 (aka arm64v8) + uses: docker://arm64v8/node:14-buster + with: + args: bash -c "npm i -g npm@7 && npm install && ./node_modules/.bin/electron-builder build -l --arm64" + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - uses: actions/upload-artifact@v2 + with: + name: Linux-arm64-AppImage + path: dist/*.AppImage + if-no-files-found: error + + build-windows: + runs-on: windows-latest + steps: + - uses: actions/checkout@v1 + - name: Get npm cache directory + id: npm-cache + run: | + echo "::set-output name=dir::$(npm config get cache)" + - uses: actions/cache@v2 + with: + path: ${{ steps.npm-cache.outputs.dir }} + key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} + - name: Cache Electron binaries + uses: actions/cache@v2 + env: + cache-name: cache-electron-bins + with: + # cache location is described here: + # https://github.com/electron/get#how-it-works + path: ~/AppData/Local/electron/Cache + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + - name: Setup Node.js + uses: actions/setup-node@v1 + with: + node-version: 14 + - name: Setup npm + run: npm i -g npm@7 + - name: npm install + run: npm install + - name: npm build + run: npm run build-windows + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - uses: actions/upload-artifact@v2 + with: + name: Windows-Installer + path: dist/*.exe + if-no-files-found: error + + build-darwin: + runs-on: macos-latest + steps: + - uses: actions/checkout@v1 + - name: Cache node modules + uses: actions/cache@v2 + env: + cache-name: cache-node-modules + with: + # npm cache files are stored in `~/.npm` on Linux/macOS + path: ~/.npm + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + - name: Cache Electron binaries + uses: actions/cache@v2 + env: + cache-name: cache-electron-bins + with: + # cache location is described here: + # https://github.com/electron/get#how-it-works + path: ~/Library/Caches/electron + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + - name: Setup Node.js + uses: actions/setup-node@v1 + with: + node-version: 14 + - name: Setup npm + run: sudo npm i -g npm@7 + - name: npm install + run: npm install + - name: npm build + run: npm run build-darwin + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - uses: actions/upload-artifact@v2 + with: + name: MacOS-Image + path: dist/*.dmg + if-no-files-found: error diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml new file mode 100644 index 000000000..f17863345 --- /dev/null +++ b/.github/workflows/codeql-analysis.yml @@ -0,0 +1,71 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL" + +on: + push: + branches: [ master ] + pull_request: + # The branches below must be a subset of the branches above + branches: [ master ] + schedule: + - cron: '20 1 * * 5' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: [ 'javascript' ] + # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] + # Learn more: + # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v1 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + # queries: ./path/to/local/query, your-org/your-repo/queries@main + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v1 + + # ℹ️ Command-line programs to run using the OS shell. + # 📚 https://git.io/JvXDl + + # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language + + #- run: | + # make bootstrap + # make release + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v1 diff --git a/.gitignore b/.gitignore index bf5625464..afd6c9b31 100644 --- a/.gitignore +++ b/.gitignore @@ -39,6 +39,6 @@ jspm_packages # JetBrains IDE project folder (e.g. WebStorm) .idea -settings.json dist prebuild-src +src/node_modules diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..74a9333ba --- /dev/null +++ b/.gitmodules @@ -0,0 +1,18 @@ +[submodule "file-icons/atom"] + path = file-icons/atom + url = https://github.com/file-icons/atom.git +[submodule "file-icons/devopicons"] + path = file-icons/devopicons + url = https://github.com/file-icons/DevOpicons.git +[submodule "file-icons/mfixx"] + path = file-icons/mfixx + url = https://github.com/file-icons/MFixx.git +[submodule "file-icons/source"] + path = file-icons/source + url = https://github.com/file-icons/source.git +[submodule "file-icons/font-awesome"] + path = file-icons/font-awesome + url = https://github.com/FortAwesome/Font-Awesome.git +[submodule "file-icons/bytesize-icons"] + path = file-icons/bytesize-icons + url = git@github.com:danklammer/bytesize-icons.git diff --git a/.snyk b/.snyk deleted file mode 100644 index eb7801c85..000000000 --- a/.snyk +++ /dev/null @@ -1,14 +0,0 @@ -# Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities. -version: v1.12.0 -ignore: {} -# patches apply the minimum changes required to fix a vulnerability -patch: - 'npm:hoek:20180212': - - electron-rebuild > node-gyp > request > hawk > hoek: - patched: '2018-06-19T01:45:58.543Z' - - electron-rebuild > node-gyp > request > hawk > boom > hoek: - patched: '2018-06-19T01:45:58.543Z' - - electron-rebuild > node-gyp > request > hawk > sntp > hoek: - patched: '2018-06-19T01:45:58.543Z' - - electron-rebuild > node-gyp > request > hawk > cryptiles > boom > hoek: - patched: '2018-06-19T01:45:58.543Z' diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index b73dfc0d7..000000000 --- a/.travis.yml +++ /dev/null @@ -1,34 +0,0 @@ -os: - - linux - - osx -language: node_js -node_js: - - "8" - -before_install: - - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get install -y libc6-dev-i386 gcc-multilib g++-multilib ; fi - -before_script: - - npm install snyk - - npm run snyk-protect - - npm install - -script: - - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then npm run build-darwin ; fi - - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then npm run build-linux ; fi - -deploy: - skip_cleanup: true - provider: releases - api_key: - secure: rBDPbnv7goHiGlcy5fyYZf4Qt/rLUPk9+cz+2uQhTJx9O5rTE3p4BdukXLQoWOsd7XF8wvwOT6PPJTPeznLE/cW6TU7KobTLt5D44QH+ELYtc/vBz5iJd/waMeJXe1GF8Yh2Xqcvq9D5IMjroQMTjzCmP16RhrCrjmsWdmOKSbT+BXVcu1w79ly9ON0TN9IxCXH00YMxmnIvQq7PabEda2JBwys85gVXGFQt625kYQAHUp7ihNCfzrWdjkdsYeEWTu0axlVESAeLMWGoRUsYGVSaAnrXPRdW4OPbU8k0LhjwsAxkKk0VjmhsXvV2m6QKZJbXE99NMYNQksXVdi4mHNtgFDR6hSrJjIr2SLvS4aTfSrTxWPPPR+Kh+4Ocpnep5oH8vPD20dKMiFINzyzzqxlRL3MukUt5oI2ZFHNcnBogaMwSjdf2CDSIO/DI3VZCA+z388hDDUTT1x8UCkokXuXSg9PQCXYX/6fZd565GZhcHbwGEQ5aPGqzZ3/00T7E4B9Ip3UW0tZ8cXm+U+nvgT7KvjD4xby24Cr8YDaoJBK0eT/vbQM7cxl9VKPfkVU8NsYIfV8dmai1ieR1Lnor3iL5xWPsOcjkItahUPjRQLfBEcXNYoLoYEkr7txhLIhMM+q2w5hs2FmbLRLn0qwExYxtTS/rk3NyYZzZgJwtEBc= - file: - - "dist/eDEX-UI Linux (i386).AppImage" - - "dist/eDEX-UI Linux (x86_64).AppImage" - - "dist/eDEX-UI MacOS Image.dmg" - options: - draft: true - on: - repo: GitSquared/edex-ui - branch: master - tags: true diff --git a/LICENSE b/LICENSE index 9cecc1d46..94a045322 100644 --- a/LICENSE +++ b/LICENSE @@ -619,56 +619,3 @@ Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {one line to give the program's name and a brief idea of what it does.} - Copyright (C) {year} {name of author} - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - {project} Copyright (C) {year} {fullname} - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/README.md b/README.md index 890b9f8ed..3aebe750c 100644 --- a/README.md +++ b/README.md @@ -1,48 +1,99 @@


- Logo + Logo +

+ undefined +
+ undefined + undefined + undefined +
+ undefined + undefined + undefined + undefined + undefined +
+ (Project archived oct. 18th 2021)


+eDEX-UI is a fullscreen, cross-platform terminal emulator and system monitor that looks and feels like a sci-fi computer interface. + +--- + + + Demo on YouTube + + +Heavily inspired from the [TRON Legacy movie effects](https://web.archive.org/web/20170511000410/http://jtnimoy.com/blogs/projects/14881671) (especially the [Board Room sequence](https://gmunk.com/TRON-Board-Room)), the eDEX-UI project was originally meant to be *"[DEX-UI](https://github.com/seenaburns/dex-ui) with less « art » and more « distributable software »"*. -Download | Linux & macOS | Windows | Dependencies | Build system | Source --------- | ------------- | ------- | ------------ | ------------ | ------ -[![Release Badge](https://badgen.net/github/release/GitSquared/edex-ui)](https://github.com/GitSquared/edex-ui/releases) | [![Build Status](https://travis-ci.org/GitSquared/edex-ui.svg?branch=master)](https://travis-ci.org/GitSquared/edex-ui) | [![Build status](https://ci.appveyor.com/api/projects/status/leb069bro8gwocu7/branch/master?svg=true)](https://ci.appveyor.com/project/GitSquared/edex-ui/branch/master) | [![Dependabot Status](https://api.dependabot.com/badges/status?host=github&repo=GitSquared/edex-ui)](https://dependabot.com) | [![Known Vulnerabilities](https://snyk.io/test/github/GitSquared/edex-ui/badge.svg?targetFile=package.json)](https://snyk.io/test/github/GitSquared/edex-ui?targetFile=package.json) | [![Known Vulnerabilities](https://snyk.io/test/github/GitSquared/edex-ui/badge.svg?targetFile=src%2Fpackage.json)](https://snyk.io/test/github/GitSquared/edex-ui?targetFile=src%2Fpackage.json) +While keeping a futuristic look and feel, it strives to maintain a certain level of functionality and to be usable in real-life scenarios, with the larger goal of bringing science-fiction UXs to the mainstream. -Download 2.0.0: [for Windows](https://github.com/GitSquared/edex-ui/releases/download/v2.0.0/eDEX-UI.Windows.Installer.exe) | [for macOS](https://github.com/GitSquared/edex-ui/releases/download/v2.0.0/eDEX-UI.MacOS.Image.dmg) | [for Linux x32](https://github.com/GitSquared/edex-ui/releases/download/v2.0.0/eDEX-UI.Linux.i386.AppImage) | [for Linux x64](https://github.com/GitSquared/edex-ui/releases/download/v2.0.0/eDEX-UI.Linux.x86_64.AppImage) +
+ +It might or might not be a joke taken too seriously. + + +--- + +

+ Jump to:
FeaturesScreenshotsQuestions & AnswersDownloadFeatured InContributor InstructionsCredits
+

-eDEX-UI is a fullscreen desktop application resembling a sci-fi computer interface, heavily inspired from [DEX-UI](https://github.com/seenaburns/dex-ui) and the [TRON Legacy movie effects](https://web.archive.org/web/20170511000410/http://jtnimoy.com/blogs/projects/14881671). It runs the shell of your choice in a real terminal, and displays live information about your system. It was made to be used on large touchscreens but will work nicely on a regular desktop computer or perhaps a tablet PC or one of those funky 360° laptops with touchscreens. +## Sponsor -I had no ideas for a name so i took DEX-UI and added a "e" for Electron. Deal with it. +**Want to help support my open-source experiments and learn some cool JavaScript tricks at the same time?** -([Official ArchLinux AUR package](https://aur.archlinux.org/packages/edex-ui/) maintained with the help of [@JesusCrie](https://github.com/JesusCrie)) +Click the banner below and sign up to **Bytes**, the only newsletter cool enough to be recommended by eDEX-UI. + +[![Bytes by UI.dev](media/sponsor-uidev-bytes.jpg)](https://ui.dev/bytes/?r=gabriel) + +## Features +- Fully featured terminal emulator with tabs, colors, mouse events, and support for `curses` and `curses`-like applications. +- Real-time system (CPU, RAM, swap, processes) and network (GeoIP, active connections, transfer rates) monitoring. +- Full support for touch-enabled displays, including an on-screen keyboard. +- Directory viewer that follows the CWD (current working directory) of the terminal. +- Advanced customization using themes, on-screen keyboard layouts, CSS injections. See the [wiki](https://github.com/GitSquared/edex-ui/wiki) for more info. +- Optional sound effects made by a talented sound designer for maximum hollywood hacking vibe. ## Screenshots -![Default screenshot](https://github.com/GitSquared/edex-ui/raw/master/media/screenshot_default.png) +![Default screenshot](media/screenshot_default.png) + +_[neofetch](https://github.com/dylanaraps/neofetch) on eDEX-UI 2.2 with the default "tron" theme & QWERTY keyboard_ -_([neofetch](https://github.com/dylanaraps/neofetch) on eDEX-UI 2.0 with the default "tron" theme & QWERTY keyboard)_ +![Blade screenshot](media/screenshot_blade.png) -![Nord screenshot](https://github.com/GitSquared/edex-ui/raw/master/media/screenshot_nord.png) +_Checking out available themes in [eDEX's config dir](https://github.com/GitSquared/edex-ui/wiki/userData) with [`ranger`](https://github.com/ranger/ranger) on eDEX-UI 2.2 with the "blade" theme_ -_(Graphical settings editor on eDEX-UI 2.0 with the "nord" colorful theme)_ +![Disrupted screenshot](media/screenshot_disrupted.png) -![Disrupted screenshot](https://github.com/GitSquared/edex-ui/raw/master/media/screenshot_disrupted.png) +_[cmatrix](https://github.com/abishekvashok/cmatrix) on eDEX-UI 2.2 with the experimental "tron-disrupted" theme, and the user-contributed DVORAK keyboard_ -_([fx](https://github.com/antonmedv/fx) showing the results of a [ipapi](https://github.com/GitSquared/ipapi) query on eDEX-UI 2.0 with the experimental "tron-disrupted" theme, and the user-contributed DVORAK keyboard)_ +![Horizon screenshot](media/screenshot_horizon.png) + +_Editing eDEX-UI source code with `nvim` on eDEX-UI 2.2 with the custom [`horizon-full`](https://github.com/GitSquared/horizon-edex-theme) theme_ ## Q&A -#### What OS can this thing run on? -Currently Windows, the latest macOS and any Linux distro that can run Chromium (AppImage package). -#### Is this a real terminal? -Yes. By default, eDEX runs bash on Linux and Powershell on Windows, but you can change that to any command in the settings.json file. -#### I don't like the colors/the keyboard layout is not right for me! -We got you covered! Check the [repo's Wiki](https://github.com/GitSquared/edex-ui/wiki) for in-depth information about customizing eDEX. -#### Why is there a keyboard? -eDEX-UI is meant to be used on touchscreens, even if it works well on regular displays! If you have a physical keyboard wired to your computer, pressing keys IRL will illuminate the virtual keyboard: *please remember to not type any passwords if you are recording your screen!* -#### What's the difference between this and the original DEX-UI? -Seenaburns' DEX-UI was created _"as an experiment or an art piece, not distributable software"_. The goal of this project is to push Seena's vision forward by making such an interface usable in real-life scenarios. -#### Will using this make me insanely badass? -Yes. +#### How do I get it? +Click on the little badges under the eDEX logo at the top of this page, or go to the [Releases](https://github.com/GitSquared/edex-ui/releases) tab, or download it through [one of the available repositories](https://repology.org/project/edex-ui/versions) (Homebrew, AUR...). + +Public release binaries are unsigned ([why](https://gaby.dev/posts/code-signing)). On Linux, you will need to `chmod +x` the AppImage file in order to run it. +#### I have a problem! +Search through the [Issues](https://github.com/GitSquared/edex-ui/issues) to see if yours has already been reported. If you're confident it hasn't been reported yet, feel free to open up a new one. If you see your issue and it's been closed, it probably means that the fix for it will ship in the next version, and you'll have to wait a bit. +#### Can you disable the keyboard/the filesystem display? +You can't disable them (yet) but you can hide them. See the `tron-notype` theme. +#### Why is the file browser saying that "Tracking Failed"? (Windows only) +On Linux and macOS, eDEX tracks where you're going in your terminal tab to display the content of the current folder on-screen. +Sadly, this is technically impossible to do on Windows right now, so the file browser reverts back to a "detached" mode. You can still use it to browse files & directories and click on files to input their path in the terminal. +#### Can this run on a Raspberry Pi / ARM device? +We provide prebuilt arm64 builds. For other platforms, see [this issue comment](https://github.com/GitSquared/edex-ui/issues/313#issuecomment-443465345), and the thread on issue [#818](https://github.com/GitSquared/edex-ui/issues/818). +#### Is this repo actively maintained? +No, after a 3 years run, this project has been archived. See the [announcement](https://github.com/GitSquared/edex-ui/releases/tag/v2.2.8). +#### How did you make this? +Glad you're interested! See [#272](https://github.com/GitSquared/edex-ui/issues/272). +#### This is so cool. +Thanks! If you feel like it, you can [follow me on Twitter](https://gaby.dev/twitter) to hear about new stuff I'm making. @@ -53,43 +104,54 @@ Yes. - [Korben article (in french)](https://korben.info/une-interface-futuriste-pour-vos-ecrans-tactiles.html) - [Hacker News](https://news.ycombinator.com/item?id=18509828) - [This tweet that made me smile](https://twitter.com/mikemaccana/status/1065615451940667396) -- [BoingBoing article](https://boingboing.net/2018/11/23/simulacrum-sf.html) - Apparently i'm a "French hacker" lol +- [BoingBoing article](https://boingboing.net/2018/11/23/simulacrum-sf.html) - Apparently i'm a "French hacker" - [OReilly 4 short links](https://www.oreilly.com/ideas/four-short-links-23-november-2018) - [Hackaday](https://hackaday.com/2018/11/23/look-like-a-movie-hacker/) - [Developpez.com (another french link)](https://www.developpez.com/actu/234808/Une-application-de-bureau-ressemble-a-une-interface-d-ordinateur-de-science-fiction-inspiree-des-effets-du-film-TRON-Legacy/) - [GitHub Blog's Release Radar November 2018](https://blog.github.com/2018-12-21-release-radar-november-2018/) +- [opensource.com Productive Tools for 2019](https://opensource.com/article/19/1/productivity-tool-edex-ui) +- [O'Reilly 4 short links (again)](https://www.oreilly.com/radar/four-short-links-7-july-2020/) +- [LinuxLinks](https://www.linuxlinks.com/linux-candy-edex-ui-sci-fi-computer-terminal-emulator-system-monitor/) +- [Linux For Everyone (Youtube)](https://www.youtube.com/watch?v=gbzqCAjm--g) +- [BestOfJS Rising Stars 2020](https://risingstars.js.org/2020/en#edex-ui) +- [The Geek Freaks (Youtube/German)](https://youtu.be/TSjMIeLG0Sk) +- [JSNation Open Source Awards 2021](https://osawards.com/javascript/#nominees) (Nominee - Fun Side Project of the Year) ## Useful commands for the nerds -#### Starting from source: -**IMPORTANT NOTE:** the following instructions are meant **for DEVELOPERS ONLY**. If you're just a casual user please download the precompiled binaries available on the [Releases tab](https://github.com/GitSquared/edex-ui/releases). +**IMPORTANT NOTE:** the following instructions are meant for running eDEX from the latest unoptimized, unreleased, development version. If you'd like to get stable software instead, refer to [these](#how-do-i-get-it) instructions. +#### Starting from source: on *nix systems (You'll need the Xcode command line tools on macOS): - clone the repository - `npm run install-linux` -- `npm start` +- `npm run start` on Windows: - start cmd or powershell **as administrator** - clone the repository - `npm run install-windows` -- `npm start` +- `npm run start` + #### Building -Note: Due to native modules, you can only compile binaries for the OS you are compiling from. -Note²: It is recommended to start building from a fresh clone to prevent the code minifier script from parsing an entire `node_modules` folder. +Note: Due to native modules, you can only build targets for the host OS you are using. -- make a fresh clone (recommended) - `npm install` (NOT `install-linux` or `install-windows`) - `npm run build-linux` or `build-windows` or `build-darwin` -Resulting binaries and assets will be in the `dist` folder. +The script will minify the source code, recompile native dependencies and create distributable assets in the `dist` folder. + +#### Getting the bleeding edge +If you're interested in running the latest in-development version but don't want to compile source code yourself, you can can get pre-built nightly binaries on [GitHub Actions](https://github.com/GitSquared/edex-ui/actions): click the latest commits, and download the artifacts bundle for your OS. ## Credits -eDEX-UI's source code was primarily written by me, [Squared](https://github.com/GitSquared). If you want to get in touch with me or find other projects I'm involved in, check out [my website](https://squared.codebrew.fr). +eDEX-UI's source code was primarily written by me, [Squared](https://github.com/GitSquared). If you want to get in touch with me or find other projects I'm involved in, check out [my website](https://gaby.dev). [PixelyIon](https://github.com/PixelyIon) helped me get started with Windows compatibility and offered some precious advice when I started to work on this project seriously. +[IceWolf](https://soundcloud.com/iamicewolf) composed the sound effects on v2.1.x and above. He makes really cool stuff, check out his music! + ## Thanks Of course, eDEX would never have existed if I hadn't stumbled upon the amazing work of [Seena](https://github.com/seenaburns) on [r/unixporn](https://reddit.com/r/unixporn). @@ -98,3 +160,7 @@ This project uses a bunch of open-source libraries, frameworks and tools, see [t I want to namely thank the developers behind [xterm.js](https://github.com/xtermjs/xterm.js), [systeminformation](https://github.com/sebhildebrandt/systeminformation) and [SmoothieCharts](https://github.com/joewalnes/smoothie). Huge thanks to [Rob "Arscan" Scanlon](https://github.com/arscan) for making the fantastic [ENCOM Globe](https://github.com/arscan/encom-globe), also inspired by the TRON: Legacy movie, and distributing it freely. His work really puts the icing on the cake. + +## Licensing + +Licensed under the [GPLv3.0](https://github.com/GitSquared/edex-ui/blob/master/LICENSE). diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 000000000..02ed41b2c --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,11 @@ +# Security Policy + +## Supported Versions + +We support the [latest released version](https://github.com/GitSquared/edex-ui/releases/latest), and the current development version (`master` branch). + +## Reporting a Vulnerability + +If you're concerned about a potential or proven security vulnerability in this software, please get in touch by sending an email at [`gabriel@saillard.dev`](mailto:%22Gabriel%20SAILLARD%22%20%3Cgabriel%40saillard.dev%3E?subject=%5BSECURITY%5D%20eDEX-UI%20vulnerability%20concern&body=(Please%20describe%20what%20code%20you%20think%20is%20vulnerable%2C%20and%20provide%20a%20way%20to%20reproduce%20the%20issue%20if%20possible)). + +If your email subject contains the `[SECURITY]` tag, you will be surfaced to the front of my inbox and should expect a response in 24 hours or less. The link above will set you up with a subject template. diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index e360ba41f..000000000 --- a/appveyor.yml +++ /dev/null @@ -1,23 +0,0 @@ -version: '{build}' -pull_requests: - do_not_increment_build_number: true -install: -- ps: Install-Product node 8 -build_script: -- cmd: npm install snyk && npm run snyk-protect && npm install && npm install 7zip-bin-win && npm run build-windows -test: off -artifacts: - - path: "dist\\eDEX-UI Windows Installer.exe" - name: Installer -deploy: -- provider: GitHub - tag: $(appveyor_repo_tag_name) - release: eDEX-UI $(appveyor_repo_tag_name) - description: 'Placeholder description' - auth_token: - secure: xbDg5MsNRSCKs8kfz7jFP8D4g0BoPVB0vUPEy446Bru5RQCF/JDMGdhAa6SjLVTW - artifact: Installer - draft: true - force_update: true - on: - appveyor_repo_tag: true diff --git a/file-icons-generator.js b/file-icons-generator.js new file mode 100644 index 000000000..a4252fa05 --- /dev/null +++ b/file-icons-generator.js @@ -0,0 +1,229 @@ +// This is an helper script to generate the resources used by eDEX to display file-specific icons in fsDisp, from a fresh file-icons/source GitHub clone. +// Generated files are: +// - src/assets/icons/file-icons.json: monolithic JSON files containing SVG data needed to draw all the icons. +// - src/assets/misc/file-icons-match.js: script to match filenames to icons by using regex expressions. +// +// The generated files are pretty-printed. See prebuild-minify.js for automatic, on-CI minification of source files before bundling them in binary release assets. + +// BEFORE RUNNING THIS SCRIPT: +// - npm run init-file-icons +// You can then use `npm run update-file-icons` which will pull the git submodules and run this script. + + +const fs = require("fs"); +const path = require("path"); +const CSON = require("cson-parser"); + +var fileIconsObject = {}; +// Get file icons from fontawesome +fs.readdirSync(path.join(__dirname, "file-icons", "font-awesome", "svgs", "brands")).forEach(icon => { + let iconName = icon.replace(".svg", ""); + + let text = fs.readFileSync(path.join(__dirname, "file-icons", "font-awesome", "svgs", "brands", icon), {encoding: "utf8"}); + + let width = text.substr(text.indexOf('viewBox="0 0 ')+13); + width = Number(width.slice(0, width.indexOf(" "))); + let height = text.substr(text.indexOf('viewBox="0 0 ')+13+width.toString().length+1); + height = Number(height.slice(0, height.indexOf('"'))); + let svg = text.substr(text.indexOf(">")+1); + svg = svg.replace("", ""); + + if (width === null || height === null) console.log(icon); + + fileIconsObject[iconName] = { + width, + height, + svg + }; +}); +// Get file icons from file-icons/source +fs.readdirSync(path.join(__dirname, "file-icons", "source", "svg")).forEach(icon => { + let iconName = icon.toLowerCase().replace(".svg", "").replace("-1", ""); + + let text = fs.readFileSync(path.join(__dirname, "file-icons", "source", "svg", icon), {encoding: "utf8"}); + + let width = text.substr(text.indexOf('width="')+7); + width = Number(width.slice(0, width.indexOf("px"))); + let height = text.substr(text.indexOf('height="')+8); + height = Number(height.slice(0, height.indexOf("px"))); + let svg = text.substr(text.indexOf(">")+1); + svg = svg.replace("", ""); + + if (width === null || height === null) console.log(icon); + + fileIconsObject[iconName] = { + width, + height, + svg + }; +}); +// Get file icons from file-icons/devopicons +fs.readdirSync(path.join(__dirname, "file-icons", "devopicons", "svg")).forEach(icon => { + if (!icon.endsWith(".svg")) return; + let iconName = icon.toLowerCase().replace(".svg", "").replace("-1", ""); + + let text = fs.readFileSync(path.join(__dirname, "file-icons", "devopicons", "svg", icon), {encoding: "utf8"}); + + let width = text.substr(text.indexOf('width="')+7); + width = Number(width.slice(0, width.indexOf("px"))); + let height = text.substr(text.indexOf('height="')+8); + height = Number(height.slice(0, height.indexOf("px"))); + let svg = text.substr(text.indexOf(">")+1); + svg = svg.replace("", ""); + + if (width === null || height === null) console.log(icon); + + fileIconsObject[iconName] = { + width, + height, + svg + }; +}); +// Get file icons from file-icons/mfixx +fs.readdirSync(path.join(__dirname, "file-icons", "mfixx", "svg")).forEach(icon => { + if (!icon.endsWith(".svg")) return; + let iconName = icon.toLowerCase().replace(".svg", "").replace("-1", ""); + + let text = fs.readFileSync(path.join(__dirname, "file-icons", "mfixx", "svg", icon), {encoding: "utf8"}); + + let width = text.substr(text.indexOf('width="')+7); + width = Number(width.slice(0, width.indexOf("px"))); + let height = text.substr(text.indexOf('height="')+8); + height = Number(height.slice(0, height.indexOf("px"))); + let svg = text.substr(text.indexOf(">")+1); + svg = svg.replace("", ""); + + if (width === null || height === null) console.log(icon); + + fileIconsObject[iconName] = { + width, + height, + svg + }; +}); +// Get file icons from file-icons/bytesize-icons +fs.readdirSync(path.join(__dirname, "file-icons", "bytesize-icons", "dist", "icons")).forEach(icon => { + if (!icon.endsWith(".svg")) return; + let iconName = icon.toLowerCase().replace(".svg", ""); + + let text = fs.readFileSync(path.join(__dirname, "file-icons", "bytesize-icons", "dist", "icons", icon), {encoding: "utf8"}); + + let dimensions = text.match(/viewBox="0 0 (\d+) (\d+)"/); + let width = dimensions[1]; + let height = dimensions[2]; + + let svg = text.substr(text.indexOf(">")+1); + svg = svg.replace("", ""); + + if (width === null || height === null) console.log(icon); + + fileIconsObject[iconName] = { + width, + height, + svg + }; +}); +// Override with eDEX-specific icons +fileIconsObject.showDisks = { + width: 24, + height: 24, + svg: '' +}; +fileIconsObject.up = { + width: 24, + height: 24, + svg: '' +}; +fileIconsObject.dir = { + width: 24, + height: 24, + svg: '' +}; +fileIconsObject.symlink = { + width: 24, + height: 24, + svg: '' +}; +fileIconsObject.file = { + width: 24, + height: 24, + svg: '' +}; +fileIconsObject.other = { + width: 24, + height: 24, + svg: '' +}; +fileIconsObject.disk = { + width: 24, + height: 24, + svg: '' +}; +fileIconsObject.rom = { + width: 24, + height: 24, + svg: '' +}; +fileIconsObject.usb = { + width: 24, + height: 24, + svg: '' +}; +fileIconsObject.audio = fileIconsObject.volume; +// Write the file +fs.writeFileSync(path.join(__dirname, "src", "assets", "icons", "file-icons.json"), JSON.stringify(fileIconsObject, "", 4)); +console.log("Wrote file-icons.json"); + + +var fileIconsMatchScript = `/* + * Thanks everyone for pointing out this is probably on of the ugliest source code files on GitHub + * This is script-generated code, however, so it might disqualify + * See file-icons-generator.js at root dir of git tree +*/ +function matchIcon(filename) {\n`; + +// Parse the configuration file of file-icons/atom +let atomConfig = CSON.parse(fs.readFileSync(path.join(__dirname, "file-icons", "atom", "config.cson"), {encoding: "utf8"})); +Object.keys(atomConfig.directoryIcons).forEach(key => { + let config = atomConfig.directoryIcons[key]; + if (config.icon.startsWith("_")) config.icon = config.icon.substr(1); + if (Array.isArray(config.match)) { + config.match.forEach(key => { + let match = key[0]; + if (typeof match === "string") match = new RegExp(match.replace(/\./g, "\\.")+"$", "i"); // lgtm [js/incomplete-sanitization] + fileIconsMatchScript += ` if (${match}.test(filename)) { return "${config.icon}"; }\n`; + }); + } else { + if (typeof config.match === "string") config.match = new RegExp(config.match.replace(/\./g, "\\.")+"$", "i"); // lgtm [js/incomplete-sanitization] + fileIconsMatchScript += ` if (${config.match}.test(filename)) { return "${config.icon}"; }\n`; + + if (config.alias) { + if (typeof config.alias === "string") config.alias = new RegExp(config.alias.replace(/\./g, "\\.")+"$", "i"); // lgtm [js/incomplete-sanitization] + fileIconsMatchScript += ` if (${config.alias}.test(filename)) { return "${config.icon}"; }\n`; + } + } +}); +Object.keys(atomConfig.fileIcons).forEach(key => { + let config = atomConfig.fileIcons[key]; + if (config.icon.startsWith("_")) config.icon = config.icon.substr(1); + if (Array.isArray(config.match)) { + config.match.forEach(key => { + let match = key[0]; + if (typeof match === "string") match = new RegExp(match.replace(/\./g, "\\.")+"$", "i"); // lgtm [js/incomplete-sanitization] + fileIconsMatchScript += ` if (${match}.test(filename)) { return "${config.icon}"; }\n`; + }); + } else { + if (typeof config.match === "string") config.match = new RegExp(config.match.replace(/\./g, "\\.")+"$", "i"); // lgtm [js/incomplete-sanitization] + fileIconsMatchScript += ` if (${config.match}.test(filename)) { return "${config.icon}"; }\n`; + + if (config.alias) { + if (typeof config.alias === "string") config.alias = new RegExp(config.alias.replace(/\./g, "\\.")+"$", "i"); // lgtm [js/incomplete-sanitization] + fileIconsMatchScript += ` if (${config.alias}.test(filename)) { return "${config.icon}"; }\n`; + } + } +}); +// End script +fileIconsMatchScript += "}\nmodule.exports = matchIcon;"; +// Write the script +fs.writeFileSync(path.join(__dirname, "src", "assets", "misc", "file-icons-match.js"), fileIconsMatchScript); +console.log("Wrote file-icons-match.js"); diff --git a/file-icons/atom b/file-icons/atom new file mode 160000 index 000000000..189d1187d --- /dev/null +++ b/file-icons/atom @@ -0,0 +1 @@ +Subproject commit 189d1187d8ceeb4fcf41f6fed2249b9ca2d05c31 diff --git a/file-icons/bytesize-icons b/file-icons/bytesize-icons new file mode 160000 index 000000000..210d2f81c --- /dev/null +++ b/file-icons/bytesize-icons @@ -0,0 +1 @@ +Subproject commit 210d2f81c340c838053eed4c5a0385fbf2a033e9 diff --git a/file-icons/devopicons b/file-icons/devopicons new file mode 160000 index 000000000..2c2bf2bdb --- /dev/null +++ b/file-icons/devopicons @@ -0,0 +1 @@ +Subproject commit 2c2bf2bdb6507b8e4bfe695c1d54d639fbfed479 diff --git a/file-icons/font-awesome b/file-icons/font-awesome new file mode 160000 index 000000000..7cbd7f995 --- /dev/null +++ b/file-icons/font-awesome @@ -0,0 +1 @@ +Subproject commit 7cbd7f9951be31f9d06b6ac97739a700320b9130 diff --git a/file-icons/mfixx b/file-icons/mfixx new file mode 160000 index 000000000..9bc4e3734 --- /dev/null +++ b/file-icons/mfixx @@ -0,0 +1 @@ +Subproject commit 9bc4e3734898a07d3ff1b452f90446368d6baf12 diff --git a/file-icons/source b/file-icons/source new file mode 160000 index 000000000..e6e6e6ac8 --- /dev/null +++ b/file-icons/source @@ -0,0 +1 @@ +Subproject commit e6e6e6ac8cb1d91867167c228c00a667f4d47101 diff --git a/media/screenshot_blade.png b/media/screenshot_blade.png new file mode 100644 index 000000000..e0b8a5ed8 Binary files /dev/null and b/media/screenshot_blade.png differ diff --git a/media/screenshot_default.png b/media/screenshot_default.png index 6140e0cb6..3bc94dd07 100644 Binary files a/media/screenshot_default.png and b/media/screenshot_default.png differ diff --git a/media/screenshot_disrupted.png b/media/screenshot_disrupted.png index 4a26059b4..750e574b8 100644 Binary files a/media/screenshot_disrupted.png and b/media/screenshot_disrupted.png differ diff --git a/media/screenshot_horizon.png b/media/screenshot_horizon.png new file mode 100644 index 000000000..b3dae47cb Binary files /dev/null and b/media/screenshot_horizon.png differ diff --git a/media/screenshot_nord.png b/media/screenshot_nord.png deleted file mode 100644 index 26d5605ae..000000000 Binary files a/media/screenshot_nord.png and /dev/null differ diff --git a/media/sponsor-uidev-bytes.jpg b/media/sponsor-uidev-bytes.jpg new file mode 100644 index 000000000..aaa279857 Binary files /dev/null and b/media/sponsor-uidev-bytes.jpg differ diff --git a/media/youtube-demo-teaser.gif b/media/youtube-demo-teaser.gif new file mode 100644 index 000000000..346677faa Binary files /dev/null and b/media/youtube-demo-teaser.gif differ diff --git a/package-lock.json b/package-lock.json index af7356b2a..5fb6a76a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,182 +1,4682 @@ { "name": "edex-ui", - "version": "2.0.0-pre", - "lockfileVersion": 1, + "version": "2.2.8", + "lockfileVersion": 2, "requires": true, - "dependencies": { - "7zip-bin": { + "packages": { + "": { + "name": "edex-ui", + "version": "2.2.8", + "license": "GPL-3.0", + "dependencies": { + "clean-css": "5.2.1", + "electron": "^12.1.0", + "electron-builder": "^22.14.5", + "electron-rebuild": "^2.3.5", + "mime-types": "^2.1.33", + "node-abi": "2.30.1", + "node-json-minify": "1.0.0", + "terser": "^5.9.0" + }, + "optionalDependencies": { + "cson-parser": "4.0.9" + } + }, + "node_modules/@develar/schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", + "dependencies": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@electron/get": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.2.tgz", + "integrity": "sha512-vAuHUbfvBQpYTJ5wB7uVIDq5c/Ry0fiTBMs7lnEYAo/qXXppIVcWdfBr57u6eRnKdVso7KSiH6p/LbQAG6Izrg==", + "dependencies": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "got": "^9.6.0", + "progress": "^2.0.3", + "sanitize-filename": "^1.6.2", + "sumchecker": "^3.0.1" + }, + "engines": { + "node": ">=8.6" + }, + "optionalDependencies": { + "global-agent": "^2.0.2", + "global-tunnel-ng": "^2.7.1" + } + }, + "node_modules/@electron/universal": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.0.5.tgz", + "integrity": "sha512-zX9O6+jr2NMyAdSkwEUlyltiI4/EBLu2Ls/VD3pUQdi3cAYeYfdQnT2AJJ38HE4QxLccbU13LSpccw1IWlkyag==", + "dependencies": { + "@malept/cross-spawn-promise": "^1.1.0", + "asar": "^3.0.3", + "debug": "^4.3.1", + "dir-compare": "^2.4.0", + "fs-extra": "^9.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/@electron/universal/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/universal/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@electron/universal/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@malept/flatpak-bundler": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", + "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.0", + "lodash": "^4.17.15", + "tmp-promise": "^3.0.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@malept/flatpak-bundler/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@malept/flatpak-bundler/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@malept/flatpak-bundler/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.1.tgz", + "integrity": "sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ==", + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "*", + "@types/node": "*", + "@types/responselike": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/fs-extra": { + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", + "optional": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz", + "integrity": "sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==" + }, + "node_modules/@types/keyv": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.1.tgz", + "integrity": "sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "optional": true + }, + "node_modules/@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" + }, + "node_modules/@types/node": { + "version": "14.17.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.1.tgz", + "integrity": "sha512-/tpUyFD7meeooTRwl3sYlihx2BrJE7q9XF71EguPFIySj9B7qgnRtHsHTho+0AUm4m1SvWGm6uSncrR94q6Vtw==" + }, + "node_modules/@types/plist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.2.tgz", + "integrity": "sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw==", + "optional": true, + "dependencies": { + "@types/node": "*", + "xmlbuilder": ">=11.0.1" + } + }, + "node_modules/@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/verror": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.5.tgz", + "integrity": "sha512-9UjMCHK5GPgQRoNbqdLIAvAy0EInuiqbW0PBMtVP6B5B2HQJlvoJHM+KodPZMEjOa5VkSc+5LH7xy+cUzQdmHw==", + "optional": true + }, + "node_modules/@types/yargs": { + "version": "17.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.4.tgz", + "integrity": "sha512-D/wihO9WFYqwsmJI0e0qS+U09wIQtYRSBJlXWjTFGjouEuOCy0BU4N/ZK5utb00S5lW/9LO7vOpvGDd8M06NvQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==" + }, + "node_modules/7zip-bin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz", + "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==" + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "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" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/app-builder-bin": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.7.1.tgz", + "integrity": "sha512-ql93vEUq6WsstGXD+SBLSIQw6SNnhbDEM0swzgugytMxLp3rT24Ag/jcC80ZHxiPRTdew1niuR7P3/FCrDqIjw==" + }, + "node_modules/app-builder-lib": { + "version": "22.14.5", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.14.5.tgz", + "integrity": "sha512-k3VwKP4kpsnUaXoUkm1s4zaSHPHIMFnN4kPMU9yXaKmE1LfHHqBaEah5bXeTAX5V/BC41wFdg8CF5vOjvgy8Rg==", + "dependencies": { + "@develar/schema-utils": "~2.6.5", + "@electron/universal": "1.0.5", + "@malept/flatpak-bundler": "^0.4.0", + "7zip-bin": "~5.1.1", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.9", + "builder-util": "22.14.5", + "builder-util-runtime": "8.9.1", + "chromium-pickle-js": "^0.2.0", + "debug": "^4.3.2", + "ejs": "^3.1.6", + "electron-osx-sign": "^0.5.0", + "electron-publish": "22.14.5", + "form-data": "^4.0.0", + "fs-extra": "^10.0.0", + "hosted-git-info": "^4.0.2", + "is-ci": "^3.0.0", + "isbinaryfile": "^4.0.8", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "minimatch": "^3.0.4", + "read-config-file": "6.2.0", + "sanitize-filename": "^1.6.3", + "semver": "^7.3.5", + "temp-file": "^3.4.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/app-builder-lib/node_modules/ci-info": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" + }, + "node_modules/app-builder-lib/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/app-builder-lib/node_modules/fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/app-builder-lib/node_modules/is-ci": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", + "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dependencies": { + "ci-info": "^3.1.1" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/app-builder-lib/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/app-builder-lib/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "node_modules/are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "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==" + }, + "node_modules/asar": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/asar/-/asar-3.1.0.tgz", + "integrity": "sha512-vyxPxP5arcAqN4F/ebHd/HhwnAiZtwhglvdmc7BR2f0ywbVNTOpSeyhLDbGXtE/y58hv1oC75TaNIXutnsOZsQ==", + "dependencies": { + "chromium-pickle-js": "^0.2.0", + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + }, + "bin": { + "asar": "bin/asar.js" + }, + "engines": { + "node": ">=10.12.0" + }, + "optionalDependencies": { + "@types/glob": "^7.1.1" + } + }, + "node_modules/asar/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + }, + "node_modules/async-exit-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "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/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bl": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-4.1.0.tgz", - "integrity": "sha512-AsnBZN3a8/JcNt+KPkGGODaA4c7l3W5+WpeKgGSbstSLxqWtTXqd1ieJGBQ8IFCtRg8DmmKUcSkIkUc0A4p3YA==" + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "node_modules/bluebird-lst": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz", + "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==", + "dependencies": { + "bluebird": "^3.5.5" + } + }, + "node_modules/boolean": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.0.2.tgz", + "integrity": "sha512-RwywHlpCRc3/Wh81MiCKun4ydaIFyW5Ea6JbL6sRCVx5q5irDw7pMXBUFYF/jArQ6YrG36q0kpovc9P/Kd3I4g==", + "optional": true + }, + "node_modules/boxen": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.0.0.tgz", + "integrity": "sha512-5bvsqw+hhgUi3oYGK0Vf4WpIkyemp60WBInn7+WNfoISzAqk/HX4L7WNROq38E6UR/y3YADpv6pEm4BfkeEAdA==", + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.0", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "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": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "node_modules/builder-util": { + "version": "22.14.5", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.14.5.tgz", + "integrity": "sha512-zqIHDFJwmA7jV7SC9aI+33MWwT2mWoijH+Ol9IntNAwuuRXoS+7XeJwnhLBXOhcDBzXT4kDzHnRk4JKeaygEYA==", + "dependencies": { + "@types/debug": "^4.1.6", + "@types/fs-extra": "^9.0.11", + "7zip-bin": "~5.1.1", + "app-builder-bin": "3.7.1", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "8.9.1", + "chalk": "^4.1.1", + "cross-spawn": "^7.0.3", + "debug": "^4.3.2", + "fs-extra": "^10.0.0", + "is-ci": "^3.0.0", + "js-yaml": "^4.1.0", + "source-map-support": "^0.5.19", + "stat-mode": "^1.0.0", + "temp-file": "^3.4.0" + } + }, + "node_modules/builder-util-runtime": { + "version": "8.9.1", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.9.1.tgz", + "integrity": "sha512-c8a8J3wK6BIVLW7ls+7TRK9igspTbzWmUqxFbgK0m40Ggm6efUbxtWVCGIjc+dtchyr5qAMAUL6iEGRdS/6vwg==", + "dependencies": { + "debug": "^4.3.2", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/builder-util/node_modules/ci-info": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" + }, + "node_modules/builder-util/node_modules/fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/builder-util/node_modules/is-ci": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", + "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dependencies": { + "ci-info": "^3.1.1" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/builder-util/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/builder-util/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "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/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/chromium-pickle-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=" + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/clean-css": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.1.tgz", + "integrity": "sha512-ooQCa1/70oRfVdUUGjKpbHuxgMgm8BsDT5EBqBGvPxMoRoGXf4PNx5mMnkjzJ9Ptx4vvmDdha0QVh86QtYIk1g==", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz", + "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz", + "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", + "optional": true, + "dependencies": { + "slice-ansi": "^1.0.0", + "string-width": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "optional": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dependencies": { + "mimic-response": "^1.0.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/coffeescript": { + "version": "1.12.7", + "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.12.7.tgz", + "integrity": "sha512-pLXHFxQMPklVoEekowk8b3erNynC+DVJzChxS/LCBBgR6/8AJkHivkm//zbowcfc7BTCAjryuhx6gPqPRfsFoA==", + "optional": true, + "bin": { + "cake": "bin/cake", + "coffee": "bin/coffee" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/compare-version": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", + "integrity": "sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "optional": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dependencies": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "node_modules/core-js": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.1.tgz", + "integrity": "sha512-9Id2xHY1W7m8hCl8NkhQn5CufmF/WuR30BTRewvCXc1aZd3kMECwNZ69ndLbekKfakw9Rf2Xyc+QR6E7Gg+obg==", + "optional": true + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "node_modules/crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "optional": true, + "dependencies": { + "buffer": "^5.1.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/cson-parser": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/cson-parser/-/cson-parser-4.0.9.tgz", + "integrity": "sha512-I79SAcCYquWnEfXYj8hBqOOWKj6eH6zX1hhX3yqmS4K3bYp7jME3UFpHPzu3rUew0oyfc0s8T6IlWGXRAheHag==", + "optional": true, + "dependencies": { + "coffeescript": "1.12.7" + }, + "engines": { + "node": ">=10.13" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "optional": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "optional": true + }, + "node_modules/dir-compare": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz", + "integrity": "sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA==", + "dependencies": { + "buffer-equal": "1.0.0", + "colors": "1.0.3", + "commander": "2.9.0", + "minimatch": "3.0.4" + }, + "bin": { + "dircompare": "src/cli/dircompare.js" + } + }, + "node_modules/dir-compare/node_modules/colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/dir-compare/node_modules/commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dependencies": { + "graceful-readlink": ">= 1.0.0" + }, + "engines": { + "node": ">= 0.6.x" + } + }, + "node_modules/dmg-builder": { + "version": "22.14.5", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.14.5.tgz", + "integrity": "sha512-1GvFGQE332bvPamcMwZDqWqfWfJTyyDLOsHMcGi0zs+Jh7JOn6/zuBkHJIWHdsj2QJbhzLVyd2/ZqttOKv7I8w==", + "dependencies": { + "app-builder-lib": "22.14.5", + "builder-util": "22.14.5", + "builder-util-runtime": "8.9.1", + "fs-extra": "^10.0.0", + "iconv-lite": "^0.6.2", + "js-yaml": "^4.1.0" + }, + "optionalDependencies": { + "dmg-license": "^1.0.9" + } + }, + "node_modules/dmg-builder/node_modules/fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dmg-builder/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/dmg-builder/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/dmg-license": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.9.tgz", + "integrity": "sha512-Rq6qMDaDou2+aPN2SYy0x7LDznoJ/XaG6oDcH5wXUp+WRWQMUYE6eM+F+nex+/LSXOp1uw4HLFoed0YbfU8R/Q==", + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "@types/plist": "^3.0.1", + "@types/verror": "^1.10.3", + "ajv": "^6.10.0", + "cli-truncate": "^1.1.0", + "crc": "^3.8.0", + "iconv-corefoundation": "^1.1.6", + "plist": "^3.0.1", + "smart-buffer": "^4.0.2", + "verror": "^1.10.0" + }, + "bin": { + "dmg-license": "bin/dmg-license.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", + "integrity": "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" + }, + "node_modules/duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ejs": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", + "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", + "dependencies": { + "jake": "^10.6.1" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron": { + "version": "12.2.2", + "resolved": "https://registry.npmjs.org/electron/-/electron-12.2.2.tgz", + "integrity": "sha512-Oma/nIfvgql9JjAxdB9gQk//qxpJaI6PgMocYMiW4kFyLi+8jS6oGn33QG3FESS//cw09KRnWmA9iutuFAuXtw==", + "hasInstallScript": true, + "dependencies": { + "@electron/get": "^1.0.1", + "@types/node": "^14.6.2", + "extract-zip": "^1.0.3" + }, + "bin": { + "electron": "cli.js" + }, + "engines": { + "node": ">= 8.6" + } + }, + "node_modules/electron-builder": { + "version": "22.14.5", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.14.5.tgz", + "integrity": "sha512-N73hSbXFz6Mz5Z6h6C5ly6CB+dUN6k1LuCDJjI8VF47bMXv/QE0HE+Kkb0GPKqTqM7Hsk/yIYX+kHCfSkR5FGg==", + "dependencies": { + "@types/yargs": "^17.0.1", + "app-builder-lib": "22.14.5", + "builder-util": "22.14.5", + "builder-util-runtime": "8.9.1", + "chalk": "^4.1.1", + "dmg-builder": "22.14.5", + "fs-extra": "^10.0.0", + "is-ci": "^3.0.0", + "lazy-val": "^1.0.5", + "read-config-file": "6.2.0", + "update-notifier": "^5.1.0", + "yargs": "^17.0.1" + }, + "bin": { + "electron-builder": "cli.js", + "install-app-deps": "install-app-deps.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/electron-builder/node_modules/ci-info": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" + }, + "node_modules/electron-builder/node_modules/fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-builder/node_modules/is-ci": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", + "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "dependencies": { + "ci-info": "^3.1.1" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/electron-builder/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-builder/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-builder/node_modules/yargs": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.0.1.tgz", + "integrity": "sha512-xBBulfCc8Y6gLFcrPvtqKz9hz8SO0l1Ni8GgDekvBX2ro0HRQImDGnikfc33cgzcYUSncapnNcZDjVFIH3f6KQ==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-osx-sign": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.5.0.tgz", + "integrity": "sha512-icoRLHzFz/qxzDh/N4Pi2z4yVHurlsCAYQvsCSG7fCedJ4UJXBS6PoQyGH71IfcqKupcKeK7HX/NkyfG+v6vlQ==", + "dependencies": { + "bluebird": "^3.5.0", + "compare-version": "^0.1.2", + "debug": "^2.6.8", + "isbinaryfile": "^3.0.2", + "minimist": "^1.2.0", + "plist": "^3.0.1" + }, + "bin": { + "electron-osx-flat": "bin/electron-osx-flat.js", + "electron-osx-sign": "bin/electron-osx-sign.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/electron-osx-sign/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/electron-osx-sign/node_modules/isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dependencies": { + "buffer-alloc": "^1.2.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/electron-osx-sign/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/electron-publish": { + "version": "22.14.5", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.14.5.tgz", + "integrity": "sha512-h+NANRdaA0PqGF15GKvorseWPzh1PXa/zx4I37//PIokW8eKIov8ky23foUSb55ZFWUHGpxQJux7y2NCfBtQeg==", + "dependencies": { + "@types/fs-extra": "^9.0.11", + "builder-util": "22.14.5", + "builder-util-runtime": "8.9.1", + "chalk": "^4.1.1", + "fs-extra": "^10.0.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.2" + } + }, + "node_modules/electron-publish/node_modules/fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-publish/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-publish/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-rebuild": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/electron-rebuild/-/electron-rebuild-2.3.5.tgz", + "integrity": "sha512-1sQ1DRtQGpglFhc3urD4olMJzt/wxlbnAAsf+WY2xHf5c50ZovivZvCXSpVgTOP9f4TzOMvelWyspyfhxQKHzQ==", + "dependencies": { + "@malept/cross-spawn-promise": "^1.1.1", + "colors": "^1.3.3", + "debug": "^4.1.1", + "detect-libc": "^1.0.3", + "fs-extra": "^9.0.1", + "got": "^11.7.0", + "lzma-native": "^6.0.1", + "node-abi": "^2.19.2", + "node-gyp": "^7.1.0", + "ora": "^5.1.0", + "tar": "^6.0.5", + "yargs": "^16.0.0" + }, + "bin": { + "electron-rebuild": "lib/src/cli.js" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/electron-rebuild/node_modules/@sindresorhus/is": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.0.tgz", + "integrity": "sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/electron-rebuild/node_modules/@szmarczak/http-timer": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz", + "integrity": "sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==", + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-rebuild/node_modules/cacheable-request": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.1.tgz", + "integrity": "sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw==", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-rebuild/node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/electron-rebuild/node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-rebuild/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-rebuild/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/electron-rebuild/node_modules/got": { + "version": "11.8.2", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.2.tgz", + "integrity": "sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ==", + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.1", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/electron-rebuild/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==" + }, + "node_modules/electron-rebuild/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-rebuild/node_modules/keyv": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz", + "integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/electron-rebuild/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-rebuild/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/electron-rebuild/node_modules/p-cancelable": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz", + "integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-rebuild/node_modules/responselike": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", + "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", + "dependencies": { + "lowercase-keys": "^2.0.0" + } + }, + "node_modules/electron-rebuild/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "optional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", + "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "optional": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "engines": { + "node": ">=8" + } + }, + "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==", + "optional": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "dependencies": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + } + }, + "node_modules/extract-zip/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/extract-zip/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "engines": [ + "node >=0.6.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==" + }, + "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==" + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/filelist": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", + "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/gauge/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/global-agent": { + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.1.12.tgz", + "integrity": "sha512-caAljRMS/qcDo69X9BfkgrihGUgGx44Fb4QQToNQjsiWh+YlQ66uqYVAdA8Olqit+5Ng0nkz09je3ZzANMZcjg==", + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "core-js": "^3.6.5", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/global-dirs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/global-tunnel-ng": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", + "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==", + "optional": true, + "dependencies": { + "encodeurl": "^1.0.2", + "lodash": "^4.17.10", + "npm-conf": "^1.1.3", + "tunnel": "^0.0.6" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/globalthis": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.1.tgz", + "integrity": "sha512-mJPRTc/P39NH/iNG4mXa9aIhNymaQikTrnspeCa2ZuJ+mH2QN/rXwtX3XwKrHqWgUQFbNZKtHM105aHzJalElw==", + "optional": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "node_modules/graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, + "node_modules/has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/iconv-corefoundation": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.6.tgz", + "integrity": "sha512-1NBe55C75bKGZaY9UHxvXG3G0gEp0ziht7quhuFrW3SPgZDw9HI6qvYXRSV5M/Eupyu8ljuJ6Cba+ec15PZ4Xw==", + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "cli-truncate": "^1.1.0", + "node-addon-api": "^1.6.3" + }, + "engines": { + "node": "^8.11.2 || >=10" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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/ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "engines": { + "node": ">=4" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "node_modules/is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/isbinaryfile": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.8.tgz", + "integrity": "sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w==", + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "node_modules/jake": { + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", + "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", + "dependencies": { + "async": "0.9.x", + "chalk": "^2.4.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jake/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jake/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jake/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/jake/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/jake/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/jake/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/jake/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "node_modules/json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "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==" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dependencies": { + "package-json": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lazy-val": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", + "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==" + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "dependencies": { + "chalk": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lzma-native": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/lzma-native/-/lzma-native-6.0.1.tgz", + "integrity": "sha512-O6oWF0xe1AFvOCjU8uOZBZ/lhjaMNwHfVNaqVMqmoQXlRwBcFWpCAToiZOdXcKVMdo/5s/D0a2QgA5laMErxHQ==", + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^1.6.0", + "node-pre-gyp": "^0.11.0", + "readable-stream": "^2.3.5", + "rimraf": "^2.7.1" + }, + "bin": { + "lzmajs": "bin/lzmajs" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "optional": true, + "dependencies": { + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", + "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.33", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", + "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", + "dependencies": { + "mime-db": "1.50.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "node_modules/minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/needle": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz", + "integrity": "sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==", + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/needle/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-abi": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz", + "integrity": "sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==", + "dependencies": { + "semver": "^5.4.1" + } + }, + "node_modules/node-abi/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==" + }, + "node_modules/node-gyp": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", + "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/node-gyp/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-json-minify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-json-minify/-/node-json-minify-1.0.0.tgz", + "integrity": "sha1-e7NDL5ZYtr6x2ZP9XVOzyinQ15w=" + }, + "node_modules/node-pre-gyp": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", + "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==", + "deprecated": "Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future", + "dependencies": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/node-pre-gyp/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/node-pre-gyp/node_modules/fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dependencies": { + "minipass": "^2.6.0" + } + }, + "node_modules/node-pre-gyp/node_modules/minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/node-pre-gyp/node_modules/minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dependencies": { + "minipass": "^2.9.0" + } + }, + "node_modules/node-pre-gyp/node_modules/nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "dependencies": { + "abbrev": "1", + "osenv": "^0.1.4" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/node-pre-gyp/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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/node-pre-gyp/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/node-pre-gyp/node_modules/tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "dependencies": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/node-pre-gyp/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-bundled": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "optional": true, + "dependencies": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + }, + "node_modules/npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "dependencies": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "optional": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "dependencies": { + "bl": "^4.0.3", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dependencies": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/plist": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.4.tgz", + "integrity": "sha512-ksrr8y9+nXOxQB2osVNqrgvX/XQPOXaU4BQMKjYq8PvaY1U18mo+fKgBSwzK+luSyinOuPae956lSVcBwxlAMg==", + "dependencies": { + "base64-js": "^1.5.1", + "xmlbuilder": "^9.0.7" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/plist/node_modules/xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "engines": { + "node": ">=4" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "optional": true + }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "dependencies": { + "escape-goat": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/read-config-file": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.2.0.tgz", + "integrity": "sha512-gx7Pgr5I56JtYz+WuqEbQHj/xWo+5Vwua2jhb1VwM4Wid5PqYmZ4i00ZB0YEGIfkVBsCv9UrjgyqCiQfS/Oosg==", + "dependencies": { + "dotenv": "^9.0.2", + "dotenv-expand": "^5.1.0", + "js-yaml": "^4.1.0", + "json5": "^2.2.0", + "lazy-val": "^1.0.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/registry-auth-token": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-alpn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.0.0.tgz", + "integrity": "sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA==" + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dependencies": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "optional": true + }, + "node_modules/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dependencies": { + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semver-diff/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "optional": true, + "dependencies": { + "type-fest": "^0.13.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "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==", + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + }, + "node_modules/slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "optional": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "optional": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.20", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", + "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "optional": true + }, + "node_modules/sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stat-mode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", + "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/string-width/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "dependencies": { + "debug": "^4.1.0" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar": { + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/temp-file": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", + "integrity": "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==", + "dependencies": { + "async-exit-hook": "^2.0.1", + "fs-extra": "^10.0.0" + } + }, + "node_modules/temp-file/node_modules/fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/temp-file/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/temp-file/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/terser": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", + "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/tmp-promise": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.2.tgz", + "integrity": "sha512-OyCLAKU1HzBjL6Ev3gxUeraJNlbNingmi8IrHHEsYH8LTmEuhvYfqvhn2F/je+mjf4N58UmZ96OMEy1JanSCpA==", + "dependencies": { + "tmp": "^0.2.0" + } + }, + "node_modules/tmp/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", + "dependencies": { + "utf8-byte-length": "^1.0.1" + } + }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "optional": true, + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } }, - "@snyk/dep-graph": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@snyk/dep-graph/-/dep-graph-1.1.2.tgz", - "integrity": "sha512-mCoAFKtmezBL61JOzLMzqqd/sXXxp0iektEwf4zw+sM3zuG4Tnmhf8OqNO6Wscn84bMIfLlI/nvECdxvSS7MTw==", - "requires": { - "graphlib": "^2.1.5", - "lodash": "^4", - "source-map-support": "^0.5.9", - "tslib": "^1.9.3" + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" } }, - "@snyk/gemfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@snyk/gemfile/-/gemfile-1.1.0.tgz", - "integrity": "sha512-mLwF+ccuvRZMS0SxUAxA3dAp8mB3m2FxIsBIUWFTYvzxl+E4XTZb8uFrUqXHbcxhZH1Z8taHohNTbzXZn3M8ag==" + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, - "@types/node": { - "version": "10.12.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", - "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==" + "node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "optional": true, + "engines": { + "node": ">=10" + } }, - "@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==" + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dependencies": { + "is-typedarray": "^1.0.0" + } }, - "agent-base": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", - "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", - "requires": { - "es6-promisify": "^5.0.0" + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" } }, - "ajv-keywords": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", - "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=" + "node_modules/update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "dependencies": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } }, - "ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "node_modules/uri-js": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/wide-align/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "optional": true, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/y18n": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + }, + "dependencies": { + "@develar/schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", "requires": { - "string-width": "^2.0.0" + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + } + }, + "@electron/get": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.2.tgz", + "integrity": "sha512-vAuHUbfvBQpYTJ5wB7uVIDq5c/Ry0fiTBMs7lnEYAo/qXXppIVcWdfBr57u6eRnKdVso7KSiH6p/LbQAG6Izrg==", + "requires": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "global-agent": "^2.0.2", + "global-tunnel-ng": "^2.7.1", + "got": "^9.6.0", + "progress": "^2.0.3", + "sanitize-filename": "^1.6.2", + "sumchecker": "^3.0.1" + } + }, + "@electron/universal": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.0.5.tgz", + "integrity": "sha512-zX9O6+jr2NMyAdSkwEUlyltiI4/EBLu2Ls/VD3pUQdi3cAYeYfdQnT2AJJ38HE4QxLccbU13LSpccw1IWlkyag==", + "requires": { + "@malept/cross-spawn-promise": "^1.1.0", + "asar": "^3.0.3", + "debug": "^4.3.1", + "dir-compare": "^2.4.0", + "fs-extra": "^9.0.1" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + } + } + }, + "@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "requires": { + "cross-spawn": "^7.0.1" + } + }, + "@malept/flatpak-bundler": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", + "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", + "requires": { + "debug": "^4.1.1", + "fs-extra": "^9.0.0", + "lodash": "^4.17.15", + "tmp-promise": "^3.0.2" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "requires": { - "ansi-regex": "^3.0.0" + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" } } }, - "ansi-escapes": { - "version": "3.1.0", - "resolved": "http://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", - "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==" + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@types/cacheable-request": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.1.tgz", + "integrity": "sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ==", + "requires": { + "@types/http-cache-semantics": "*", + "@types/keyv": "*", + "@types/node": "*", + "@types/responselike": "*" + } + }, + "@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "requires": { + "@types/ms": "*" + } + }, + "@types/fs-extra": { + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "requires": { + "@types/node": "*" + } + }, + "@types/glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", + "optional": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/http-cache-semantics": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz", + "integrity": "sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==" + }, + "@types/keyv": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.1.tgz", + "integrity": "sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw==", + "requires": { + "@types/node": "*" + } + }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "optional": true + }, + "@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" + }, + "@types/node": { + "version": "14.17.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.1.tgz", + "integrity": "sha512-/tpUyFD7meeooTRwl3sYlihx2BrJE7q9XF71EguPFIySj9B7qgnRtHsHTho+0AUm4m1SvWGm6uSncrR94q6Vtw==" + }, + "@types/plist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.2.tgz", + "integrity": "sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw==", + "optional": true, + "requires": { + "@types/node": "*", + "xmlbuilder": ">=11.0.1" + } + }, + "@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "requires": { + "@types/node": "*" + } + }, + "@types/verror": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.5.tgz", + "integrity": "sha512-9UjMCHK5GPgQRoNbqdLIAvAy0EInuiqbW0PBMtVP6B5B2HQJlvoJHM+KodPZMEjOa5VkSc+5LH7xy+cUzQdmHw==", + "optional": true + }, + "@types/yargs": { + "version": "17.0.4", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.4.tgz", + "integrity": "sha512-D/wihO9WFYqwsmJI0e0qS+U09wIQtYRSBJlXWjTFGjouEuOCy0BU4N/ZK5utb00S5lW/9LO7vOpvGDd8M06NvQ==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", + "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==" + }, + "7zip-bin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz", + "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==" + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "requires": {} + }, + "ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "requires": { + "string-width": "^4.1.0" + } }, "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" } }, - "ansicolors": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", - "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=" - }, "app-builder-bin": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-2.6.1.tgz", - "integrity": "sha512-W0l85O+s6lOaziWqAhszPfwiG0s15FvMBP9j9i/bknsMccUkwN60u4Cy7yYtf6akCUDuJenLqpTX4/xvkq1egw==" + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.7.1.tgz", + "integrity": "sha512-ql93vEUq6WsstGXD+SBLSIQw6SNnhbDEM0swzgugytMxLp3rT24Ag/jcC80ZHxiPRTdew1niuR7P3/FCrDqIjw==" }, "app-builder-lib": { - "version": "20.38.4", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-20.38.4.tgz", - "integrity": "sha512-JbuAJQBndcCW6BJVIb2tPjM5wiuIjz2LUlbyVxNIawM2wFKUBV9kr0N3RNBJFxcrCEuA9oprMUCoymJdrMUVfA==", - "requires": { - "7zip-bin": "~4.1.0", - "app-builder-bin": "2.6.1", + "version": "22.14.5", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.14.5.tgz", + "integrity": "sha512-k3VwKP4kpsnUaXoUkm1s4zaSHPHIMFnN4kPMU9yXaKmE1LfHHqBaEah5bXeTAX5V/BC41wFdg8CF5vOjvgy8Rg==", + "requires": { + "@develar/schema-utils": "~2.6.5", + "@electron/universal": "1.0.5", + "@malept/flatpak-bundler": "^0.4.0", + "7zip-bin": "~5.1.1", "async-exit-hook": "^2.0.1", - "bluebird-lst": "^1.0.6", - "builder-util": "9.6.1", - "builder-util-runtime": "8.1.0", + "bluebird-lst": "^1.0.9", + "builder-util": "22.14.5", + "builder-util-runtime": "8.9.1", "chromium-pickle-js": "^0.2.0", - "debug": "^4.1.0", - "ejs": "^2.6.1", - "electron-osx-sign": "0.4.11", - "electron-publish": "20.38.3", - "fs-extra-p": "^7.0.0", - "hosted-git-info": "^2.7.1", - "is-ci": "^2.0.0", - "isbinaryfile": "^3.0.3", - "js-yaml": "^3.12.0", - "lazy-val": "^1.0.3", + "debug": "^4.3.2", + "ejs": "^3.1.6", + "electron-osx-sign": "^0.5.0", + "electron-publish": "22.14.5", + "form-data": "^4.0.0", + "fs-extra": "^10.0.0", + "hosted-git-info": "^4.0.2", + "is-ci": "^3.0.0", + "isbinaryfile": "^4.0.8", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", "minimatch": "^3.0.4", - "normalize-package-data": "^2.4.0", - "plist": "^3.0.1", - "read-config-file": "3.2.0", - "sanitize-filename": "^1.6.1", - "semver": "^5.6.0", - "temp-file": "^3.3.2" + "read-config-file": "6.2.0", + "sanitize-filename": "^1.6.3", + "semver": "^7.3.5", + "temp-file": "^3.4.0" }, "dependencies": { - "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "ci-info": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "requires": { - "ms": "^2.1.1" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" } }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } }, - "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" + "is-ci": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", + "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "requires": { + "ci-info": "^3.1.1" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" } } }, @@ -185,11 +4685,6 @@ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" - }, "are-we-there-yet": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", @@ -197,74 +4692,49 @@ "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "asar": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/asar/-/asar-3.1.0.tgz", + "integrity": "sha512-vyxPxP5arcAqN4F/ebHd/HhwnAiZtwhglvdmc7BR2f0ywbVNTOpSeyhLDbGXtE/y58hv1oC75TaNIXutnsOZsQ==", "requires": { - "sprintf-js": "~1.0.2" + "@types/glob": "^7.1.1", + "chromium-pickle-js": "^0.2.0", + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + }, + "dependencies": { + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" + } } }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" - }, "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } }, "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, - "ast-types": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.7.tgz", - "integrity": "sha512-2mP3TwtkY/aTv5X3ZsMpNAbOnyoC/aMJwJSoaELPkHId0nSQgFcnU4dRW3isxiz7+zBexk0ym3WNVjMiQBnJSw==" - }, "async": { - "version": "1.5.2", - "resolved": "http://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" }, "async-exit-hook": { "version": "2.0.1", @@ -276,15 +4746,20 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" + }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", - "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==" + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, "balanced-match": { "version": "1.0.0", @@ -292,85 +4767,78 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "optional": true, "requires": { "tweetnacl": "^0.14.3" } }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "requires": { - "inherits": "~2.0.0" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, "bluebird": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", - "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==" + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "bluebird-lst": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.6.tgz", - "integrity": "sha512-CBWFoPuUPpcvMUxfyr8DKdI5d4kjxFl1h39+VbKxP3KJWJHEsLtuT4pPLkjpxCGU6Ask21tvbnftWXdqIxYldQ==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz", + "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==", "requires": { - "bluebird": "^3.5.2" + "bluebird": "^3.5.5" } }, + "boolean": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.0.2.tgz", + "integrity": "sha512-RwywHlpCRc3/Wh81MiCKun4ydaIFyW5Ea6JbL6sRCVx5q5irDw7pMXBUFYF/jArQ6YrG36q0kpovc9P/Kd3I4g==", + "optional": true + }, "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", - "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.0.0.tgz", + "integrity": "sha512-5bvsqw+hhgUi3oYGK0Vf4WpIkyemp60WBInn7+WNfoISzAqk/HX4L7WNROq38E6UR/y3YADpv6pEm4BfkeEAdA==", + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.0", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" } } }, @@ -383,6 +4851,15 @@ "concat-map": "0.0.1" } }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "buffer-alloc": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", @@ -397,104 +4874,134 @@ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=" + }, "buffer-fill": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" }, "buffer-from": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", - "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, "builder-util": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-9.6.1.tgz", - "integrity": "sha512-8MljKTjeV+A+LLVexuWEV3EpWbiUcsHHrB4Bg2qNo/3dC+vTo6g/27+W3Ij7Ij1UTobSkNBstFieWijXJCco9A==", - "requires": { - "7zip-bin": "~4.1.0", - "app-builder-bin": "2.6.1", - "bluebird-lst": "^1.0.6", - "builder-util-runtime": "^8.1.0", - "chalk": "^2.4.1", - "debug": "^4.1.0", - "fs-extra-p": "^7.0.0", - "is-ci": "^2.0.0", - "js-yaml": "^3.12.0", - "source-map-support": "^0.5.9", - "stat-mode": "^0.2.2", - "temp-file": "^3.3.2" + "version": "22.14.5", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.14.5.tgz", + "integrity": "sha512-zqIHDFJwmA7jV7SC9aI+33MWwT2mWoijH+Ol9IntNAwuuRXoS+7XeJwnhLBXOhcDBzXT4kDzHnRk4JKeaygEYA==", + "requires": { + "@types/debug": "^4.1.6", + "@types/fs-extra": "^9.0.11", + "7zip-bin": "~5.1.1", + "app-builder-bin": "3.7.1", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "8.9.1", + "chalk": "^4.1.1", + "cross-spawn": "^7.0.3", + "debug": "^4.3.2", + "fs-extra": "^10.0.0", + "is-ci": "^3.0.0", + "js-yaml": "^4.1.0", + "source-map-support": "^0.5.19", + "stat-mode": "^1.0.0", + "temp-file": "^3.4.0" }, "dependencies": { - "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "ci-info": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" + }, + "fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", "requires": { - "ms": "^2.1.1" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "is-ci": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", + "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "requires": { + "ci-info": "^3.1.1" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" } } }, "builder-util-runtime": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.1.0.tgz", - "integrity": "sha512-s1mlJ28mv+56Iebh6c9aXjVe11O3Z0cDTwAGeB0PCcUzHA37fDxGgS8ZGoYNMZP+rBHj21d/od1wuYofTVLaQg==", + "version": "8.9.1", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.9.1.tgz", + "integrity": "sha512-c8a8J3wK6BIVLW7ls+7TRK9igspTbzWmUqxFbgK0m40Ggm6efUbxtWVCGIjc+dtchyr5qAMAUL6iEGRdS/6vwg==", "requires": { - "bluebird-lst": "^1.0.6", - "debug": "^4.1.0", - "fs-extra-p": "^7.0.0", + "debug": "^4.3.2", "sax": "^1.2.4" + } + }, + "cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" }, "dependencies": { - "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "requires": { - "ms": "^2.1.1" + "pump": "^3.0.0" } }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" } } }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - }, "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - } - }, - "capture-stack-trace": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", - "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==" + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==" }, "caseless": { "version": "0.12.0", @@ -502,19 +5009,18 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" }, "chromium-pickle-js": { "version": "0.2.0", @@ -527,126 +5033,132 @@ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" }, "clean-css": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", - "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.1.tgz", + "integrity": "sha512-ooQCa1/70oRfVdUUGjKpbHuxgMgm8BsDT5EBqBGvPxMoRoGXf4PNx5mMnkjzJ9Ptx4vvmDdha0QVh86QtYIk1g==", "requires": { "source-map": "~0.6.0" } }, "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=" + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" }, "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "requires": { - "restore-cursor": "^2.0.0" + "restore-cursor": "^3.1.0" } }, "cli-spinners": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", - "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==" - }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz", + "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==" }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "cli-truncate": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz", + "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", + "optional": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "slice-ansi": "^1.0.0", + "string-width": "^2.0.0" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "optional": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" } + } + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^5.0.0" } } } }, - "clone-deep": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz", - "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=", + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", "requires": { - "for-own": "^1.0.0", - "is-plain-object": "^2.0.1", - "kind-of": "^3.2.2", - "shallow-clone": "^0.1.2" + "mimic-response": "^1.0.0" } }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, + "coffeescript": { + "version": "1.12.7", + "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.12.7.tgz", + "integrity": "sha512-pLXHFxQMPklVoEekowk8b3erNynC+DVJzChxS/LCBBgR6/8AJkHivkm//zbowcfc7BTCAjryuhx6gPqPRfsFoA==", + "optional": true + }, "color-convert": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", - "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "requires": { - "color-name": "1.1.1" + "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "colors": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.1.tgz", - "integrity": "sha512-jg/vxRmv430jixZrC+La5kMbUWqIg32/JsYNZb94+JEmzceYbWKTsv1OuTp+7EaqiaWRR2tPcykibwCRgclIsw==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" }, "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "requires": { "delayed-stream": "~1.0.0" } }, "commander": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", - "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==" + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "compare-version": { "version": "0.1.2", @@ -667,48 +5179,29 @@ "inherits": "^2.0.3", "readable-stream": "^2.2.2", "typedarray": "^0.0.6" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } + } + }, + "config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "optional": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" } }, "configstore": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", - "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", "requires": { - "dot-prop": "^4.1.0", + "dot-prop": "^5.2.0", "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" } }, "console-control-strings": { @@ -717,44 +5210,47 @@ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, "core-js": { - "version": "2.3.0", - "resolved": "http://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz", - "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=" + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.1.tgz", + "integrity": "sha512-9Id2xHY1W7m8hCl8NkhQn5CufmF/WuR30BTRewvCXc1aZd3kMECwNZ69ndLbekKfakw9Rf2Xyc+QR6E7Gg+obg==", + "optional": true }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "optional": true, "requires": { - "capture-stack-trace": "^1.0.0" + "buffer": "^5.1.0" } }, "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "cson-parser": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/cson-parser/-/cson-parser-4.0.9.tgz", + "integrity": "sha512-I79SAcCYquWnEfXYj8hBqOOWKj6eH6zX1hhX3yqmS4K3bYp7jME3UFpHPzu3rUew0oyfc0s8T6IlWGXRAheHag==", + "optional": true, "requires": { - "array-find-index": "^1.0.1" + "coffeescript": "1.12.7" } }, "dashdash": { @@ -765,49 +5261,47 @@ "assert-plus": "^1.0.0" } }, - "data-uri-to-buffer": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", - "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==" - }, "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "requires": { - "ms": "2.0.0" + "ms": "2.1.2" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } }, "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "requires": { + "clone": "^1.0.2" + } }, - "degenerator": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", - "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "optional": true, "requires": { - "ast-types": "0.x.x", - "escodegen": "1.x.x", - "esprima": "3.x.x" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" - } + "object-keys": "^1.0.12" } }, "delayed-stream": { @@ -820,56 +5314,117 @@ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, "detect-libc": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" }, - "dmg-builder": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-6.5.3.tgz", - "integrity": "sha512-ZNl4GFBg6rdFplnuoK56iftxh/qgM7rXJUxgl21eK4WsjxgQwtQ0REZo+pDSL4OzVeyOO8MMNWSNQcCsBLiDyA==", + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "optional": true + }, + "dir-compare": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz", + "integrity": "sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA==", "requires": { - "app-builder-lib": "~20.38.3", - "bluebird-lst": "^1.0.6", - "builder-util": "~9.6.0", - "fs-extra-p": "^7.0.0", - "iconv-lite": "^0.4.24", - "js-yaml": "^3.12.0", - "parse-color": "^1.0.0", - "sanitize-filename": "^1.6.1" + "buffer-equal": "1.0.0", + "colors": "1.0.3", + "commander": "2.9.0", + "minimatch": "3.0.4" + }, + "dependencies": { + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" + }, + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "requires": { + "graceful-readlink": ">= 1.0.0" + } + } + } + }, + "dmg-builder": { + "version": "22.14.5", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.14.5.tgz", + "integrity": "sha512-1GvFGQE332bvPamcMwZDqWqfWfJTyyDLOsHMcGi0zs+Jh7JOn6/zuBkHJIWHdsj2QJbhzLVyd2/ZqttOKv7I8w==", + "requires": { + "app-builder-lib": "22.14.5", + "builder-util": "22.14.5", + "builder-util-runtime": "8.9.1", + "dmg-license": "^1.0.9", + "fs-extra": "^10.0.0", + "iconv-lite": "^0.6.2", + "js-yaml": "^4.1.0" + }, + "dependencies": { + "fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + } } }, - "dockerfile-ast": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/dockerfile-ast/-/dockerfile-ast-0.0.12.tgz", - "integrity": "sha512-cIV8oXkAxpIuN5XgG0TGg07nLDgrj4olkfrdT77OTA3VypscsYHBUg/FjHxW9K3oA+CyH4Th/qtoMgTVpzSobw==", + "dmg-license": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.9.tgz", + "integrity": "sha512-Rq6qMDaDou2+aPN2SYy0x7LDznoJ/XaG6oDcH5wXUp+WRWQMUYE6eM+F+nex+/LSXOp1uw4HLFoed0YbfU8R/Q==", + "optional": true, "requires": { - "vscode-languageserver-types": "^3.5.0" + "@types/plist": "^3.0.1", + "@types/verror": "^1.10.3", + "ajv": "^6.10.0", + "cli-truncate": "^1.1.0", + "crc": "^3.8.0", + "iconv-corefoundation": "^1.1.6", + "plist": "^3.0.1", + "smart-buffer": "^4.0.2", + "verror": "^1.10.0" } }, "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "requires": { - "is-obj": "^1.0.0" + "is-obj": "^2.0.0" } }, "dotenv": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.2.0.tgz", - "integrity": "sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w==" + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", + "integrity": "sha512-I9OvvrHp4pIARv4+x9iuewrWycX6CcZtoAu1XrzPxc5UygMJXJZYmBsynku8IkrJwgypE5DGNjDPmPRhDCptUg==" }, "dotenv-expand": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-4.2.0.tgz", - "integrity": "sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU=" + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" }, "duplexer3": { "version": "0.1.4", @@ -877,89 +5432,108 @@ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" }, "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "optional": true, + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "requires": { - "jsbn": "~0.1.0" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, "ejs": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz", - "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==" + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", + "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", + "requires": { + "jake": "^10.6.1" + } }, "electron": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/electron/-/electron-4.0.1.tgz", - "integrity": "sha512-kBWDLn1Vq8Tm6+/HpQc8gkjX7wJyQI8v/lf2kAirfi0Q4cXh6vBjozFvV1U/9gGCbyKnIDM+m8/wpyJIjg4w7g==", + "version": "12.2.2", + "resolved": "https://registry.npmjs.org/electron/-/electron-12.2.2.tgz", + "integrity": "sha512-Oma/nIfvgql9JjAxdB9gQk//qxpJaI6PgMocYMiW4kFyLi+8jS6oGn33QG3FESS//cw09KRnWmA9iutuFAuXtw==", "requires": { - "@types/node": "^10.12.18", - "electron-download": "^4.1.0", + "@electron/get": "^1.0.1", + "@types/node": "^14.6.2", "extract-zip": "^1.0.3" } }, "electron-builder": { - "version": "20.38.4", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-20.38.4.tgz", - "integrity": "sha512-WHOr3Rz2wktxV5TqmRL6woO9/wrIZeRfJPSEXOhgfgLskE5Sp2Aer0zAF7lHNqXuG6JhU+0I9IYFAxa73MTs9w==", - "requires": { - "app-builder-lib": "20.38.4", - "bluebird-lst": "^1.0.6", - "builder-util": "9.6.1", - "builder-util-runtime": "8.1.0", - "chalk": "^2.4.1", - "dmg-builder": "6.5.3", - "fs-extra-p": "^7.0.0", - "is-ci": "^2.0.0", - "lazy-val": "^1.0.3", - "read-config-file": "3.2.0", - "sanitize-filename": "^1.6.1", - "update-notifier": "^2.5.0", - "yargs": "^12.0.5" - } - }, - "electron-download": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/electron-download/-/electron-download-4.1.1.tgz", - "integrity": "sha512-FjEWG9Jb/ppK/2zToP+U5dds114fM1ZOJqMAR4aXXL5CvyPE9fiqBK/9YcwC9poIFQTEJk/EM/zyRwziziRZrg==", - "requires": { - "debug": "^3.0.0", - "env-paths": "^1.0.0", - "fs-extra": "^4.0.1", - "minimist": "^1.2.0", - "nugget": "^2.0.1", - "path-exists": "^3.0.0", - "rc": "^1.2.1", - "semver": "^5.4.1", - "sumchecker": "^2.0.2" + "version": "22.14.5", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.14.5.tgz", + "integrity": "sha512-N73hSbXFz6Mz5Z6h6C5ly6CB+dUN6k1LuCDJjI8VF47bMXv/QE0HE+Kkb0GPKqTqM7Hsk/yIYX+kHCfSkR5FGg==", + "requires": { + "@types/yargs": "^17.0.1", + "app-builder-lib": "22.14.5", + "builder-util": "22.14.5", + "builder-util-runtime": "8.9.1", + "chalk": "^4.1.1", + "dmg-builder": "22.14.5", + "fs-extra": "^10.0.0", + "is-ci": "^3.0.0", + "lazy-val": "^1.0.5", + "read-config-file": "6.2.0", + "update-notifier": "^5.1.0", + "yargs": "^17.0.1" }, "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "ci-info": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", + "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==" + }, + "fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", "requires": { - "ms": "^2.1.1" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "path-exists": { + "is-ci": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", + "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", + "requires": { + "ci-info": "^3.1.1" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + }, + "yargs": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.0.1.tgz", + "integrity": "sha512-xBBulfCc8Y6gLFcrPvtqKz9hz8SO0l1Ni8GgDekvBX2ro0HRQImDGnikfc33cgzcYUSncapnNcZDjVFIH3f6KQ==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } } } }, "electron-osx-sign": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.11.tgz", - "integrity": "sha512-VVd40nrnVqymvFrY9ZkOYgHJOvexHHYTR3di/SN+mjJ0OWhR1I8BRVj3U+Yamw6hnkZZNKZp52rqL5EFAAPFkQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.5.0.tgz", + "integrity": "sha512-icoRLHzFz/qxzDh/N4Pi2z4yVHurlsCAYQvsCSG7fCedJ4UJXBS6PoQyGH71IfcqKupcKeK7HX/NkyfG+v6vlQ==", "requires": { "bluebird": "^3.5.0", "compare-version": "^0.1.2", @@ -967,228 +5541,289 @@ "isbinaryfile": "^3.0.2", "minimist": "^1.2.0", "plist": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "requires": { + "buffer-alloc": "^1.2.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } } }, "electron-publish": { - "version": "20.38.3", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-20.38.3.tgz", - "integrity": "sha512-Qomq253NT5DfjUZgFSx6p+gheU5YhM6zZ67fTtBZvwyk0v8HwxNXfa8fZT7h+1c3BwEmjusTbmjZRNW/XZBXFA==", - "requires": { - "bluebird-lst": "^1.0.6", - "builder-util": "~9.6.0", - "builder-util-runtime": "^8.1.0", - "chalk": "^2.4.1", - "fs-extra-p": "^7.0.0", - "lazy-val": "^1.0.3", - "mime": "^2.4.0" + "version": "22.14.5", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.14.5.tgz", + "integrity": "sha512-h+NANRdaA0PqGF15GKvorseWPzh1PXa/zx4I37//PIokW8eKIov8ky23foUSb55ZFWUHGpxQJux7y2NCfBtQeg==", + "requires": { + "@types/fs-extra": "^9.0.11", + "builder-util": "22.14.5", + "builder-util-runtime": "8.9.1", + "chalk": "^4.1.1", + "fs-extra": "^10.0.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.2" + }, + "dependencies": { + "fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + } } }, "electron-rebuild": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/electron-rebuild/-/electron-rebuild-1.8.2.tgz", - "integrity": "sha512-EeR4dgb6NN7ybxduUWMeeLhU/EuF+FzwFZJfMJXD0bx96K+ttAieCXOn9lTO5nA9Qn3hiS7pEpk8pZ9StpGgSg==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/electron-rebuild/-/electron-rebuild-2.3.5.tgz", + "integrity": "sha512-1sQ1DRtQGpglFhc3urD4olMJzt/wxlbnAAsf+WY2xHf5c50ZovivZvCXSpVgTOP9f4TzOMvelWyspyfhxQKHzQ==", "requires": { - "colors": "^1.2.0", - "debug": "^2.6.3", + "@malept/cross-spawn-promise": "^1.1.1", + "colors": "^1.3.3", + "debug": "^4.1.1", "detect-libc": "^1.0.3", - "fs-extra": "^3.0.1", - "node-abi": "^2.0.0", - "node-gyp": "^3.6.0", - "ora": "^1.2.0", - "rimraf": "^2.6.1", - "spawn-rx": "^2.0.10", - "yargs": "^7.0.2" + "fs-extra": "^9.0.1", + "got": "^11.7.0", + "lzma-native": "^6.0.1", + "node-abi": "^2.19.2", + "node-gyp": "^7.1.0", + "ora": "^5.1.0", + "tar": "^6.0.5", + "yargs": "^16.0.0" }, "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + "@sindresorhus/is": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.0.tgz", + "integrity": "sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ==" }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "@szmarczak/http-timer": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz", + "integrity": "sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==", + "requires": { + "defer-to-connect": "^2.0.0" + } + }, + "cacheable-request": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.1.tgz", + "integrity": "sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^2.0.0" + } + }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "mimic-response": "^3.1.0" } }, + "defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" + }, "fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^3.0.0", - "universalify": "^0.1.0" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" } }, - "jsonfile": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", - "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "requires": { - "graceful-fs": "^4.1.6" + "pump": "^3.0.0" } }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "got": { + "version": "11.8.2", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.2.tgz", + "integrity": "sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ==", "requires": { - "lcid": "^1.0.0" + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.1", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" } }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + "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==" }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } }, - "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "keyv": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz", + "integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==", "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.0" + "json-buffer": "3.0.1" } }, - "yargs-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + }, + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + }, + "p-cancelable": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz", + "integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==" + }, + "responselike": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", + "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", "requires": { - "camelcase": "^3.0.0" + "lowercase-keys": "^2.0.0" } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" } } }, - "email-validator": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz", - "integrity": "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==" - }, - "env-paths": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-1.0.0.tgz", - "integrity": "sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA=" - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es6-promise": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz", - "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==" + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "optional": true }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "http://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "requires": { - "es6-promise": "^4.0.3" + "once": "^1.4.0" } }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "escodegen": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", - "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" - } - } + "env-paths": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", + "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==" }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "optional": true }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } + "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==", + "optional": true }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "external-editor": { - "version": "2.2.0", - "resolved": "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", - "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" - } - }, "extract-zip": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", - "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", "requires": { - "concat-stream": "1.6.2", - "debug": "2.6.9", - "mkdirp": "0.5.1", - "yauzl": "2.4.1" + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } } }, "extsprintf": { @@ -1197,61 +5832,29 @@ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + "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==" }, "fd-slicer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", - "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", "requires": { "pend": "~1.2.0" } }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "for-in": { + "filelist": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", + "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", "requires": { - "for-in": "^1.0.1" + "minimatch": "^3.0.4" } }, "forever-agent": { @@ -1260,44 +5863,31 @@ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "requires": { "asynckit": "^0.4.0", - "combined-stream": "1.0.6", + "combined-stream": "^1.0.6", "mime-types": "^2.1.12" } }, "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "requires": { - "graceful-fs": "^4.1.2", + "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, - "fs-extra-p": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/fs-extra-p/-/fs-extra-p-7.0.0.tgz", - "integrity": "sha512-5tg5jBOd0xIXjwj4PDnafOXL5TyPVzjxLby4DPKev53wurEXp7IsojBaD4Lj5M5w7jxw0pbkEU0fFEPmcKoMnA==", + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "requires": { - "bluebird-lst": "^1.0.6", - "fs-extra": "^7.0.0" - }, - "dependencies": { - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - } + "minipass": "^3.0.0" } }, "fs.realpath": { @@ -1305,26 +5895,6 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, - "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", - "requires": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - } - }, - "ftp": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", - "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", - "requires": { - "readable-stream": "1.1.x", - "xregexp": "2.0.0" - } - }, "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", @@ -1338,65 +5908,54 @@ "string-width": "^1.0.1", "strip-ansi": "^3.0.1", "wide-align": "^1.1.0" - } - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "get-uri": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.2.tgz", - "integrity": "sha512-ZD325dMZOgerGqF/rF6vZXyFGTAay62svjQIT+X/oU2PtxYpFxvSkbsdi+oxIrsNxlZVd4y8wUDqkaExWTI/Cw==", - "requires": { - "data-uri-to-buffer": "1", - "debug": "2", - "extend": "3", - "file-uri-to-path": "1", - "ftp": "~0.3.10", - "readable-stream": "2" }, "dependencies": { - "isarray": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "safe-buffer": "~5.1.0" + "ansi-regex": "^2.0.0" } } } }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -1406,9 +5965,9 @@ } }, "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -1418,44 +5977,84 @@ "path-is-absolute": "^1.0.0" } }, + "global-agent": { + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.1.12.tgz", + "integrity": "sha512-caAljRMS/qcDo69X9BfkgrihGUgGx44Fb4QQToNQjsiWh+YlQ66uqYVAdA8Olqit+5Ng0nkz09je3ZzANMZcjg==", + "optional": true, + "requires": { + "boolean": "^3.0.1", + "core-js": "^3.6.5", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + } + }, "global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", "requires": { - "ini": "^1.3.4" + "ini": "2.0.0" + }, + "dependencies": { + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" + } } }, - "got": { - "version": "6.7.1", - "resolved": "http://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "global-tunnel-ng": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", + "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==", + "optional": true, + "requires": { + "encodeurl": "^1.0.2", + "lodash": "^4.17.10", + "npm-conf": "^1.1.3", + "tunnel": "^0.0.6" + } + }, + "globalthis": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.1.tgz", + "integrity": "sha512-mJPRTc/P39NH/iNG4mXa9aIhNymaQikTrnspeCa2ZuJ+mH2QN/rXwtX3XwKrHqWgUQFbNZKtHM105aHzJalElw==", + "optional": true, "requires": { - "create-error-class": "^3.0.0", + "define-properties": "^1.1.3" + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" } }, "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" }, - "graphlib": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.7.tgz", - "integrity": "sha512-TyI9jIy2J4j0qgPmOOrHTCtpPqJGN/aurBwc6ZT+bRii+di1I+Wv3obRhVrmBEXet+qkMaEX67dXrwsd3QQM6w==", - "requires": { - "lodash": "^4.17.5" - } + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" }, "har-schema": { "version": "2.0.0", @@ -1463,66 +6062,41 @@ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" }, "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", "requires": { - "ajv": "^5.1.0", + "ajv": "^6.12.3", "har-schema": "^2.0.0" } }, "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" }, - "hasbin": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/hasbin/-/hasbin-1.2.3.tgz", - "integrity": "sha1-eMWSaJPIAhXCtWiuH9P8q3omlrA=", - "requires": { - "async": "~1.5" - } + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" }, "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" - }, - "http-errors": { - "version": "1.6.3", - "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "lru-cache": "^6.0.0" } }, - "http-proxy-agent": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", - "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", - "requires": { - "agent-base": "4", - "debug": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - } - } + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" }, "http-signature": { "version": "1.2.0", @@ -1534,42 +6108,45 @@ "sshpk": "^1.7.0" } }, - "https-proxy-agent": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", - "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", "requires": { - "agent-base": "^4.1.0", - "debug": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + } + }, + "iconv-corefoundation": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.6.tgz", + "integrity": "sha512-1NBe55C75bKGZaY9UHxvXG3G0gEp0ziht7quhuFrW3SPgZDw9HI6qvYXRSV5M/Eupyu8ljuJ6Cba+ec15PZ4Xw==", + "optional": true, + "requires": { + "cli-truncate": "^1.1.0", + "node-addon-api": "^1.6.3" } }, "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" } }, - "immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "requires": { + "minimatch": "^3.0.4" + } }, "import-lazy": { "version": "2.1.0", @@ -1581,14 +6158,6 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "requires": { - "repeating": "^2.0.0" - } - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1599,92 +6168,14 @@ } }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" - }, - "inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.0.4", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rx-lite": "^4.0.8", - "rx-lite-aggregates": "^4.0.8", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "requires": { - "builtin-modules": "^1.0.0" - } + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "is-ci": { "version": "2.0.0", @@ -1694,139 +6185,149 @@ "ci-info": "^2.0.0" } }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "is-installed-globally": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", - "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", "requires": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" } }, - "is-npm": { + "is-interactive": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" + }, + "is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==" }, "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" }, "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "requires": { - "path-is-inside": "^1.0.1" - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "^3.0.1" - } - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" - }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" - }, - "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=" - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==" }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" }, "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isbinaryfile": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", - "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", - "requires": { - "buffer-alloc": "^1.2.0" - } + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.8.tgz", + "integrity": "sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w==" }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, + "jake": { + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", + "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", + "requires": { + "async": "0.9.x", + "chalk": "^2.4.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "js-yaml": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", - "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" } }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" }, "json-schema": { "version": "0.2.3", @@ -1834,9 +6335,9 @@ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" }, "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "json-stringify-safe": { "version": "5.0.1", @@ -1844,11 +6345,11 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "requires": { - "minimist": "^1.2.0" + "minimist": "^1.2.5" } }, "jsonfile": { @@ -1870,182 +6371,38 @@ "verror": "1.10.0" } }, - "jszip": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.1.5.tgz", - "integrity": "sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ==", - "requires": { - "core-js": "~2.3.0", - "es6-promise": "~3.0.2", - "lie": "~3.1.0", - "pako": "~1.0.2", - "readable-stream": "~2.0.6" - }, - "dependencies": { - "es6-promise": { - "version": "3.0.2", - "resolved": "http://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", - "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" - }, - "readable-stream": { - "version": "2.0.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~0.10.x", - "util-deprecate": "~1.0.1" - } - } - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", "requires": { - "is-buffer": "^1.1.5" + "json-buffer": "3.0.0" } }, "latest-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", - "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", "requires": { - "package-json": "^4.0.0" + "package-json": "^6.3.0" } }, - "lazy-cache": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", - "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=" - }, "lazy-val": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.3.tgz", - "integrity": "sha512-pjCf3BYk+uv3ZcPzEVM0BFvO9Uw58TmlrU0oG5tTrr9Kcid3+kdKxapH8CjdYmVa2nO5wOoZn2rdvZx2PKj/xg==" - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "requires": { - "invert-kv": "^1.0.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lie": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", - "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", - "requires": { - "immediate": "~3.0.5" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - } - } + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", + "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==" }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" - }, - "lodash.assignin": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", - "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=" - }, - "lodash.clone": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", - "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=" - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" - }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" - }, - "lodash.set": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", - "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "requires": { - "chalk": "^2.0.1" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" + "chalk": "^4.0.0" } }, "lowercase-keys": { @@ -2054,96 +6411,75 @@ "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" }, "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "yallist": "^4.0.0" } }, - "macos-release": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-1.1.0.tgz", - "integrity": "sha512-mmLbumEYMi5nXReB9js3WGsB8UE6cDBWyIO62Z4DNx6GbRhDxHNjA1MlzSpJ2S2KM1wyiPRA0d19uHWYYvMHjA==" + "lzma-native": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/lzma-native/-/lzma-native-6.0.1.tgz", + "integrity": "sha512-O6oWF0xe1AFvOCjU8uOZBZ/lhjaMNwHfVNaqVMqmoQXlRwBcFWpCAToiZOdXcKVMdo/5s/D0a2QgA5laMErxHQ==", + "requires": { + "node-addon-api": "^1.6.0", + "node-pre-gyp": "^0.11.0", + "readable-stream": "^2.3.5", + "rimraf": "^2.7.1" + } }, "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "requires": { - "pify": "^3.0.0" + "semver": "^6.0.0" }, "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" } } }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "requires": { - "p-defer": "^1.0.0" - } - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" - }, - "mem": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", - "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==", - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", - "p-is-promise": "^1.1.0" - } - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "optional": true, "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" + "escape-string-regexp": "^4.0.0" } }, "mime": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", - "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==" + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==" }, "mime-db": { - "version": "1.35.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz", - "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==" + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", + "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==" }, "mime-types": { - "version": "2.1.19", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz", - "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==", + "version": "2.1.33", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", + "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", "requires": { - "mime-db": "~1.35.0" + "mime-db": "1.50.0" } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" }, "minimatch": { "version": "3.0.4", @@ -2154,152 +6490,112 @@ } }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "requires": { + "yallist": "^4.0.0" + } }, - "mixin-object": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", - "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "requires": { - "for-in": "^0.1.3", - "is-extendable": "^0.1.1" - }, - "dependencies": { - "for-in": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", - "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=" - } + "minipass": "^3.0.0", + "yallist": "^4.0.0" } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - } + "minimist": "^1.2.5" } }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "nconf": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.10.0.tgz", - "integrity": "sha512-fKiXMQrpP7CYWJQzKkPPx9hPgmq+YLDyxcG9N8RpiE9FoCkCbzD0NyW0YhE3xn3Aupe7nnDeIx4PFzYehpHT9Q==", + "needle": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz", + "integrity": "sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==", "requires": { - "async": "^1.4.0", - "ini": "^1.3.0", - "secure-keys": "^1.0.0", - "yargs": "^3.19.0" + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" }, "dependencies": { - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "os-locale": { - "version": "1.4.0", - "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "requires": { - "lcid": "^1.0.0" + "ms": "^2.1.1" } }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" - }, - "yargs": { - "version": "3.32.0", - "resolved": "http://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "requires": { - "camelcase": "^2.0.1", - "cliui": "^3.0.3", - "decamelize": "^1.1.1", - "os-locale": "^1.4.0", - "string-width": "^1.0.1", - "window-size": "^0.1.4", - "y18n": "^3.2.0" + "safer-buffer": ">= 2.1.2 < 3" } } } }, - "needle": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.4.tgz", - "integrity": "sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==", - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "netmask": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", - "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=" - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, "node-abi": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.5.1.tgz", - "integrity": "sha512-oDbFc7vCFx0RWWCweTer3hFm1u+e60N5FtGnmRV6QqvgATGFH/XRR6vqWIeBVosCYCqt6YdIr2L0exLZuEdVcQ==", + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz", + "integrity": "sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==", "requires": { "semver": "^5.4.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } } }, + "node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==" + }, "node-gyp": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", - "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", - "requires": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^2.0.0", - "which": "1" + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", + "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" }, "dependencies": { - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } } } }, @@ -2308,31 +6604,137 @@ "resolved": "https://registry.npmjs.org/node-json-minify/-/node-json-minify-1.0.0.tgz", "integrity": "sha1-e7NDL5ZYtr6x2ZP9XVOzyinQ15w=" }, + "node-pre-gyp": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", + "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==", + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + }, + "dependencies": { + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "requires": { + "minipass": "^2.6.0" + } + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "requires": { + "minipass": "^2.9.0" + } + }, + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "tar": { + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", + "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "requires": { + "chownr": "^1.1.4", + "fs-minipass": "^1.2.7", + "minipass": "^2.9.0", + "minizlib": "^1.3.3", + "mkdirp": "^0.5.5", + "safe-buffer": "^5.2.1", + "yallist": "^3.1.1" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", "requires": { "abbrev": "1" } }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" + }, + "npm-bundled": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "npm-normalize-package-bin": "^1.0.1" } }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "optional": true, + "requires": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + }, + "npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", "requires": { - "path-key": "^2.0.0" + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" } }, "npmlog": { @@ -2346,29 +6748,15 @@ "set-blocking": "~2.0.0" } }, - "nugget": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nugget/-/nugget-2.0.1.tgz", - "integrity": "sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=", - "requires": { - "debug": "^2.1.3", - "minimist": "^1.1.0", - "pretty-bytes": "^1.0.2", - "progress-stream": "^1.1.0", - "request": "^2.45.0", - "single-line-log": "^1.1.2", - "throttleit": "0.0.2" - } - }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" }, "object-assign": { "version": "4.1.1", @@ -2376,9 +6764,10 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object-keys": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", - "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "optional": true }, "once": { "version": "1.4.0", @@ -2389,109 +6778,47 @@ } }, "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "opn": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", - "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==", - "requires": { - "is-wsl": "^1.1.0" - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" + "mimic-fn": "^2.1.0" } }, "ora": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-1.4.0.tgz", - "integrity": "sha512-iMK1DOQxzzh2MBlVsU42G80mnrvUhqsMh74phHtDlrcTZPK0pH6o7l7DRshK+0YsxDyEuaOkziVdvM3T0QTzpw==", - "requires": { - "chalk": "^2.1.0", - "cli-cursor": "^2.1.0", - "cli-spinners": "^1.0.1", - "log-symbols": "^2.1.0" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" - }, - "os-locale": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz", - "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==", - "requires": { - "execa": "^0.10.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "requires": { + "bl": "^4.0.3", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" }, "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", - "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "requires": { - "invert-kv": "^2.0.0" + "ansi-regex": "^5.0.0" } } } }, - "os-name": { - "version": "2.0.1", - "resolved": "http://registry.npmjs.org/os-name/-/os-name-2.0.1.tgz", - "integrity": "sha1-uaOGNhwXrjohc27wWZQFyajF3F4=", - "requires": { - "macos-release": "^1.0.0", - "win-release": "^1.0.0" - } + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" }, "os-tmpdir": { "version": "1.0.2", @@ -2507,164 +6834,38 @@ "os-tmpdir": "^1.0.0" } }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, - "p-is-promise": { + "p-cancelable": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", - "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=" - }, - "p-limit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", - "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==" - }, - "pac-proxy-agent": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-2.0.2.tgz", - "integrity": "sha512-cDNAN1Ehjbf5EHkNY5qnRhGPUCp6SnpyVof5fRzN800QV1Y2OkzbH9rmjZkbBRa8igof903yOnjIl6z0SlAhxA==", - "requires": { - "agent-base": "^4.2.0", - "debug": "^3.1.0", - "get-uri": "^2.0.0", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.1", - "pac-resolver": "^3.0.0", - "raw-body": "^2.2.0", - "socks-proxy-agent": "^3.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "pac-resolver": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz", - "integrity": "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==", - "requires": { - "co": "^4.6.0", - "degenerator": "^1.0.4", - "ip": "^1.1.5", - "netmask": "^1.0.6", - "thunkify": "^2.1.2" - } + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" }, "package-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", - "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", - "requires": { - "got": "^6.7.1", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" - } - }, - "pako": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.7.tgz", - "integrity": "sha512-3HNK5tW4x8o5mO8RuHZp3Ydw9icZXx0RANAOMzlMzx7LVXhMJ4mo3MOBpzyd7r/+RUu8BmndP47LXT+vzjtWcQ==" - }, - "parse-color": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-color/-/parse-color-1.0.0.tgz", - "integrity": "sha1-e3SLlag/A/FqlPU15S1/PZRlhhk=", - "requires": { - "color-convert": "~0.5.0" + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" }, "dependencies": { - "color-convert": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz", - "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0=" + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" } } }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "^1.2.0" - } - }, - "path": { - "version": "0.12.7", - "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", - "requires": { - "process": "^0.11.1", - "util": "^0.10.3" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "^2.0.0" - } - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" - }, "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" }, "pend": { "version": "1.2.0", @@ -2677,150 +6878,85 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "^2.0.0" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "optional": true }, "plist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", - "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.4.tgz", + "integrity": "sha512-ksrr8y9+nXOxQB2osVNqrgvX/XQPOXaU4BQMKjYq8PvaY1U18mo+fKgBSwzK+luSyinOuPae956lSVcBwxlAMg==", "requires": { - "base64-js": "^1.2.3", - "xmlbuilder": "^9.0.7", - "xmldom": "0.1.x" + "base64-js": "^1.5.1", + "xmlbuilder": "^9.0.7" + }, + "dependencies": { + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" + } } }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" - }, "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" - }, - "pretty-bytes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", - "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", - "requires": { - "get-stdin": "^4.0.1", - "meow": "^3.1.0" - } - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" }, "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, - "progress-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-1.2.0.tgz", - "integrity": "sha1-LNPP6jO6OonJwSHsM0er6asSX3c=", - "requires": { - "speedometer": "~0.1.2", - "through2": "~0.2.3" - } + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "requires": { - "asap": "~2.0.3" - } + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "optional": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, - "proxy-agent": { - "version": "2.3.1", - "resolved": "http://registry.npmjs.org/proxy-agent/-/proxy-agent-2.3.1.tgz", - "integrity": "sha512-CNKuhC1jVtm8KJYFTS2ZRO71VCBx3QSA92So/e6NrY6GoJonkx3Irnk4047EsCcswczwqAekRj3s8qLRGahSKg==", + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "requires": { - "agent-base": "^4.2.0", - "debug": "^3.1.0", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.1", - "lru-cache": "^4.1.2", - "pac-proxy-agent": "^2.0.1", - "proxy-from-env": "^1.0.0", - "socks-proxy-agent": "^3.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "proxy-from-env": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", - "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=" - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, - "raw-body": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", - "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.3", - "iconv-lite": "0.4.23", - "unpipe": "1.0.0" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - } + "pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "requires": { + "escape-goat": "^2.0.0" } }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" + }, "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -2833,141 +6969,72 @@ } }, "read-config-file": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-3.2.0.tgz", - "integrity": "sha512-i1QRc5jy4sHm9YBGb6ArA5SU1mDrc5wu2mnm3r9gPnm+LVZhBGbpTCKqAXyvV4TJHnBR3Yaaww+9b3DyRZcfww==", - "requires": { - "ajv": "^6.5.5", - "ajv-keywords": "^3.2.0", - "bluebird-lst": "^1.0.6", - "dotenv": "^6.1.0", - "dotenv-expand": "^4.2.0", - "fs-extra-p": "^7.0.0", - "js-yaml": "^3.12.0", - "json5": "^2.1.0", - "lazy-val": "^1.0.3" - }, - "dependencies": { - "ajv": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", - "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" - }, - "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==" - } - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.2.0.tgz", + "integrity": "sha512-gx7Pgr5I56JtYz+WuqEbQHj/xWo+5Vwua2jhb1VwM4Wid5PqYmZ4i00ZB0YEGIfkVBsCv9UrjgyqCiQfS/Oosg==", "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" + "dotenv": "^9.0.2", + "dotenv-expand": "^5.1.0", + "js-yaml": "^4.1.0", + "json5": "^2.2.0", + "lazy-val": "^1.0.4" } }, "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "recursive-readdir": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", - "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", - "requires": { - "minimatch": "3.0.4" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "registry-auth-token": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", - "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" + "rc": "^1.2.8" } }, "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "requires": { - "rc": "^1.0.1" - } - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", "requires": { - "is-finite": "^1.0.0" + "rc": "^1.2.8" } }, "request": { - "version": "2.87.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", - "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "requires": { "aws-sign2": "~0.7.0", - "aws4": "^1.6.0", + "aws4": "^1.8.0", "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.1", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", "forever-agent": "~0.6.1", - "form-data": "~2.3.1", - "har-validator": "~5.0.3", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.17", - "oauth-sign": "~0.8.2", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", "performance-now": "^2.1.0", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1", - "tough-cookie": "~2.3.3", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", - "uuid": "^3.1.0" + "uuid": "^3.3.2" } }, "require-directory": { @@ -2975,55 +7042,48 @@ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } + "resolve-alpn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.0.0.tgz", + "integrity": "sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA==" }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", "requires": { - "glob": "^7.0.5" + "lowercase-keys": "^1.0.0" } }, - "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "requires": { - "is-promise": "^2.1.0" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" } }, - "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=" - }, - "rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "requires": { - "rx-lite": "*" + "glob": "^7.1.3" } }, - "rxjs": { - "version": "5.5.11", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.11.tgz", - "integrity": "sha512-3bjO7UwWfA2CV7lmwYMBzj4fQ6Cq+ftHc2MvUe+WMS7wcdJ1LosDWmdjPQanYp2dBRj572p7PeU81JUxHKOcBA==", + "roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "optional": true, "requires": { - "symbol-observable": "1.0.1" + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" } }, "safe-buffer": { @@ -3037,9 +7097,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sanitize-filename": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.1.tgz", - "integrity": "sha1-YS2hyWRz+gLczaktzVtKsWSmdyo=", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", "requires": { "truncate-utf8-bytes": "^1.0.0" } @@ -3049,487 +7109,81 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, - "secure-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/secure-keys/-/secure-keys-1.0.0.tgz", - "integrity": "sha1-8MgtmKOxOah3aogIBQuCRDEIf8o=" - }, "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" - }, - "semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "requires": { - "semver": "^5.0.3" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - }, - "shallow-clone": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", - "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", - "requires": { - "is-extendable": "^0.1.1", - "kind-of": "^2.0.1", - "lazy-cache": "^0.2.3", - "mixin-object": "^2.0.1" - }, - "dependencies": { - "kind-of": { - "version": "2.0.1", - "resolved": "http://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", - "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", - "requires": { - "is-buffer": "^1.0.2" - } - } - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "requires": { - "shebang-regex": "^1.0.0" + "lru-cache": "^6.0.0" } }, - "shebang-regex": { + "semver-compare": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "single-line-log": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-1.1.2.tgz", - "integrity": "sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=", - "requires": { - "string-width": "^1.0.1" - } - }, - "smart-buffer": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-1.1.15.tgz", - "integrity": "sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY=" - }, - "snyk": { - "version": "1.120.0", - "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.120.0.tgz", - "integrity": "sha512-9V2UMBDWMtiNOfFTj8oIEl+nAyvF9mFJEoROSzmm3K04CM9o1Y3wjjZE4pifhC0PsenpYtIJfv2tgtYBB46gHw==", - "requires": { - "@snyk/dep-graph": "1.1.2", - "@snyk/gemfile": "1.1.0", - "abbrev": "^1.1.1", - "ansi-escapes": "^3.1.0", - "chalk": "^2.4.1", - "configstore": "^3.1.2", - "debug": "^3.1.0", - "hasbin": "^1.2.3", - "inquirer": "^3.0.0", - "lodash": "^4.17.5", - "needle": "^2.2.4", - "opn": "^5.2.0", - "os-name": "^2.0.1", - "proxy-agent": "^2.0.0", - "proxy-from-env": "^1.0.0", - "recursive-readdir": "^2.2.2", - "semver": "^5.5.0", - "snyk-config": "2.2.0", - "snyk-docker-plugin": "1.14.0", - "snyk-go-plugin": "1.6.1", - "snyk-gradle-plugin": "2.1.2", - "snyk-module": "1.9.1", - "snyk-mvn-plugin": "2.0.1", - "snyk-nodejs-lockfile-parser": "1.10.1", - "snyk-nuget-plugin": "1.6.5", - "snyk-php-plugin": "1.5.1", - "snyk-policy": "1.13.3", - "snyk-python-plugin": "1.9.1", - "snyk-resolve": "1.0.1", - "snyk-resolve-deps": "4.0.2", - "snyk-sbt-plugin": "2.0.1", - "snyk-tree": "^1.0.0", - "snyk-try-require": "1.3.1", - "source-map-support": "^0.5.9", - "tempfile": "^2.0.0", - "then-fs": "^2.0.0", - "undefsafe": "^2.0.0", - "update-notifier": "^2.5.0", - "uuid": "^3.2.1" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "snyk-config": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/snyk-config/-/snyk-config-2.2.0.tgz", - "integrity": "sha512-mq0wbP/AgjcmRq5i5jg2akVVV3iSYUPTowZwKn7DChRLDL8ySOzWAwan+ImXiyNbrWo87FNI/15O6MpOnTxOIg==", - "requires": { - "debug": "^3.1.0", - "lodash": "^4.17.5", - "nconf": "^0.10.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "optional": true }, - "snyk-docker-plugin": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/snyk-docker-plugin/-/snyk-docker-plugin-1.14.0.tgz", - "integrity": "sha512-bmhKHGwm0CIVOJD98uIuqGACbsuqjlwnj/Ybek+nlZowLqHyjhOUYQISPzjIwWbF1wpYf4Av6MzbCx9HsNPFIg==", + "semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", "requires": { - "debug": "^3", - "dockerfile-ast": "0.0.12", - "semver": "^5.6.0", - "tslib": "^1" + "semver": "^6.3.0" }, "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" - } - } - }, - "snyk-go-plugin": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/snyk-go-plugin/-/snyk-go-plugin-1.6.1.tgz", - "integrity": "sha512-hFOMyznfcMzF1HaZP18VmjQSqK/jBOowh0lpJY4UqmaQSZyJury3Ax+44O9oVUJi8lb8A4g7RVbxhlWl6bIqlA==", - "requires": { - "graphlib": "^2.1.1", - "tmp": "0.0.33", - "toml": "^2.3.2" - } - }, - "snyk-gradle-plugin": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/snyk-gradle-plugin/-/snyk-gradle-plugin-2.1.2.tgz", - "integrity": "sha512-GswT6b8Pvq4XtUXYFPBqQoxoeRG/WVRKhy2HcgfJbd3MStKyO4fwn14InlEAP7PQDLqGZ5hhvWwsNCT/d69lRA==", - "requires": { - "clone-deep": "^0.3.0" - } - }, - "snyk-module": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/snyk-module/-/snyk-module-1.9.1.tgz", - "integrity": "sha512-A+CCyBSa4IKok5uEhqT+hV/35RO6APFNLqk9DRRHg7xW2/j//nPX8wTSZUPF8QeRNEk/sX+6df7M1y6PBHGSHA==", - "requires": { - "debug": "^3.1.0", - "hosted-git-info": "^2.7.1" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "snyk-mvn-plugin": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/snyk-mvn-plugin/-/snyk-mvn-plugin-2.0.1.tgz", - "integrity": "sha512-TBrdcFXHdYuRYFCvpyUeFC+mCi6SOV3vdxgHrP7JRNnJwO8PYaKCObLJyhpRWa8IaHv/8CjJTmnEbWIh7BPHAA==" - }, - "snyk-nodejs-lockfile-parser": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/snyk-nodejs-lockfile-parser/-/snyk-nodejs-lockfile-parser-1.10.1.tgz", - "integrity": "sha512-0k0QWB4bgmIy81GQVEODwaSjkXldJStM6ooSNiTrwT7cjzJmpN9r6r1WXWTZpSuAyADvGwTfSyzdvl2xzQXAEA==", - "requires": { - "@yarnpkg/lockfile": "^1.0.2", - "graphlib": "^2.1.5", - "lodash": "4.17.10", - "source-map-support": "^0.5.7", - "tslib": "^1.9.3", - "uuid": "^3.3.2" - }, - "dependencies": { - "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" } } }, - "snyk-nuget-plugin": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.6.5.tgz", - "integrity": "sha512-3qIndzkxCxiaGvAwMkqChbChGdwhNePPyfi0WjhC/nJGwecqU3Fb/NeTW7lgyT+xoq/dFnzW0DgBJ4+AyNA2gA==", - "requires": { - "debug": "^3.1.0", - "jszip": "^3.1.5", - "lodash": "^4.17.10", - "xml2js": "^0.4.17" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "snyk-php-plugin": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/snyk-php-plugin/-/snyk-php-plugin-1.5.1.tgz", - "integrity": "sha512-g5QSHBsRJ2O4cNxKC4zlWwnQYiSgQ77Y6QgGmo3ihPX3VLZrc1amaZIpPsNe1jwXirnGj2rvR5Xw+jDjbzvHFw==", - "requires": { - "debug": "^3.1.0", - "lodash": "^4.17.5", - "path": "0.12.7" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "snyk-policy": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/snyk-policy/-/snyk-policy-1.13.3.tgz", - "integrity": "sha512-6J2a+Wt9zgvTtCwi4x8rLtkDQzFNPqubfIgs3aR35ZsEXPwI4XHGo0cxnJPDriqncp2JK72vnRpNfIZ7v0L1Mw==", + "serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "optional": true, "requires": { - "debug": "^3.1.0", - "email-validator": "^2.0.4", - "js-yaml": "^3.12.0", - "lodash.clonedeep": "^4.5.0", - "semver": "^5.6.0", - "snyk-module": "^1.9.1", - "snyk-resolve": "^1.0.1", - "snyk-try-require": "^1.3.1", - "then-fs": "^2.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" - } + "type-fest": "^0.13.1" } }, - "snyk-python-plugin": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/snyk-python-plugin/-/snyk-python-plugin-1.9.1.tgz", - "integrity": "sha512-4R040DBK77NSfSy3rCndmrv85YlLrKZU1ct59oZSoGb1PYdCi8kXRuq50UpSgasp6YR0yJxT22T38hNOAjTtVw==", - "requires": { - "tmp": "0.0.33" - } + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, - "snyk-resolve": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/snyk-resolve/-/snyk-resolve-1.0.1.tgz", - "integrity": "sha512-7+i+LLhtBo1Pkth01xv+RYJU8a67zmJ8WFFPvSxyCjdlKIcsps4hPQFebhz+0gC5rMemlaeIV6cqwqUf9PEDpw==", + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "requires": { - "debug": "^3.1.0", - "then-fs": "^2.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } + "shebang-regex": "^3.0.0" } }, - "snyk-resolve-deps": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/snyk-resolve-deps/-/snyk-resolve-deps-4.0.2.tgz", - "integrity": "sha512-nlw62wiWhGOTw3BD3jVIwrUkRR4iNxEkkO4Y/PWs8BsUWseGu1H6QgLesFXJb3qx7ANJ5UbUCJMgV+eL0Lf9cA==", - "requires": { - "ansicolors": "^0.3.2", - "debug": "^3.2.5", - "lodash.assign": "^4.2.0", - "lodash.assignin": "^4.2.0", - "lodash.clone": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.get": "^4.4.2", - "lodash.set": "^4.3.2", - "lru-cache": "^4.0.0", - "semver": "^5.5.1", - "snyk-module": "^1.6.0", - "snyk-resolve": "^1.0.0", - "snyk-tree": "^1.0.0", - "snyk-try-require": "^1.1.1", - "then-fs": "^2.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" - } - } + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, - "snyk-sbt-plugin": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/snyk-sbt-plugin/-/snyk-sbt-plugin-2.0.1.tgz", - "integrity": "sha512-AsGGMP0W3mlKygXUI5jjt54qWFttZEXT1A40+u21p8rZPXLZprwnd+QH9pZDd04d9W9aofGvON8NJeOn9KS39Q==" + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" }, - "snyk-tree": { + "slice-ansi": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/snyk-tree/-/snyk-tree-1.0.0.tgz", - "integrity": "sha1-D7cxdtvzLngvGRAClBYESPkRHMg=", - "requires": { - "archy": "^1.0.0" - } - }, - "snyk-try-require": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/snyk-try-require/-/snyk-try-require-1.3.1.tgz", - "integrity": "sha1-bgJvkuZK9/zM6h7lPVJIQeQYohI=", - "requires": { - "debug": "^3.1.0", - "lodash.clonedeep": "^4.3.0", - "lru-cache": "^4.0.0", - "then-fs": "^2.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "socks": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/socks/-/socks-1.1.10.tgz", - "integrity": "sha1-W4t/x8jzQcU+0FbpKbe/Tei6e1o=", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "optional": true, "requires": { - "ip": "^1.1.4", - "smart-buffer": "^1.0.13" + "is-fullwidth-code-point": "^2.0.0" } }, - "socks-proxy-agent": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-3.0.1.tgz", - "integrity": "sha512-ZwEDymm204mTzvdqyUqOdovVr2YRd2NYskrYrF2LXyZ9qDiMAoFESGK8CRphiO7rtbo2Y757k2Nia3x2hGtalA==", - "requires": { - "agent-base": "^4.1.0", - "socks": "^1.1.10" - } + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "optional": true }, "source-map": { "version": "0.6.1", @@ -3537,66 +7191,24 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", - "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", + "version": "0.5.20", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", + "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, - "spawn-rx": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/spawn-rx/-/spawn-rx-2.0.12.tgz", - "integrity": "sha512-gOPXiQQFQ9lTOLuys0iMn3jfxxv9c7zzwhbYLOEbQGvEShHVJ5sSR1oD3Daj88os7jKArDYT7rbOKdvNhe7iEg==", - "requires": { - "debug": "^2.5.1", - "lodash.assign": "^4.2.0", - "rxjs": "^5.1.1" - } - }, - "spdx-correct": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", - "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==" - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==" - }, - "speedometer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-0.1.4.tgz", - "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=" - }, "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "optional": true }, "sshpk": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", - "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -3610,57 +7222,59 @@ } }, "stat-mode": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz", - "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=" - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", + "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==" }, "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { - "ansi-regex": "^2.0.0" + "safe-buffer": "~5.1.0" } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "requires": { - "is-utf8": "^0.2.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } } }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "get-stdin": "^4.0.1" + "ansi-regex": "^3.0.0" } }, "strip-json-comments": { @@ -3669,131 +7283,133 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, "sumchecker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz", - "integrity": "sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", "requires": { - "debug": "^2.2.0" + "debug": "^4.1.0" } }, "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } }, - "symbol-observable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=" - }, "tar": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", - "requires": { - "block-stream": "*", - "fstream": "^1.0.2", - "inherits": "2" + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + } } }, - "temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=" - }, "temp-file": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.3.2.tgz", - "integrity": "sha512-FGKccAW0Mux9hC/2bdUIe4bJRv4OyVo4RpVcuplFird1V/YoplIFbnPZjfzbJSf/qNvRZIRB9/4n/RkI0GziuQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", + "integrity": "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==", "requires": { "async-exit-hook": "^2.0.1", - "bluebird-lst": "^1.0.6", - "fs-extra-p": "^7.0.0" - } - }, - "tempfile": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", - "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", - "requires": { - "temp-dir": "^1.0.0", - "uuid": "^3.0.1" - } - }, - "term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", - "requires": { - "execa": "^0.7.0" + "fs-extra": "^10.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + } } }, - "then-fs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/then-fs/-/then-fs-2.0.0.tgz", - "integrity": "sha1-cveS3Z0xcFqRrhnr/Piz+WjIHaI=", + "terser": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", + "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", "requires": { - "promise": ">=3.2 <8" + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + } } }, - "throttleit": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz", - "integrity": "sha1-z+34jmDADdlpe2H90qg0OptoDq8=" - }, - "through": { - "version": "2.3.8", - "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "through2": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz", - "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=", + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "requires": { - "readable-stream": "~1.1.9", - "xtend": "~2.1.1" + "rimraf": "^3.0.0" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + } } }, - "thunkify": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", - "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=" - }, - "timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "tmp-promise": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.2.tgz", + "integrity": "sha512-OyCLAKU1HzBjL6Ev3gxUeraJNlbNingmi8IrHHEsYH8LTmEuhvYfqvhn2F/je+mjf4N58UmZ96OMEy1JanSCpA==", "requires": { - "os-tmpdir": "~1.0.2" + "tmp": "^0.2.0" } }, - "toml": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/toml/-/toml-2.3.3.tgz", - "integrity": "sha512-O7L5hhSQHxuufWUdcTRPfuTh3phKfAZ/dqfxZFoxPCj2RYmpaSGLEIs016FCXItQwNr08yefUB5TSjzRYnajTA==" + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" }, "tough-cookie": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "requires": { - "punycode": "^1.4.1" + "psl": "^1.1.28", + "punycode": "^2.1.1" } }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" - }, "truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", @@ -3802,10 +7418,11 @@ "utf8-byte-length": "^1.0.1" } }, - "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + "tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "optional": true }, "tunnel-agent": { "version": "0.6.0", @@ -3818,45 +7435,33 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { - "prelude-ls": "~1.1.2" - } + "type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "optional": true }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, - "uglify-es": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", - "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", - "requires": { - "commander": "~2.13.0", - "source-map": "~0.6.1" - } - }, - "undefsafe": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.2.tgz", - "integrity": "sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY=", + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "requires": { - "debug": "^2.2.0" + "is-typedarray": "^1.0.0" } }, "unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", "requires": { - "crypto-random-string": "^1.0.0" + "crypto-random-string": "^2.0.0" } }, "universalify": { @@ -3864,69 +7469,41 @@ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "unzip-response": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" - }, "update-notifier": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", - "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", "requires": { - "boxen": "^1.2.1", - "chalk": "^2.0.1", - "configstore": "^3.0.0", + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", "import-lazy": "^2.1.0", - "is-ci": "^1.0.10", - "is-installed-globally": "^0.1.0", - "is-npm": "^1.0.0", - "latest-version": "^3.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" - }, - "dependencies": { - "ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==" - }, - "is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", - "requires": { - "ci-info": "^1.5.0" - } - } + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" } }, "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", "requires": { "punycode": "^2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - } } }, "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", "requires": { - "prepend-http": "^1.0.1" + "prepend-http": "^2.0.0" } }, "utf8-byte-length": { @@ -3934,32 +7511,15 @@ "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=" }, - "util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "requires": { - "inherits": "2.0.3" - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" - }, - "validate-npm-package-license": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, "verror": { "version": "1.10.0", @@ -3971,50 +7531,30 @@ "extsprintf": "^1.2.0" } }, - "vscode-languageserver-types": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.14.0.tgz", - "integrity": "sha512-lTmS6AlAlMHOvPQemVwo3CezxBp0sNB95KNPkqp3Nxd5VFEnuG1ByM0zlRWos0zjO3ZWtkvhal0COgiV1xIA4A==" + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "requires": { + "defaults": "^1.0.3" + } }, "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "requires": { "isexe": "^2.0.0" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" - }, "wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "requires": { "string-width": "^1.0.2 || 2" - } - }, - "widest-line": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", - "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", - "requires": { - "string-width": "^2.1.1" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -4023,42 +7563,40 @@ "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } } } }, - "win-release": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz", - "integrity": "sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=", + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", "requires": { - "semver": "^5.0.1" + "string-width": "^4.0.0" } }, - "window-size": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "requires": { + "ansi-regex": "^5.0.0" + } + } } }, "wrappy": { @@ -4067,140 +7605,63 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write-file-atomic": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", - "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "requires": { - "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } }, "xdg-basedir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=" - }, - "xml2js": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", - "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" }, "xmlbuilder": { - "version": "9.0.7", - "resolved": "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" - }, - "xmldom": { - "version": "0.1.27", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", - "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=" - }, - "xregexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", - "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=" - }, - "xtend": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", - "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", - "requires": { - "object-keys": "~0.4.0" - } + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "optional": true }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==" }, "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" } }, "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "dependencies": { - "camelcase": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", - "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==" - } - } + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==" }, "yauzl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", - "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", "requires": { - "fd-slicer": "~1.0.1" + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" } } } diff --git a/package.json b/package.json index ead12cd47..e3713d060 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "edex-ui", "productName": "eDEX-UI", - "version": "2.0.1-pre", + "version": "2.2.8", "description": "A science fiction desktop running everywhere. Awesome.", "keywords": [ "desktop", @@ -13,27 +13,28 @@ ], "main": "src/_boot.js", "scripts": { - "start": "node_modules/.bin/electron src --nointro", + "start": "electron src --nointro", "install-linux": "npm install && cd src && npm install && ./../node_modules/.bin/electron-rebuild -f -w node-pty && cd ..", "preinstall-windows": "npm install --global --production windows-build-tools && npm install --global node-gyp && setx PYTHON \"%USERPROFILE%\\.windows-build-tools\\python27\\python.exe\"", "install-windows": "npm install && cd src && npm install && ..\\node_modules\\.bin\\electron-rebuild -f -w node-pty && cd ..", - "prebuild-linux": "mkdir prebuild-src && cp -Rv src/* prebuild-src/ && node prebuild-minify.js && cd prebuild-src && npm install", - "prebuild-darwin": "mkdir prebuild-src && cp -Rv src/* prebuild-src/ && node prebuild-minify.js && cd prebuild-src && npm install", + "prebuild-linux": "rsync -a --info=progress2 src/ prebuild-src --exclude node_modules && node prebuild-minify.js && cd prebuild-src && npm install", + "prebuild-darwin": "rsync -a src/ prebuild-src --exclude node_modules && node prebuild-minify.js && cd prebuild-src && npm install", "prebuild-windows": "mkdir prebuild-src && xcopy src\\* prebuild-src\\ /E /C /Q /Y && node prebuild-minify.js && cd prebuild-src && npm install", - "build-linux": "./node_modules/.bin/electron-builder build -l -p never", - "build-darwin": "./node_modules/.bin/electron-builder build -m -p never", - "build-windows": "node_modules\\.bin\\electron-builder -w -p never", + "build-linux": "./node_modules/.bin/electron-builder build -l --x64 --ia32 --arm64 --armv7l", + "build-darwin": "./node_modules/.bin/electron-builder build -m", + "build-windows": "node_modules\\.bin\\electron-builder build -w", "postbuild-linux": "rm -R prebuild-src", "postbuild-darwin": "rm -R prebuild-src", "postbuild-windows": "rmdir /S /Q prebuild-src", - "snyk-protect": "snyk protect", - "test": "rsync -a --info=progress2 src prebuild-src --exclude node_modules && node prebuild-minify.js && rm -R prebuild-src" + "test": "rsync -a --info=progress2 src/ prebuild-src --exclude node_modules && node prebuild-minify.js && cd prebuild-src && npm install && snyk test && cd .. && rm -R prebuild-src", + "init-file-icons": "git submodule update --init", + "update-file-icons": "git submodule foreach git pull origin master && node file-icons-generator.js" }, "repository": { "type": "git", "url": "git+https://github.com/GitSquared/edex-ui.git" }, - "author": "GitSquared ", + "author": "Gabriel 'Squared' SAILLARD (https://gaby.dev)", "license": "GPL-3.0", "bugs": { "url": "https://github.com/GitSquared/edex-ui/issues" @@ -42,9 +43,10 @@ "build": { "appId": "com.edex.ui", "productName": "eDEX-UI", + "publish": "github", "asar": true, - "compression": "maximum", - "copyright": "Copyright © 2017-2018 GitSquared ", + "compression": "normal", + "copyright": "Copyright © 2017-2021 Gabriel 'Squared' SAILLARD (https://gaby.dev)", "directories": { "output": "dist", "app": "prebuild-src" @@ -54,19 +56,13 @@ "artifactName": "eDEX-UI-${os}-${arch}.${ext}", "linux": { "target": [ - { - "target": "AppImage", - "arch": [ - "x64", - "ia32" - ] - } + "AppImage" ], "category": "System", "icon": "media/linuxIcons" }, "appImage": { - "artifactName": "eDEX-UI Linux (${arch}).AppImage" + "artifactName": "eDEX-UI-Linux-${arch}.AppImage" }, "mac": { "target": [ @@ -81,7 +77,7 @@ "icon": "media/icon.icns" }, "dmg": { - "artifactName": "eDEX-UI MacOS Image.dmg" + "artifactName": "eDEX-UI-macOS-${arch}.dmg" }, "win": { "target": [ @@ -96,20 +92,23 @@ "icon": "media/icon.ico" }, "nsis": { - "artifactName": "eDEX-UI Windows Installer.exe", - "oneClick": true, + "artifactName": "eDEX-UI-Windows-${arch}.exe", + "oneClick": false, + "allowToChangeInstallationDirectory": true, "deleteAppDataOnUninstall": true } }, "dependencies": { - "clean-css": "4.2.1", - "electron": "4.0.1", - "electron-builder": "20.38.4", - "electron-rebuild": "1.8.2", - "node-abi": "2.5.1", + "clean-css": "5.2.1", + "electron": "^12.1.0", + "electron-builder": "^22.14.5", + "electron-rebuild": "^2.3.5", + "mime-types": "^2.1.33", + "node-abi": "2.30.1", "node-json-minify": "1.0.0", - "snyk": "^1.120.0", - "uglify-es": "3.3.9" + "terser": "^5.9.0" }, - "snyk": true + "optionalDependencies": { + "cson-parser": "4.0.9" + } } diff --git a/prebuild-minify.js b/prebuild-minify.js index 5051f0bef..64cb0f14e 100644 --- a/prebuild-minify.js +++ b/prebuild-minify.js @@ -1,22 +1,26 @@ const fs = require("fs"); const path = require("path"); -const UglifyJS = require("uglify-es"); +const stdout = process.stdout; +const UglifyJS = require("terser"); const CleanCSS = require("clean-css"); JSON.minify = require("node-json-minify"); -const writeMinified = (path, data) => { - fs.writeFile(path, data, (err) => { - if (err) { - console.log(path+" - ❌"); - console.log(""); - console.log(""); - throw err; - } - console.log(path+" - ✓"); +function writeMinified(path, data) { + return new Promise((res, rej) => { + fs.writeFile(path, data, (err) => { + if (err) { + stdout.write(" - ❌\n\n\n", () => { + rej(err); + }); + } + stdout.write(" - ✓\n", () => { + res(); + }); + }); }); -}; +} -const recursiveMinify = (dirPath) => { +async function recursiveMinify(dirPath) { try { var files = fs.readdirSync(dirPath); } catch(e) { return; } if (files.length > 0) { @@ -25,11 +29,14 @@ const recursiveMinify = (dirPath) => { if (fs.statSync(filePath).isFile()) { // Do not process grid.json because it's heavy and pre-minified, and themes and keyboard files to leave them in a human-readable state - if (filePath.endsWith(".json")) return; + if (filePath.endsWith(".json") && !filePath.endsWith("icons.json")) return; + // See #446 + if (filePath.endsWith("file-icons-match.js")) return; + await stdout.write(filePath.slice(filePath.indexOf('prebuild-src/')+13)+'...'); switch (filePath.split(".").pop()) { case "js": - let minified = UglifyJS.minify(fs.readFileSync(filePath, {encoding: "utf-8"}), { + let minified = await UglifyJS.minify(fs.readFileSync(filePath, {encoding: "utf-8"}), { compress: { dead_code: false, unused: false, @@ -41,42 +48,45 @@ const recursiveMinify = (dirPath) => { } }); if (!minified.error) { - writeMinified(filePath, minified.code); - break; - } - else { - console.log(filePath+" - ❌"); - console.log(""); - console.log(""); + await writeMinified(filePath, minified.code).catch(e => { + throw e; + }); + } else { + stdout.write(" - ❌\n\n\n"); throw minified.error; } + break; case "css": let output = new CleanCSS({level:2}).minify(fs.readFileSync(filePath, {encoding:"utf-8"})); if (output.errors.length >= 1) { - console.log(filePath+" - ❌"); - console.log(""); - console.log(""); + stdout.write(" - ❌\n\n\n"); throw output.errors; } else { - writeMinified(filePath, output.styles); - break; + await writeMinified(filePath, output.styles).catch(e => { + throw e; + }); } + break; case "json": + let out; try { - writeMinified(filePath, JSON.minify(fs.readFileSync(filePath, {encoding:"utf-8"}))); - break; + out = JSON.minify(fs.readFileSync(filePath, {encoding:"utf-8"})); } catch(err) { - console.log(filePath+" - ❌"); - console.log(""); - console.log(""); + stdout.write(" - ❌\n\n\n"); throw err; } + await writeMinified(filePath, out).catch(e => { + throw e; + }); + break; + default: + stdout.write("\n"); } } else { - recursiveMinify(filePath); + await recursiveMinify(filePath); } } } -}; +} recursiveMinify(path.join(__dirname, "prebuild-src")); diff --git a/src/_boot.js b/src/_boot.js index 84e990050..638ebc9b2 100644 --- a/src/_boot.js +++ b/src/_boot.js @@ -3,7 +3,7 @@ const {app, BrowserWindow, dialog, shell} = require("electron"); process.on("uncaughtException", e => { signale.fatal(e); - dialog.showErrorBox("eEDEX-UI failed to launch", e.message || "Cannot retrieve error message."); + dialog.showErrorBox("eDEX-UI crashed", e.message || "Cannot retrieve error message."); if (tty) { tty.close(); } @@ -30,11 +30,12 @@ if (!gotLock) { signale.time("Startup"); const electron = require("electron"); +require('@electron/remote/main').initialize() const ipc = electron.ipcMain; const path = require("path"); const url = require("url"); const fs = require("fs"); -const clip = require("clipboardy"); +const which = require("which"); const Terminal = require("./classes/terminal.class.js").Terminal; ipc.on("log", (e, type, content) => { @@ -43,6 +44,8 @@ ipc.on("log", (e, type, content) => { var win, tty, extraTtys; const settingsFile = path.join(electron.app.getPath("userData"), "settings.json"); +const shortcutsFile = path.join(electron.app.getPath("userData"), "shortcuts.json"); +const lastWindowStateFile = path.join(electron.app.getPath("userData"), "lastWindowState.json"); const themesDir = path.join(electron.app.getPath("userData"), "themes"); const innerThemesDir = path.join(__dirname, "assets/themes"); const kblayoutsDir = path.join(electron.app.getPath("userData"), "keyboards"); @@ -55,6 +58,11 @@ const innerFontsDir = path.join(__dirname, "assets/fonts"); if (process.env.http_proxy) delete process.env.http_proxy; if (process.env.https_proxy) delete process.env.https_proxy; +// Bypass GPU acceleration blocklist, trading a bit of stability for a great deal of performance, mostly on Linux +app.commandLine.appendSwitch("ignore-gpu-blocklist"); +app.commandLine.appendSwitch("enable-gpu-rasterization"); +app.commandLine.appendSwitch("enable-video-decode"); + // Fix userData folder not setup on Windows try { fs.mkdirSync(electron.app.getPath("userData")); @@ -66,21 +74,65 @@ try { if (!fs.existsSync(settingsFile)) { fs.writeFileSync(settingsFile, JSON.stringify({ shell: (process.platform === "win32") ? "powershell.exe" : "bash", + shellArgs: '', cwd: electron.app.getPath("userData"), keyboard: "en-US", theme: "tron", + termFontSize: 15, audio: true, - extraAudio: false - }, 4)); + audioVolume: 1.0, + disableFeedbackAudio: false, + clockHours: 24, + pingAddr: "1.1.1.1", + port: 3000, + nointro: false, + nocursor: false, + forceFullscreen: true, + allowWindowed: false, + excludeThreadsFromToplist: true, + hideDotfiles: false, + fsListView: false, + experimentalGlobeFeatures: false, + experimentalFeatures: false + }, "", 4)); + signale.info(`Default settings written to ${settingsFile}`); +} +// Create default shortcuts file +if (!fs.existsSync(shortcutsFile)) { + fs.writeFileSync(shortcutsFile, JSON.stringify([ + { type: "app", trigger: "Ctrl+Shift+C", action: "COPY", enabled: true }, + { type: "app", trigger: "Ctrl+Shift+V", action: "PASTE", enabled: true }, + { type: "app", trigger: "Ctrl+Tab", action: "NEXT_TAB", enabled: true }, + { type: "app", trigger: "Ctrl+Shift+Tab", action: "PREVIOUS_TAB", enabled: true }, + { type: "app", trigger: "Ctrl+X", action: "TAB_X", enabled: true }, + { type: "app", trigger: "Ctrl+Shift+S", action: "SETTINGS", enabled: true }, + { type: "app", trigger: "Ctrl+Shift+K", action: "SHORTCUTS", enabled: true }, + { type: "app", trigger: "Ctrl+Shift+F", action: "FUZZY_SEARCH", enabled: true }, + { type: "app", trigger: "Ctrl+Shift+L", action: "FS_LIST_VIEW", enabled: true }, + { type: "app", trigger: "Ctrl+Shift+H", action: "FS_DOTFILES", enabled: true }, + { type: "app", trigger: "Ctrl+Shift+P", action: "KB_PASSMODE", enabled: true }, + { type: "app", trigger: "Ctrl+Shift+I", action: "DEV_DEBUG", enabled: false }, + { type: "app", trigger: "Ctrl+Shift+F5", action: "DEV_RELOAD", enabled: true }, + { type: "shell", trigger: "Ctrl+Shift+Alt+Space", action: "neofetch", linebreak: true, enabled: false } + ], "", 4)); + signale.info(`Default keymap written to ${shortcutsFile}`); +} +//Create default window state file +if(!fs.existsSync(lastWindowStateFile)) { + fs.writeFileSync(lastWindowStateFile, JSON.stringify({ + useFullscreen: true + }, "", 4)); + signale.info(`Default last window state written to ${lastWindowStateFile}`); } // Copy default themes & keyboard layouts & fonts +signale.pending("Mirroring internal assets..."); try { fs.mkdirSync(themesDir); } catch(e) { // Folder already exists } -fs.readdirSync(innerThemesDir).forEach((e) => { +fs.readdirSync(innerThemesDir).forEach(e => { fs.writeFileSync(path.join(themesDir, e), fs.readFileSync(path.join(innerThemesDir, e), {encoding:"utf-8"})); }); try { @@ -88,7 +140,7 @@ try { } catch(e) { // Folder already exists } -fs.readdirSync(innerKblayoutsDir).forEach((e) => { +fs.readdirSync(innerKblayoutsDir).forEach(e => { fs.writeFileSync(path.join(kblayoutsDir, e), fs.readFileSync(path.join(innerKblayoutsDir, e), {encoding:"utf-8"})); }); try { @@ -96,10 +148,24 @@ try { } catch(e) { // Folder already exists } -fs.readdirSync(innerFontsDir).forEach((e) => { +fs.readdirSync(innerFontsDir).forEach(e => { fs.writeFileSync(path.join(fontsDir, e), fs.readFileSync(path.join(innerFontsDir, e))); }); +// Version history logging +const versionHistoryPath = path.join(electron.app.getPath("userData"), "versions_log.json"); +var versionHistory = fs.existsSync(versionHistoryPath) ? require(versionHistoryPath) : {}; +var version = app.getVersion(); +if (typeof versionHistory[version] === "undefined") { + versionHistory[version] = { + firstSeen: Date.now(), + lastSeen: Date.now() + }; +} else { + versionHistory[version].lastSeen = Date.now(); +} +fs.writeFileSync(versionHistoryPath, JSON.stringify(versionHistory, 0, 2), {encoding:"utf-8"}); + function createWindow(settings) { signale.info("Creating window..."); @@ -120,15 +186,18 @@ function createWindow(settings) { show: false, resizable: true, movable: settings.allowWindowed || false, - fullscreen: true, + fullscreen: settings.forceFullscreen || false, autoHideMenuBar: true, frame: settings.allowWindowed || false, backgroundColor: '#000000', webPreferences: { devTools: true, + enableRemoteModule: true, + contextIsolation: false, backgroundThrottling: false, webSecurity: true, nodeIntegration: true, + nodeIntegrationInSubFrames: false, allowRunningInsecureContent: false, experimentalFeatures: settings.experimentalFeatures || false } @@ -140,39 +209,44 @@ function createWindow(settings) { slashes: true })); - win.once("ready-to-show", () => { - signale.complete("Frontend window is up!"); - win.show(); - if (!settings.allowWindowed) { - win.setResizable(false); - } - }); + signale.complete("Frontend window created!"); + win.show(); + if (!settings.allowWindowed) { + win.setResizable(false); + } else if (!require(lastWindowStateFile)["useFullscreen"]) { + win.setFullScreen(false); + } signale.watch("Waiting for frontend connection..."); } -app.on('ready', () => { +app.on('ready', async () => { signale.pending(`Loading settings file...`); let settings = require(settingsFile); + signale.pending(`Resolving shell path...`); + settings.shell = await which(settings.shell).catch(e => { throw(e) }); + signale.info(`Shell found at ${settings.shell}`); signale.success(`Settings loaded!`); if (!require("fs").existsSync(settings.cwd)) throw new Error("Configured cwd path does not exist."); - let customEnv; - // See #366 - if (process.platform === "darwin") { - const shellEnv = require("shell-env"); - customEnv = shellEnv.sync(); - } + let cleanEnv = await require("shell-env")(settings.shell).catch(e => { throw e; }); + + Object.assign(cleanEnv, { + TERM: "xterm-256color", + COLORTERM: "truecolor", + TERM_PROGRAM: "eDEX-UI", + TERM_PROGRAM_VERSION: app.getVersion() + }, settings.env); signale.pending(`Creating new terminal process on port ${settings.port || '3000'}`); tty = new Terminal({ role: "server", - shell: settings.shell.split(" ")[0], - params: settings.shell.split(" ").splice(1), + shell: settings.shell, + params: settings.shellArgs || '', cwd: settings.cwd, - env: customEnv || settings.env, + env: cleanEnv, port: settings.port || 3000 }); signale.success(`Terminal back-end initialized!`); @@ -193,19 +267,6 @@ app.on('ready', () => { signale.watch("Waiting for frontend connection..."); }; - // Clipboard backend access - ipc.on("clipboard", (e, arg) => { - switch(arg) { - case "read": - clip.read().then(text => { - e.sender.send("clipboard-reply", text); - }); - break; - default: - throw new Error("Illegal clipboard access request"); - } - }); - // Support for multithreaded systeminformation calls signale.pending("Starting multithreaded calls controller..."); require("./_multithread.js"); @@ -237,10 +298,10 @@ app.on('ready', () => { signale.pending(`Creating new TTY process on port ${port}`); let term = new Terminal({ role: "server", - shell: settings.shell.split(" ")[0], - params: settings.shell.split(" ").splice(1), + shell: settings.shell, + params: settings.shellArgs || '', cwd: tty.tty._cwd || settings.cwd, - env: settings.env, + env: cleanEnv, port: port }); signale.success(`New terminal back-end initialized at ${port}`); @@ -249,10 +310,10 @@ app.on('ready', () => { term.wss.close(); signale.complete(`TTY exited at ${port}`, code, signal); extraTtys[term.port] = null; - delete term; + term = null; }; - term.onopened = () => { - signale.success(`TTY ${port} connected to frontend`); + term.onopened = pid => { + signale.success(`TTY ${port} connected to frontend (process PID ${pid})`); }; term.onresized = () => {}; term.ondisconnected = () => { @@ -260,7 +321,7 @@ app.on('ready', () => { term.close(); term.wss.close(); extraTtys[term.port] = null; - delete term; + term = null; }; extraTtys[port] = term; @@ -291,6 +352,7 @@ app.on('web-contents-created', (e, contents) => { e.preventDefault(); shell.openExternal(url); }); + // Prevent loading something else than the UI contents.on('will-navigate', (e, url) => { if (url !== contents.getURL()) e.preventDefault(); diff --git a/src/_multithread.js b/src/_multithread.js index 81097cd36..54d3f498e 100644 --- a/src/_multithread.js +++ b/src/_multithread.js @@ -4,7 +4,10 @@ if (cluster.isMaster) { const electron = require("electron"); const ipc = electron.ipcMain; const signale = require("signale"); - const numCPUs = require("os").cpus().length - 1; // Leave a core available for the renderer process + // Also, leave a core available for the renderer process + const osCPUs = require("os").cpus().length - 1; + // See #904 + const numCPUs = (osCPUs > 7) ? 7 : osCPUs; const si = require("systeminformation"); @@ -45,7 +48,7 @@ if (cluster.isMaster) { return; } - if (args.length > 1) { + if (args.length > 1 || workers.length <= 0) { si[type](...args).then(res => { if (e.sender) { e.sender.send("systeminformation-reply-"+id, res); diff --git a/src/_renderer.js b/src/_renderer.js index f02542612..e589dd6d4 100644 --- a/src/_renderer.js +++ b/src/_renderer.js @@ -3,7 +3,7 @@ window.eval = global.eval = function () { throw new Error("eval() is disabled for security reasons."); }; // Security helper :) -window._escapeHtml = (text) => { +window._escapeHtml = text => { let map = { '&': '&', '<': '<', @@ -13,9 +13,21 @@ window._escapeHtml = (text) => { }; return text.replace(/[&<>"']/g, m => {return map[m];}); }; -window._purifyCSS = (str) => { +window._encodePathURI = uri => { + return encodeURI(uri).replace(/#/g, "%23"); +}; +window._purifyCSS = str => { + if (typeof str === "undefined") return ""; + if (typeof str !== "string") { + str = str.toString(); + } return str.replace(/[<]/g, ""); }; +window._delay = ms => { + return new Promise((resolve, reject) => { + setTimeout(resolve, ms); + }); +}; // Initiate basic error handling window.onerror = (msg, path, line, col, error) => { @@ -25,29 +37,39 @@ window.onerror = (msg, path, line, col, error) => { const path = require("path"); const fs = require("fs"); const electron = require("electron"); +const remote = require("@electron/remote"); const ipc = electron.ipcRenderer; -const settingsDir = electron.remote.app.getPath("userData"); +const settingsDir = remote.app.getPath("userData"); const themesDir = path.join(settingsDir, "themes"); const keyboardsDir = path.join(settingsDir, "keyboards"); const fontsDir = path.join(settingsDir, "fonts"); const settingsFile = path.join(settingsDir, "settings.json"); +const shortcutsFile = path.join(settingsDir, "shortcuts.json"); +const lastWindowStateFile = path.join(settingsDir, "lastWindowState.json"); // Load config window.settings = require(settingsFile); +window.shortcuts = require(shortcutsFile); +window.lastWindowState = require(lastWindowStateFile); // Load CLI parameters -if (electron.remote.process.argv.includes("--nointro")) { - window.settings.nointro = true; +if (remote.process.argv.includes("--nointro")) { + window.settings.nointroOverride = true; } else { - window.settings.nointro = false; + window.settings.nointroOverride = false; +} +if (electron.remote.process.argv.includes("--nocursor")) { + window.settings.nocursorOverride = true; +} else { + window.settings.nocursorOverride = false; } // Retrieve theme override (hotswitch) ipc.once("getThemeOverride", (e, theme) => { if (theme !== null) { window.settings.theme = theme; - window.settings.nointro = true; + window.settings.nointroOverride = true; _loadTheme(require(path.join(themesDir, window.settings.theme+".json"))); } else { _loadTheme(require(path.join(themesDir, window.settings.theme+".json"))); @@ -58,13 +80,13 @@ ipc.send("getThemeOverride"); ipc.once("getKbOverride", (e, layout) => { if (layout !== null) { window.settings.keyboard = layout; - window.settings.nointro = true; + window.settings.nointroOverride = true; } }); ipc.send("getKbOverride"); // Load UI theme -window._loadTheme = (theme) => { +window._loadTheme = theme => { if (document.querySelector("style.theming")) { document.querySelector("style.theming").remove(); @@ -84,20 +106,30 @@ window._loadTheme = (theme) => { document.querySelector("head").innerHTML += ``; @@ -122,6 +154,52 @@ function initGraphicalErrorHandling() { }; } +function waitForFonts() { + return new Promise(resolve => { + if (document.readyState !== "complete" || document.fonts.status !== "loaded") { + document.addEventListener("readystatechange", () => { + if (document.readyState === "complete") { + if (document.fonts.status === "loaded") { + resolve(); + } else { + document.fonts.onloadingdone = () => { + if (document.fonts.status === "loaded") resolve(); + }; + } + } + }); + } else { + resolve(); + } + }); +} + +// A proxy function used to add multithreading to systeminformation calls - see backend process manager @ _multithread.js +function initSystemInformationProxy() { + const { nanoid } = require("nanoid/non-secure"); + + window.si = new Proxy({}, { + apply: () => {throw new Error("Cannot use sysinfo proxy directly as a function")}, + set: () => {throw new Error("Cannot set a property on the sysinfo proxy")}, + get: (target, prop, receiver) => { + return function(...args) { + let callback = (typeof args[args.length - 1] === "function") ? true : false; + + return new Promise((resolve, reject) => { + let id = nanoid(); + ipc.once("systeminformation-reply-"+id, (e, res) => { + if (callback) { + args[args.length - 1](res); + } + resolve(res); + }); + ipc.send("systeminformation-call", prop, id, ...args); + }); + }; + } + }); +} + // Init audio window.audioManager = new AudioManager(); @@ -129,27 +207,14 @@ window.audioManager = new AudioManager(); electron.remote.app.focus(); let i = 0; -if (!window.settings.nointro) { - displayLine(); -} else { +if (window.settings.nointro || window.settings.nointroOverride) { initGraphicalErrorHandling(); + initSystemInformationProxy(); document.getElementById("boot_screen").remove(); document.body.setAttribute("class", ""); - if (document.readyState !== "complete" || document.fonts.status !== "loaded") { - document.addEventListener("readystatechange", () => { - if (document.readyState === "complete") { - if (document.fonts.status === "loaded") { - initUI(); - } else { - document.fonts.onloadingdone = () => { - if (document.fonts.status === "loaded") initUI(); - }; - } - } - }); - } else { - initUI(); - } + waitForFonts().then(initUI); +} else { + displayLine(); } // Startup boot log @@ -163,15 +228,15 @@ function displayLine() { && fs.readFileSync("/etc/os-release").toString().includes("arch"); } - if (log[i] === undefined) { - setTimeout(resumeInit, 300); + if (typeof log[i] === "undefined") { + setTimeout(displayTitleScreen, 300); return; } if (log[i] === "Boot Complete") { - window.audioManager.beep2.play(); + window.audioManager.granted.play(); } else { - window.audioManager.beep1.play(); + window.audioManager.stdout.play(); } bootScreen.innerHTML += log[i]+"
"; i++; @@ -208,63 +273,79 @@ function displayLine() { } // Show "logo" and background grid -function resumeInit() { +async function displayTitleScreen() { let bootScreen = document.getElementById("boot_screen"); + if (bootScreen === null) { + bootScreen = document.createElement("section"); + bootScreen.setAttribute("id", "boot_screen"); + bootScreen.setAttribute("style", "z-index: 9999999"); + document.body.appendChild(bootScreen); + } bootScreen.innerHTML = ""; - setTimeout(() => { - document.body.setAttribute("class", ""); - setTimeout(() => { - document.body.setAttribute("class", "solidBackground"); - setTimeout(() => { - document.body.setAttribute("class", ""); - }, 400); - }, 200); - - window.audioManager.beep4.play(); - bootScreen.setAttribute("class", "center"); - bootScreen.innerHTML = "

eDEX-UI

"; - let title = document.querySelector("section > h1"); - - setTimeout(() => { - title.setAttribute("style", `background-color: rgb(${window.theme.r}, ${window.theme.g}, ${window.theme.b});border-bottom: 5px solid rgb(${window.theme.r}, ${window.theme.g}, ${window.theme.b});`); - setTimeout(() => { - window.audioManager.intro.play(); - title.setAttribute("style", `border: 5px solid rgb(${window.theme.r}, ${window.theme.g}, ${window.theme.b});`); - setTimeout(() => { - // Initiate graphical error display - initGraphicalErrorHandling(); - if (document.readyState !== "complete" || document.fonts.status !== "loaded") { - document.addEventListener("readystatechange", () => { - if (document.readyState === "complete") { - if (document.fonts.status === "loaded") { - document.getElementById("boot_screen").remove(); - initUI(); - } else { - document.fonts.onloadingdone = () => { - if (document.fonts.status === "loaded") { - document.getElementById("boot_screen").remove(); - initUI(); - } - }; - } - } - }); - } else { - document.getElementById("boot_screen").remove(); - initUI(); - } - }, 1200); - }, 600); - }, 300); - }, 400); + window.audioManager.theme.play(); + + await _delay(400); + + document.body.setAttribute("class", ""); + bootScreen.setAttribute("class", "center"); + bootScreen.innerHTML = "

eDEX-UI

"; + let title = document.querySelector("section > h1"); + + await _delay(200); + + document.body.setAttribute("class", "solidBackground"); + + await _delay(100); + + title.setAttribute("style", `background-color: rgb(${window.theme.r}, ${window.theme.g}, ${window.theme.b});border-bottom: 5px solid rgb(${window.theme.r}, ${window.theme.g}, ${window.theme.b});`); + + await _delay(300); + + title.setAttribute("style", `border: 5px solid rgb(${window.theme.r}, ${window.theme.g}, ${window.theme.b});`); + + await _delay(100); + + title.setAttribute("style", ""); + title.setAttribute("class", "glitch"); + + await _delay(500); + + document.body.setAttribute("class", ""); + title.setAttribute("class", ""); + title.setAttribute("style", `border: 5px solid rgb(${window.theme.r}, ${window.theme.g}, ${window.theme.b});`); + + await _delay(1000); + if (window.term) { + bootScreen.remove(); + return true; + } + initGraphicalErrorHandling(); + initSystemInformationProxy(); + waitForFonts().then(() => { + bootScreen.remove(); + initUI(); + }); +} + +// Returns the user's desired display name +async function getDisplayName() { + let user = settings.username || null; + if (user) + return user; + + try { + user = await require("username")(); + } catch (e) {} + + return user; } // Create the UI's html structure and initialize the terminal client and the keyboard -function initUI() { +async function initUI() { document.body.innerHTML += `

PANEL

SYSTEM

-
+

TERMINAL

MAIN SHELL

@@ -272,84 +353,78 @@ function initUI() {

PANEL

NETWORK

`; - setTimeout(() => { - window.audioManager.scan.play(); - document.getElementById("main_shell").setAttribute("style", "height:0%;margin-bottom:30vh;"); - setTimeout(() => { - document.getElementById("main_shell").setAttribute("style", "margin-bottom: 30vh;"); - document.querySelector("#main_shell > h3.title").setAttribute("style", ""); - setTimeout(() => { - document.getElementById("main_shell").setAttribute("style", "opacity: 0;"); - document.body.innerHTML += ` -
-
-
-
`; - window.keyboard = new Keyboard({ - layout: path.join(keyboardsDir, settings.keyboard+".json"), - container: "keyboard" - }); - setTimeout(() => { - document.getElementById("main_shell").setAttribute("style", ""); - setTimeout(() => { - initGreeter(); - document.getElementById("filesystem").setAttribute("style", ""); - document.getElementById("keyboard").setAttribute("style", ""); - document.getElementById("keyboard").setAttribute("class", "animation_state_1"); - setTimeout(() => { - document.getElementById("keyboard").setAttribute("class", "animation_state_1 animation_state_2"); - setTimeout(() => { - document.getElementById("keyboard").setAttribute("class", ""); - initMods(); - }, 1100); - }, 100); - }, 270); - }, 10); - }, 700); - }, 500); - }, 10); -} + await _delay(10); -// A proxy function used to add multithreading to systeminformation calls - see backend process manager @ _multithread.js -function initSystemInformationProxy() { - const nanoid = require("nanoid/non-secure"); + window.audioManager.expand.play(); + document.getElementById("main_shell").setAttribute("style", "height:0%;margin-bottom:30vh;"); - window.si = new Proxy({}, { - apply: () => {throw new Error("Cannot use sysinfo proxy directly as a function")}, - set: () => {throw new Error("Cannot set a property on the sysinfo proxy")}, - get: (target, prop, receiver) => { - return function(...args) { - let callback = (typeof args[0] === "function") ? true : false; + await _delay(500); - return new Promise((resolve, reject) => { - let id = nanoid(); - ipc.once("systeminformation-reply-"+id, (e, res) => { - if (callback) { - callback(res); - } - resolve(res); - }); - ipc.send("systeminformation-call", prop, id, ...args); - }); - }; + document.getElementById("main_shell").setAttribute("style", "margin-bottom: 30vh;"); + document.querySelector("#main_shell > h3.title").setAttribute("style", ""); + + await _delay(700); + + document.getElementById("main_shell").setAttribute("style", "opacity: 0;"); + document.body.innerHTML += ` +
+
+
+
`; + window.keyboard = new Keyboard({ + layout: path.join(keyboardsDir, settings.keyboard+".json"), + container: "keyboard" + }); + + await _delay(10); + + document.getElementById("main_shell").setAttribute("style", ""); + + await _delay(270); + + let greeter = document.getElementById("main_shell_greeting"); + + getDisplayName().then(user => { + if (user) { + greeter.innerHTML += `Welcome back, ${user}`; + } else { + greeter.innerHTML += "Welcome back"; } }); -} -// Create the "mods" in each column -function initMods() { - window.mods = {}; + greeter.setAttribute("style", "opacity: 1;"); - initSystemInformationProxy(); + document.getElementById("filesystem").setAttribute("style", ""); + document.getElementById("keyboard").setAttribute("style", ""); + document.getElementById("keyboard").setAttribute("class", "animation_state_1"); + window.audioManager.keyboard.play(); + + await _delay(100); + + document.getElementById("keyboard").setAttribute("class", "animation_state_1 animation_state_2"); + await _delay(1000); + + greeter.setAttribute("style", "opacity: 0;"); + + await _delay(100); + + document.getElementById("keyboard").setAttribute("class", ""); + + await _delay(400); + + greeter.remove(); + + // Initialize modules + window.mods = {}; // Left column window.mods.clock = new Clock("mod_column_left"); window.mods.sysinfo = new Sysinfo("mod_column_left"); + window.mods.hardwareInspector = new HardwareInspector("mod_column_left"); window.mods.cpuinfo = new Cpuinfo("mod_column_left"); window.mods.ramwatcher = new RAMwatcher("mod_column_left"); window.mods.toplist = new Toplist("mod_column_left"); - window.mods.clipboardButtons = new ClipboardButtons("mod_column_left"); // Right column window.mods.netstat = new Netstat("mod_column_right"); @@ -357,10 +432,9 @@ function initMods() { window.mods.conninfo = new Conninfo("mod_column_right"); // Fade-in animations - document.querySelectorAll(".mod_column").forEach((e) => { + document.querySelectorAll(".mod_column").forEach(e => { e.setAttribute("class", "mod_column activated"); }); - let i = 0; let left = document.querySelectorAll("#mod_column_left > div"); let right = document.querySelectorAll("#mod_column_right > div"); @@ -368,6 +442,7 @@ function initMods() { if (!left[i] && !right[i]) { clearInterval(x); } else { + window.audioManager.panels.play(); if (left[i]) { left[i].setAttribute("style", "animation-play-state: running;"); } @@ -377,80 +452,71 @@ function initMods() { i++; } }, 500); -} -function initGreeter() { - let shellContainer = document.getElementById("main_shell"); - let greeter = document.getElementById("main_shell_greeting"); + await _delay(100); - require("systeminformation").users() - .then((userlist) => { - greeter.innerHTML += `Welcome back, ${userlist[0].user}`; - }) - .catch(() => { - greeter.innerHTML += "Welcome back"; + // Initialize the terminal + let shellContainer = document.getElementById("main_shell"); + shellContainer.innerHTML += ` +
    +
  • MAIN SHELL

  • +
  • EMPTY

  • +
  • EMPTY

  • +
  • EMPTY

  • +
  • EMPTY

  • +
+
+

+            

+            

+            

+            

+        
`; + window.term = { + 0: new Terminal({ + role: "client", + parentId: "terminal0", + port: window.settings.port || 3000 }) - .then(() => { - greeter.setAttribute("style", "opacity: 1;"); - setTimeout(() => { - greeter.setAttribute("style", "opacity: 0;"); - setTimeout(() => { - greeter.remove(); - setTimeout(() => { - shellContainer.innerHTML += ` -
    -
  • MAIN SHELL
  • -
  • EMPTY
  • -
  • EMPTY
  • -
  • EMPTY
  • -
  • EMPTY
  • -
-
-

-                            

-                            

-                            

-                            

-                        
`; - window.term = { - 0: new Terminal({ - role: "client", - parentId: "terminal0", - port: window.settings.port || 3000 - }) - }; - window.currentTerm = 0; - window.term[0].onprocesschange = p => { - document.getElementById("shell_tab0").innerText = "MAIN - "+p; - }; - // Prevent losing hardware keyboard focus on the terminal when using touch keyboard - window.onmouseup = (e) => { - if (window.keyboard.linkedToTerm) window.term[window.currentTerm].term.focus(); - }; - window.term[0].term.writeln("\033[1m"+`Welcome to eDEX-UI v${electron.remote.app.getVersion()} - Electron v${process.versions.electron}`+"\033[0m"); - - window.fsDisp = new FilesystemDisplay({ - parentId: "filesystem" - }); + }; + window.currentTerm = 0; + window.term[0].onprocesschange = p => { + document.getElementById("shell_tab0").innerHTML = `

MAIN - ${p}

`; + }; + // Prevent losing hardware keyboard focus on the terminal when using touch keyboard + window.onmouseup = e => { + if (window.keyboard.linkedToTerm) window.term[window.currentTerm].term.focus(); + }; + window.term[0].term.writeln("\033[1m"+`Welcome to eDEX-UI v${electron.remote.app.getVersion()} - Electron v${process.versions.electron}`+"\033[0m"); - setTimeout(() => { - document.getElementById("filesystem").setAttribute("style", "opacity: 1;"); - window.updateCheck = new UpdateChecker(); - }, 300); - }, 100); - }, 500); - }, 1100); + await _delay(100); + + window.fsDisp = new FilesystemDisplay({ + parentId: "filesystem" }); + + await _delay(200); + + document.getElementById("filesystem").setAttribute("style", "opacity: 1;"); + + // Resend terminal CWD to fsDisp if we're hot reloading + if (window.performance.navigation.type === 1) { + window.term[window.currentTerm].resendCWD(); + } + + await _delay(200); + + window.updateCheck = new UpdateChecker(); } -window.themeChanger = (theme) => { +window.themeChanger = theme => { ipc.send("setThemeOverride", theme); setTimeout(() => { window.location.reload(true); }, 100); }; -window.remakeKeyboard = (layout) => { +window.remakeKeyboard = layout => { document.getElementById("keyboard").innerHTML = ""; window.keyboard = new Keyboard({ layout: path.join(keyboardsDir, layout+".json" || settings.keyboard+".json"), @@ -459,8 +525,8 @@ window.remakeKeyboard = (layout) => { ipc.send("setKbOverride", layout); }; -window.focusShellTab = (number) => { - window.audioManager.beep2.play(); +window.focusShellTab = number => { + window.audioManager.folder.play(); if (number !== window.currentTerm && window.term[number]) { window.currentTerm = number; @@ -483,11 +549,11 @@ window.focusShellTab = (number) => { } else if (number > 0 && number <= 4 && window.term[number] !== null && typeof window.term[number] !== "object") { window.term[number] = null; - document.getElementById("shell_tab"+number).innerText = "LOADING..."; + document.getElementById("shell_tab"+number).innerHTML = "

LOADING...

"; ipc.send("ttyspawn", "true"); ipc.once("ttyspawn-reply", (e, r) => { if (r.startsWith("ERROR")) { - document.getElementById("shell_tab"+number).innerText = "ERROR"; + document.getElementById("shell_tab"+number).innerHTML = "

ERROR

"; } else if (r.startsWith("SUCCESS")) { let port = Number(r.substr(9)); @@ -499,17 +565,18 @@ window.focusShellTab = (number) => { window.term[number].onclose = e => { delete window.term[number].onprocesschange; - document.getElementById("shell_tab"+number).innerText = "EMPTY"; + document.getElementById("shell_tab"+number).innerHTML = "

EMPTY

"; document.getElementById("terminal"+number).innerHTML = ""; + window.term[number].term.dispose(); delete window.term[number]; - window.focusShellTab(0); + window.useAppShortcut("PREVIOUS_TAB"); }; window.term[number].onprocesschange = p => { - document.getElementById("shell_tab"+number).innerText = `#${number+1} - ${p}`; + document.getElementById("shell_tab"+number).innerHTML = `

#${number+1} - ${p}

`; }; - document.getElementById("shell_tab"+number).innerText = "::"+port; + document.getElementById("shell_tab"+number).innerHTML = `

::${port}

`; setTimeout(() => { window.focusShellTab(number); }, 500); @@ -519,9 +586,11 @@ window.focusShellTab = (number) => { }; // Settings editor -window.openSettings = () => { +window.openSettings = async () => { + if (document.getElementById("settingsEditor")) return; + // Build lists of available keyboards, themes, monitors - let keyboards, themes, monitors; + let keyboards, themes, monitors, ifaces; fs.readdirSync(keyboardsDir).forEach(kb => { if (!kb.endsWith(".json")) return; kb = kb.replace(".json", ""); @@ -537,6 +606,10 @@ window.openSettings = () => { for (let i = 0; i < electron.remote.screen.getAllDisplays().length; i++) { if (i !== window.settings.monitor) monitors += ``; } + let nets = await window.si.networkInterfaces(); + nets.forEach(net => { + if (net.iface !== window.mods.netstat.iface) ifaces += ``; + }); // Unlink the tactile keyboard from the terminal emulator to allow filling in the settings fields window.keyboard.detach(); @@ -555,6 +628,11 @@ window.openSettings = () => { The program to run as a terminal emulator + + shellArgs + Arguments to pass to the shell + + cwd Working Directory to start in @@ -565,6 +643,11 @@ window.openSettings = () => { Custom shell environment override + + username + Custom username to display at boot + + keyboard On-screen keyboard layout code @@ -581,6 +664,11 @@ window.openSettings = () => { ${themes} + + termFontSize + Size of the terminal text in pixels + + audio Activate audio sound effects @@ -590,11 +678,16 @@ window.openSettings = () => { - extraAudio - Enable extra audio FX (requires audio: true) - + + + disableFeedbackAudio + Disable recurring feedback sound FX (input/output, mostly) + @@ -607,6 +700,13 @@ window.openSettings = () => { IPv4 address to test Internet connectivity + + clockHours + Clock format (12/24 hours) + monitor Which monitor to spawn the UI in (defaults to primary display) @@ -617,16 +717,27 @@ window.openSettings = () => { nointro - Skip the intro boot log and logo + Skip the intro boot log and logo${(window.settings.nointroOverride) ? " (Currently overridden by CLI flag)" : ""} + + nocursor + Hide the mouse cursor${(window.settings.nocursorOverride) ? " (Currently overridden by CLI flag)" : ""} + + iface Override the interface used for network monitoring - + allowWindowed @@ -637,11 +748,43 @@ window.openSettings = () => { - excludeSelfFromToplist - Exclude eDEX from top processes monitoring - + + + + + + excludeThreadsFromToplist + Display threads in the top processes list + + + + hideDotfiles + Hide files and directories starting with a dot in file display + + + + fsListView + Show files in a more detailed list instead of an icon grid + + + + experimentalGlobeFeatures + Toggle experimental features for the network globe + @@ -656,7 +799,7 @@ window.openSettings = () => {
Loaded values from memory

`, buttons: [ - {label: "Open in External Editor", action:`electron.shell.openExternal('file://${settingsFile}')`}, + {label: "Open in External Editor", action:`electron.shell.openPath('${settingsFile}');electronWin.minimize();`}, {label: "Save to Disk", action: "window.writeSettingsFile()"}, {label: "Reload UI", action: "window.location.reload(true);"}, {label: "Restart eDEX", action: "electron.remote.app.relaunch();electron.remote.app.quit();"} @@ -670,22 +813,39 @@ window.openSettings = () => { }); }; +window.writeFile = (path) => { + fs.writeFile(path, document.getElementById("fileEdit").value, "utf-8", () => { + document.getElementById("fedit-status").innerHTML = "File saved."; + }); +}; + window.writeSettingsFile = () => { window.settings = { shell: document.getElementById("settingsEditor-shell").value, + shellArgs: document.getElementById("settingsEditor-shellArgs").value, cwd: document.getElementById("settingsEditor-cwd").value, env: document.getElementById("settingsEditor-env").value, + username: document.getElementById("settingsEditor-username").value, keyboard: document.getElementById("settingsEditor-keyboard").value, theme: document.getElementById("settingsEditor-theme").value, + termFontSize: Number(document.getElementById("settingsEditor-termFontSize").value), audio: (document.getElementById("settingsEditor-audio").value === "true"), - extraAudio: (document.getElementById("settingsEditor-extraAudio").value === "true"), + audioVolume: Number(document.getElementById("settingsEditor-audioVolume").value), + disableFeedbackAudio: (document.getElementById("settingsEditor-disableFeedbackAudio").value === "true"), pingAddr: document.getElementById("settingsEditor-pingAddr").value, + clockHours: Number(document.getElementById("settingsEditor-clockHours").value), port: Number(document.getElementById("settingsEditor-port").value), monitor: Number(document.getElementById("settingsEditor-monitor").value), nointro: (document.getElementById("settingsEditor-nointro").value === "true"), + nocursor: (document.getElementById("settingsEditor-nocursor").value === "true"), iface: document.getElementById("settingsEditor-iface").value, allowWindowed: (document.getElementById("settingsEditor-allowWindowed").value === "true"), - excludeSelfFromToplist: (document.getElementById("settingsEditor-excludeSelfFromToplist").value === "true"), + forceFullscreen: window.settings.forceFullscreen, + keepGeometry: (document.getElementById("settingsEditor-keepGeometry").value === "true"), + excludeThreadsFromToplist: (document.getElementById("settingsEditor-excludeThreadsFromToplist").value === "true"), + hideDotfiles: (document.getElementById("settingsEditor-hideDotfiles").value === "true"), + fsListView: (document.getElementById("settingsEditor-fsListView").value === "true"), + experimentalGlobeFeatures: (document.getElementById("settingsEditor-experimentalGlobeFeatures").value === "true"), experimentalFeatures: (document.getElementById("settingsEditor-experimentalFeatures").value === "true") }; @@ -699,94 +859,225 @@ window.writeSettingsFile = () => { document.getElementById("settingsEditorStatus").innerText = "New values written to settings.json file at "+new Date().toTimeString(); }; -// Global keyboard shortcuts -const globalShortcut = electron.remote.globalShortcut; -globalShortcut.unregisterAll(); +window.toggleFullScreen = () => { + let useFullscreen = (electronWin.isFullScreen() ? false : true); + electronWin.setFullScreen(useFullscreen); -function registerKeyboardShortcuts() { - // Open inspector - globalShortcut.register("CommandOrControl+Shift+i", () => { - electron.remote.getCurrentWindow().webContents.toggleDevTools(); + //Update settings + window.lastWindowState["useFullscreen"] = useFullscreen; + + fs.writeFileSync(lastWindowStateFile, JSON.stringify(window.lastWindowState, "", 4)); +}; + +// Display available keyboard shortcuts and custom shortcuts helper +window.openShortcutsHelp = () => { + if (document.getElementById("settingsEditor")) return; + + const shortcutsDefinition = { + "COPY": "Copy selected buffer from the terminal.", + "PASTE": "Paste system clipboard to the terminal.", + "NEXT_TAB": "Switch to the next opened terminal tab (left to right order).", + "PREVIOUS_TAB": "Switch to the previous opened terminal tab (right to left order).", + "TAB_X": "Switch to terminal tab X, or create it if it hasn't been opened yet.", + "SETTINGS": "Open the settings editor.", + "SHORTCUTS": "List and edit available keyboard shortcuts.", + "FUZZY_SEARCH": "Search for entries in the current working directory.", + "FS_LIST_VIEW": "Toggle between list and grid view in the file browser.", + "FS_DOTFILES": "Toggle hidden files and directories in the file browser.", + "KB_PASSMODE": "Toggle the on-screen keyboard's \"Password Mode\", which allows you to safely
type sensitive information even if your screen might be recorded (disable visual input feedback).", + "DEV_DEBUG": "Open Chromium Dev Tools, for debugging purposes.", + "DEV_RELOAD": "Trigger front-end hot reload." + }; + + let appList = ""; + window.shortcuts.filter(e => e.type === "app").forEach(cut => { + let action = (cut.action.startsWith("TAB_")) ? "TAB_X" : cut.action; + + appList += ` + ${(cut.enabled) ? 'YES' : 'NO'} + + ${shortcutsDefinition[action]} + `; }); - // Open settings - globalShortcut.register("CommandOrControl+Shift+s", () => { - if (!document.getElementById("settingsEditor")) { - window.openSettings(); - } + let customList = ""; + window.shortcuts.filter(e => e.type === "shell").forEach(cut => { + customList += ` + ${(cut.enabled) ? 'YES' : 'NO'} + + + + + + + `; + }); + + window.keyboard.detach(); + new Modal({ + type: "custom", + title: `Available Keyboard Shortcuts (v${electron.remote.app.getVersion()})`, + html: `
Using either the on-screen or a physical keyboard, you can use the following shortcuts:
+
+ Emulator shortcuts + + + + + + + ${appList} +
EnabledTriggerAction
+
+
+
+ Custom command shortcuts + + + + + + + ${customList} +
EnabledTriggerCommand
+
+
`, + buttons: [ + {label: "Open Shortcuts File", action:`electron.shell.openPath('${shortcutsFile}');electronWin.minimize();`}, + {label: "Reload UI", action: "window.location.reload(true);"}, + ] + }, () => { + window.keyboard.attach(); + window.term[window.currentTerm].term.focus(); }); - // Copy and paste shortcuts + let wrap1 = document.getElementById('shortcutsHelpAccordeon1'); + let wrap2 = document.getElementById('shortcutsHelpAccordeon2'); - if (process.platform === "darwin") { - // See #342, we have an actual available key on macOS to do this - globalShortcut.register("Command+C", () => { - window.term[window.currentTerm].clipboard.copy(); - }); - globalShortcut.register("Command+V", () => { - window.term[window.currentTerm].clipboard.paste(); - }); - } else { - // Use Ctrl+shift on other OSs - globalShortcut.register("Ctrl+Shift+C", () => { + wrap1.addEventListener('toggle', e => { + wrap2.open = !wrap1.open; + }); + + wrap2.addEventListener('toggle', e => { + wrap1.open = !wrap2.open; + }); +}; + +window.useAppShortcut = action => { + switch(action) { + case "COPY": window.term[window.currentTerm].clipboard.copy(); - }); - globalShortcut.register("Ctrl+Shift+V", () => { + return true; + case "PASTE": window.term[window.currentTerm].clipboard.paste(); - }); + return true; + case "NEXT_TAB": + if (window.term[window.currentTerm+1]) { + window.focusShellTab(window.currentTerm+1); + } else if (window.term[window.currentTerm+2]) { + window.focusShellTab(window.currentTerm+2); + } else if (window.term[window.currentTerm+3]) { + window.focusShellTab(window.currentTerm+3); + } else if (window.term[window.currentTerm+4]) { + window.focusShellTab(window.currentTerm+4); + } else { + window.focusShellTab(0); + } + return true; + case "PREVIOUS_TAB": + let i = window.currentTerm || 4; + if (window.term[i] && i !== window.currentTerm) { + window.focusShellTab(i); + } else if (window.term[i-1]) { + window.focusShellTab(i-1); + } else if (window.term[i-2]) { + window.focusShellTab(i-2); + } else if (window.term[i-3]) { + window.focusShellTab(i-3); + } else if (window.term[i-4]) { + window.focusShellTab(i-4); + } + return true; + case "TAB_1": + window.focusShellTab(0); + return true; + case "TAB_2": + window.focusShellTab(1); + return true; + case "TAB_3": + window.focusShellTab(2); + return true; + case "TAB_4": + window.focusShellTab(3); + return true; + case "TAB_5": + window.focusShellTab(4); + return true; + case "SETTINGS": + window.openSettings(); + return true; + case "SHORTCUTS": + window.openShortcutsHelp(); + return true; + case "FUZZY_SEARCH": + window.activeFuzzyFinder = new FuzzyFinder(); + return true; + case "FS_LIST_VIEW": + window.fsDisp.toggleListview(); + return true; + case "FS_DOTFILES": + window.fsDisp.toggleHidedotfiles(); + return true; + case "KB_PASSMODE": + window.keyboard.togglePasswordMode(); + return true; + case "DEV_DEBUG": + electron.remote.getCurrentWindow().webContents.toggleDevTools(); + return true; + case "DEV_RELOAD": + window.location.reload(true); + return true; + default: + console.warn(`Unknown "${action}" app shortcut action`); + return false; } +}; - // Switch tabs - // Next - globalShortcut.register("CommandOrControl+Tab", () => { - if (window.term[window.currentTerm+1]) { - window.focusShellTab(window.currentTerm+1); - } else if (window.term[window.currentTerm+2]) { - window.focusShellTab(window.currentTerm+2); - } else if (window.term[window.currentTerm+3]) { - window.focusShellTab(window.currentTerm+3); - } else if (window.term[window.currentTerm+4]) { - window.focusShellTab(window.currentTerm+4); +// Global keyboard shortcuts +const globalShortcut = electron.remote.globalShortcut; +globalShortcut.unregisterAll(); + +window.registerKeyboardShortcuts = () => { + window.shortcuts.forEach(cut => { + if (!cut.enabled) return; + + if (cut.type === "app") { + if (cut.action === "TAB_X") { + for (let i = 1; i <= 5; i++) { + let trigger = cut.trigger.replace("X", i); + let dfn = () => { window.useAppShortcut(`TAB_${i}`) }; + globalShortcut.register(trigger, dfn); + } + } else { + globalShortcut.register(cut.trigger, () => { + window.useAppShortcut(cut.action); + }); + } + } else if (cut.type === "shell") { + globalShortcut.register(cut.trigger, () => { + let fn = (cut.linebreak) ? "writelr" : "write"; + window.term[window.currentTerm][fn](cut.action); + }); } else { - window.focusShellTab(0); - } - }); - // Previous - globalShortcut.register("CommandOrControl+Shift+Tab", () => { - if (window.term[window.currentTerm-1]) { - window.focusShellTab(window.currentTerm-1); - } else if (window.term[window.currentTerm-2]) { - window.focusShellTab(window.currentTerm-2); - } else if (window.term[window.currentTerm-3]) { - window.focusShellTab(window.currentTerm-3); - } else if (window.term[window.currentTerm-4]) { - window.focusShellTab(window.currentTerm-4); - } else if (window.term[4]){ - window.focusShellTab(4); + console.warn(`${cut.trigger} has unknown type`); } }); - // By tab number - globalShortcut.register("CommandOrControl+1", () => { - window.focusShellTab(0); - }); - globalShortcut.register("CommandOrControl+2", () => { - window.focusShellTab(1); - }); - globalShortcut.register("CommandOrControl+3", () => { - window.focusShellTab(2); - }); - globalShortcut.register("CommandOrControl+4", () => { - window.focusShellTab(3); - }); - globalShortcut.register("CommandOrControl+5", () => { - window.focusShellTab(4); - }); -} -registerKeyboardShortcuts(); +}; +window.registerKeyboardShortcuts(); // See #361 window.addEventListener("focus", () => { - registerKeyboardShortcuts(); + window.registerKeyboardShortcuts(); }); window.addEventListener("blur", () => { @@ -794,10 +1085,13 @@ window.addEventListener("blur", () => { }); // Prevent showing menu, exiting fullscreen or app with keyboard shortcuts -window.addEventListener("keydown", e => { +document.addEventListener("keydown", e => { if (e.key === "Alt") { e.preventDefault(); } + if (e.code.startsWith("Alt") && e.ctrlKey && e.shiftKey) { + e.preventDefault(); + } if (e.key === "F11" && !settings.allowWindowed) { e.preventDefault(); } @@ -811,13 +1105,13 @@ window.addEventListener("keydown", e => { // Fix #265 window.addEventListener("keyup", e => { - if (e.key === "F4" && e.altKey === true) { + if (require("os").platform() === "win32" && e.key === "F4" && e.altKey === true) { electron.remote.app.quit(); } }); // Fix double-tap zoom on touchscreens -require('electron').webFrame.setVisualZoomLevelLimits(1, 1); +electron.webFrame.setVisualZoomLevelLimits(1, 1); // Resize terminal with window window.onresize = () => { @@ -827,3 +1121,32 @@ window.onresize = () => { } } }; + +// See #413 +window.resizeTimeout = null; +let electronWin = electron.remote.getCurrentWindow(); +electronWin.on("resize", () => { + if (settings.keepGeometry === false) return; + clearTimeout(window.resizeTimeout); + window.resizeTimeout = setTimeout(() => { + let win = electron.remote.getCurrentWindow(); + if (win.isFullScreen()) return false; + if (win.isMaximized()) { + win.unmaximize(); + win.setFullScreen(true); + return false; + } + + let size = win.getSize(); + + if (size[0] >= size[1]) { + win.setSize(size[0], parseInt(size[0] * 9 / 16)); + } else { + win.setSize(size[1], parseInt(size[1] * 9 / 16)); + } + }, 100); +}); + +electronWin.on("leave-full-screen", () => { + electron.remote.getCurrentWindow().setSize(960, 540); +}); diff --git a/src/assets/audio/alarm.wav b/src/assets/audio/alarm.wav old mode 100755 new mode 100644 index 2aac4836a..30f7a4aa7 Binary files a/src/assets/audio/alarm.wav and b/src/assets/audio/alarm.wav differ diff --git a/src/assets/audio/beep1.wav b/src/assets/audio/beep1.wav deleted file mode 100644 index a1c428365..000000000 Binary files a/src/assets/audio/beep1.wav and /dev/null differ diff --git a/src/assets/audio/beep2.wav b/src/assets/audio/beep2.wav deleted file mode 100755 index 0c18121f4..000000000 Binary files a/src/assets/audio/beep2.wav and /dev/null differ diff --git a/src/assets/audio/beep3.wav b/src/assets/audio/beep3.wav deleted file mode 100644 index 7969e0730..000000000 Binary files a/src/assets/audio/beep3.wav and /dev/null differ diff --git a/src/assets/audio/beep4.wav b/src/assets/audio/beep4.wav deleted file mode 100755 index beb6371b1..000000000 Binary files a/src/assets/audio/beep4.wav and /dev/null differ diff --git a/src/assets/audio/beep5.wav b/src/assets/audio/beep5.wav deleted file mode 100755 index beb6371b1..000000000 Binary files a/src/assets/audio/beep5.wav and /dev/null differ diff --git a/src/assets/audio/denied.wav b/src/assets/audio/denied.wav new file mode 100644 index 000000000..223f6b96f Binary files /dev/null and b/src/assets/audio/denied.wav differ diff --git a/src/assets/audio/dismiss.wav b/src/assets/audio/dismiss.wav deleted file mode 100755 index cf9261e75..000000000 Binary files a/src/assets/audio/dismiss.wav and /dev/null differ diff --git a/src/assets/audio/error.wav b/src/assets/audio/error.wav new file mode 100644 index 000000000..841104758 Binary files /dev/null and b/src/assets/audio/error.wav differ diff --git a/src/assets/audio/expand.wav b/src/assets/audio/expand.wav new file mode 100644 index 000000000..644e90eb9 Binary files /dev/null and b/src/assets/audio/expand.wav differ diff --git a/src/assets/audio/folder.wav b/src/assets/audio/folder.wav new file mode 100644 index 000000000..04386e9e7 Binary files /dev/null and b/src/assets/audio/folder.wav differ diff --git a/src/assets/audio/granted.wav b/src/assets/audio/granted.wav new file mode 100644 index 000000000..2afebbd78 Binary files /dev/null and b/src/assets/audio/granted.wav differ diff --git a/src/assets/audio/info.wav b/src/assets/audio/info.wav old mode 100755 new mode 100644 index 2be82bc69..ccdf9285a Binary files a/src/assets/audio/info.wav and b/src/assets/audio/info.wav differ diff --git a/src/assets/audio/intro.wav b/src/assets/audio/intro.wav deleted file mode 100755 index f523651d0..000000000 Binary files a/src/assets/audio/intro.wav and /dev/null differ diff --git a/src/assets/audio/keyboard.wav b/src/assets/audio/keyboard.wav new file mode 100644 index 000000000..8d2236e5d Binary files /dev/null and b/src/assets/audio/keyboard.wav differ diff --git a/src/assets/audio/panels.wav b/src/assets/audio/panels.wav new file mode 100644 index 000000000..33a936c0d Binary files /dev/null and b/src/assets/audio/panels.wav differ diff --git a/src/assets/audio/ping.wav b/src/assets/audio/ping.wav deleted file mode 100755 index 03dc461af..000000000 Binary files a/src/assets/audio/ping.wav and /dev/null differ diff --git a/src/assets/audio/pingFailed.wav b/src/assets/audio/pingFailed.wav deleted file mode 100644 index 237179deb..000000000 Binary files a/src/assets/audio/pingFailed.wav and /dev/null differ diff --git a/src/assets/audio/scan.wav b/src/assets/audio/scan.wav old mode 100755 new mode 100644 index fbfdc56ea..01d98741d Binary files a/src/assets/audio/scan.wav and b/src/assets/audio/scan.wav differ diff --git a/src/assets/audio/stdin.wav b/src/assets/audio/stdin.wav new file mode 100644 index 000000000..da709883b Binary files /dev/null and b/src/assets/audio/stdin.wav differ diff --git a/src/assets/audio/stdout.wav b/src/assets/audio/stdout.wav new file mode 100644 index 000000000..9c1ee31a6 Binary files /dev/null and b/src/assets/audio/stdout.wav differ diff --git a/src/assets/audio/theme.wav b/src/assets/audio/theme.wav new file mode 100644 index 000000000..08a522a34 Binary files /dev/null and b/src/assets/audio/theme.wav differ diff --git a/src/assets/css/boot_screen.css b/src/assets/css/boot_screen.css index f16d08aa8..c79b4ddcd 100644 --- a/src/assets/css/boot_screen.css +++ b/src/assets/css/boot_screen.css @@ -30,4 +30,77 @@ section#boot_screen h1 { padding-right: 2vh; padding-left: 1.5vh; background-color: transparent; + + opacity: 0; + animation-name: fadeInTitle; + animation-duration: 300ms; + animation-timing-function: linear; + animation-fill-mode: forwards; + animation-iteration-count: 1; +} + +section#boot_screen h1.glitch { + border: none; + color: transparent; +} + +@keyframes fadeInTitle { + from { opacity: 0; } + to { opacity: 1; } +} + +section#boot_screen h1::before { + content: "eDEX-UI"; + display: block; + transform: translateY(100%) translateX(-2%); + clip-path: polygon(100% 0%, 100% 40%, 0% 40%, 0% 0%); + color: rgba(var(--color_r), var(--color_g), var(--color_b), 0.8); + + animation-name: derezzer_top; + animation-duration: 50ms; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate-reverse; + animation-play-state: paused; + height: 0px; + opacity: 0; +} + +section#boot_screen h1.glitch::before { + height: auto; + opacity: 1; + animation-play-state: running; +} + +@keyframes derezzer_top { + from {transform: translateY(100%) translateX(-1%);} + to {transform: translateY(100%) translateX(-5%);} +} + +section#boot_screen h1::after { + content: "eDEX-UI"; + display: block; + transform: translateY(-100%) translateX(2%); + clip-path: polygon(100% 40%, 100% 100%, 0% 100%, 0% 40%); + color: rgba(var(--color_r), var(--color_g), var(--color_b), 0.9); + + animation-name: derezzer_bottom; + animation-duration: 50ms; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate-reverse; + animation-play-state: paused; + height: 0px; + opacity: 0; +} + +section#boot_screen h1.glitch::after { + height: auto; + opacity: 1; + animation-play-state: running; +} + +@keyframes derezzer_bottom { + from {transform: translateY(-100%) translateX(1%);} + to {transform: translateY(-100%) translateX(3%);} } diff --git a/src/assets/css/extra_ratios.css b/src/assets/css/extra_ratios.css index 70588e11e..62004708c 100644 --- a/src/assets/css/extra_ratios.css +++ b/src/assets/css/extra_ratios.css @@ -86,7 +86,7 @@ } } -@media (aspect-ratio: 5/4) { +@media (aspect-ratio: 5/4), (aspect-ratio: 4/3) { section#filesystem { display: none; } diff --git a/src/assets/css/filesystem.css b/src/assets/css/filesystem.css index 411357a65..d8e198f0c 100644 --- a/src/assets/css/filesystem.css +++ b/src/assets/css/filesystem.css @@ -3,6 +3,7 @@ section#filesystem { top: -0.925vh; width: 43vw; height: 30vh; + margin-right: 0.5vw; opacity: 0; transition: opacity .5s cubic-bezier(0.4, 0, 1, 1); @@ -13,6 +14,10 @@ section#filesystem > h3.title { padding-right: 0; } +section#filesystem.hideDotfiles > h3.title > p#fs_disp_title_dir::before { + content: "dotfiles hidden - "; +} + h2#fs_disp_error { font-weight: bold; text-align: center; @@ -67,10 +72,20 @@ div#fs_disp_container > *.hidden { opacity: 0.7; } +section#filesystem.hideDotfiles > div#fs_disp_container > *.hidden { + display: none; +} + div#fs_disp_container > * > svg { width: 5vh; } +/* Add padding around non-edex icons */ +div#fs_disp_container > * > svg:not([viewBox="0 0 24 24"]) { + padding: 0.5vh; + box-sizing: border-box; +} + div#fs_disp_container > * > h3 { font-size: 1.3vh; max-width: 100%; @@ -83,18 +98,69 @@ div#fs_disp_container > * > h3 { overflow: hidden; } +section#filesystem:not(.list-view) > div#fs_disp_container > div > h4 { + display: none; +} + +div#fs_disp_container.disks > div > h4 { + display: none; +} + +section#filesystem.list-view > div#fs_disp_container { + grid-template-columns: 1fr; + grid-auto-rows: 2vh; + grid-gap: 0.5vh; + padding-right: 0.5vh; +} + +section#filesystem.list-view > div#fs_disp_container:not(.disks) > * { + width: auto; + height: 2vh; + flex-direction: row; + justify-content: flex-start; +} + +section#filesystem.list-view > div#fs_disp_container:not(.disks) > div > svg { + height: 2vh; + margin: 0; + width: auto; + margin-right: 2%; +} + +section#filesystem.list-view > div#fs_disp_container:not(.disks) > div > h3 { + max-height: unset; + padding-top: .2vh; + text-align: left; + width: 32%; +} + +section#filesystem.list-view > div#fs_disp_container:not(.disks) > div > h4 { + font-size: 1.3vh; + font-weight: normal; + padding-top: .2vh; + text-align: right; + overflow: hidden; +} + +section#filesystem.list-view > div#fs_disp_container:not(.disks) > div > h4:nth-of-type(1) { width: 15%; } + +section#filesystem.list-view > div#fs_disp_container:not(.disks) > div > h4:nth-of-type(2) { width: 10%; } + +section#filesystem.list-view > div#fs_disp_container:not(.disks) > div > h4:nth-of-type(3) { width: 38%; } + div#fs_disp_container.disks { display: flex; align-items: center; justify-content: space-evenly; border: 0.4vh double rgba(var(--color_r), var(--color_g), var(--color_b), 0.8); + flex-wrap: wrap; } div#fs_disp_container.disks > * { width: auto; max-width: 8vw; } -div.fs_disp_showDisks > svg, div.fs_disp_up > svg { +section#filesystem:not(.list-view) div.fs_disp_showDisks > svg, section#filesystem:not(.list-view) div.fs_disp_up > svg { width: 4vh !important; margin-bottom: 0.5vh; margin-top: 0.5vh; @@ -172,6 +238,16 @@ div#fs_space_bar > progress::after { background: rgba(var(--color_r), var(--color_g), var(--color_b), 0.8); } +div#fs_space_bar > progress:not([value])::after { + animation: space_bar_working 1.7s ease-in-out alternate infinite; + background: rgba(var(--color_r), var(--color_g), var(--color_b), 1); +} + +@keyframes space_bar_working { + 0% { right: 0%; } + 100% { right: 70%; } +} + div#fs_space_bar > progress::-webkit-progress-bar { background: rgba(var(--color_r), var(--color_g), var(--color_b), 0.4); height: .7vh; @@ -186,3 +262,27 @@ div#fs_space_bar > progress::-webkit-progress-value { bottom: .7vh; transition: width .5s cubic-bezier(0.4, 0, 1, 1); } + +.pdf_container { + text-align: center; + background: var(--color_light_black); + color: rgb(var(--color_r), var(--color_g), var(--color_b)); + border: 0.15vh solid rgb(var(--color_r), var(--color_g), var(--color_b)); + padding: 0.4vh 0.2vh; + font-size: 1.4vh; + resize: none; + overflow: auto; + width: 50vw; + height: 50vh; +} + +.pdf_options button { + width: 40px; + height: 40px; + padding: 5px; +} + +.pdf_options span { + margin-left: 1.5vh; + font-size: 24px; +} \ No newline at end of file diff --git a/src/assets/css/keyboard.css b/src/assets/css/keyboard.css index 008ff581e..73b1dfbc4 100644 --- a/src/assets/css/keyboard.css +++ b/src/assets/css/keyboard.css @@ -2,11 +2,16 @@ section#keyboard { display: flex; flex-direction: column; align-items: center; - width: 56vw; + width: 55.5vw; position: relative; top: -0.925vh; } +section#keyboard[data-password-mode="true"] { + opacity: 0.5 !important; + cursor: none !important; +} + div.keyboard_row { display: flex; flex-direction: row; @@ -65,12 +70,12 @@ div.keyboard_key { cursor: pointer; } -div.keyboard_key:active, div.keyboard_key.active { +section#keyboard:not([data-password-mode="true"]) div.keyboard_key:active, section#keyboard:not([data-password-mode="true"]) div.keyboard_key.active { border: 0.18vh solid rgba(var(--color_r), var(--color_g), var(--color_b), 0.0); background-color: rgba(var(--color_r), var(--color_g), var(--color_b), 1); } -div.keyboard_key.blink { +section#keyboard:not([data-password-mode="true"]) div.keyboard_key.blink { animation-name: blink; animation-duration: .5s; animation-iteration-count: infinite; @@ -104,6 +109,14 @@ div.keyboard_row:last-child > .keyboard_key:nth-last-child(-n+3) > * { font-size: 2.4vh; } +div.keyboard_key > svg { + width: calc(100% - 1vh); + height: calc(100% - 1vh); + top: .5vh !important; + opacity: 1 !important; + fill: rgb(var(--color_r), var(--color_g), var(--color_b)); +} + div.keyboard_key > *:not(h1) { margin: 0vh; font-size: 1.67vh; diff --git a/src/assets/css/main.css b/src/assets/css/main.css index 36231bcdc..8d1b33b89 100644 --- a/src/assets/css/main.css +++ b/src/assets/css/main.css @@ -6,7 +6,6 @@ html, body { overflow: hidden; } body { - cursor: default !important; user-select: none !important; padding-top: 1.85vh; color: rgb(var(--color_r), var(--color_g), var(--color_b)); @@ -51,6 +50,7 @@ section > h3.title:first-child > p { } section > h3.title:first-child > p:last-child { text-align: right; + white-space: nowrap; } section > h3.title:first-child::before { content: ""; diff --git a/src/assets/css/main_shell.css b/src/assets/css/main_shell.css index 5709f881b..18d8b4bef 100644 --- a/src/assets/css/main_shell.css +++ b/src/assets/css/main_shell.css @@ -2,8 +2,12 @@ section#main_shell { width: 65%; height: 60.3%; padding: 0.74vh; - border: 0.18vh solid rgba(var(--color_r), var(--color_g), var(--color_b), 0.5); - border-radius: 0.278vh; + /* border: 0.18vh solid rgba(var(--color_r), var(--color_g), var(--color_b), 0.5); */ + /* border-radius: 0.278vh; */ + + --aug-border: 0.18vh; + --aug-border-bg: rgb(var(--color_r), var(--color_g), var(--color_b)); + --aug-border-opacity: 0.5; display: flex; flex-direction: column; @@ -11,7 +15,7 @@ section#main_shell { justify-content: flex-start; overflow: hidden; - transition: width .5s cubic-bezier(0.4, 0, 1, 1), height .5s cubic-bezier(0.4, 0, 1, 1); + transition: width .5s cubic-bezier(0.85, 0.5, 0.85, 0.5), height .5s cubic-bezier(0.85, 0.5, 0.85, 0.5); } h1#main_shell_greeting { @@ -68,6 +72,11 @@ ul#main_shell_tabs > li { box-sizing: border-box; background: var(--color_light_black); + transform: skewX(35deg); +} +ul#main_shell_tabs > li > p { + margin: 0; + transform: skewX(-35deg); } ul#main_shell_tabs > li:not(:first-child) { border-left: 0.18vh solid rgba(var(--color_r), var(--color_g), var(--color_b), 0.5); @@ -77,6 +86,8 @@ ul#main_shell_tabs > li.active { background: rgb(var(--color_r), var(--color_g), var(--color_b)); color: var(--color_light_black); font-weight: bold; + transform: skewX(35deg) scale(1.2); + z-index: -1; } div#main_shell_innercontainer, div#main_shell_innercontainer pre { @@ -118,6 +129,7 @@ div#main_shell_innercontainer pre#terminal4 { left: 0; top: 0; bottom: 0; + padding-bottom: 10px; } .xterm { diff --git a/src/assets/css/media_player.css b/src/assets/css/media_player.css new file mode 100644 index 000000000..7eb9dbebc --- /dev/null +++ b/src/assets/css/media_player.css @@ -0,0 +1,97 @@ +.media_container[data-fullscreen=true] .media { + height: 95%; + width: 100%; + max-width: none; + max-height: none; +} + +.media_controls { + border: 2px solid rgb(var(--color_r), var(--color_g), var(--color_b)); + background: var(--color_light_black); +} + +.media_controls>div { + text-align: center; + display: inline-block; + vertical-align: middle; + padding-left: 0.1em; + padding-right: 0.1em; +} + +.media_controls .media_button { + font-size: 1.5em; + height: 1em; + width: 1em; +} + +.media_controls .media_button:hover { + cursor: pointer; + background: rgba(var(--color_r), var(--color_g), var(--color_b), 0.5); +} + +.media_controls .media_time { + margin-right: 2vw; + width: 4vw; +} + +.media_controls .volume_icon { + font-size: 1.5em; + height: 1em; + width: 1em; +} + +.media_controls .volume { + height: 2vh; + z-index: 100; + width: 5vw; + cursor: pointer; +} + +.media_controls .volume_bkg { + position: absolute; + border-style: solid; + border-width: 0 0 2vh 5vw; + border-color: transparent transparent rgba(var(--color_r), var(--color_g), var(--color_b), 0.7) transparent; +} + +.media_controls .volume_bar { + position: absolute; + clip: rect(0px, 5vw, 2vh, 0px); + width: 5vw; + border-style: solid; + border-width: 0 0 2vh 5vw; + border-color: transparent transparent rgb(var(--color_r), var(--color_g), var(--color_b)) transparent; +} + +.fs { + float: right; +} + +.media_controls .progress_container { + min-width: 20vw; +} + +.media_controls .progress { + display: block; + cursor: pointer; + width: 100%; + background-color: rgba(var(--color_r), var(--color_g), var(--color_b), 0.5); + height: 5px; +} + +.media_controls .progress_bar { + width: 0%; + height: 100%; + display: block; + background-color: rgb(var(--color_r), var(--color_g), var(--color_b)); +} + +.fullscreen_hidden { + visibility: hidden; + opacity: 0; + transition: visibility 0s 2s, opacity 2s linear; +} + +.volume_icon:hover { + cursor: pointer; +} diff --git a/src/assets/css/mod_clipboardButtons.css b/src/assets/css/mod_clipboardButtons.css deleted file mode 100644 index f662bb976..000000000 --- a/src/assets/css/mod_clipboardButtons.css +++ /dev/null @@ -1,63 +0,0 @@ -div#mod_clipboardButtons { - border-top: 0.092vh solid rgba(var(--color_r), var(--color_g), var(--color_b), 0.3); - font-family: var(--font_main_light); - letter-spacing: 0.092vh; - padding: 0.645vh 0vh; - display: flex; -} - -div#mod_clipboardButtons::before { - content: ""; - border-left: 0.092vh solid rgba(var(--color_r), var(--color_g), var(--color_b), 0.3); - align-self: flex-start; - position: relative; - left: -0.092vh; - top: -1.111vh; - height: 0.833vh; -} - -div#mod_clipboardButtons::after { - content: ""; - border-right: 0.092vh solid rgba(var(--color_r), var(--color_g), var(--color_b), 0.3); - position: relative; - right: -0.092vh; - top: -1.111vh; - height: 0.833vh; -} - -div#mod_clipboardButtons_inner { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-evenly; - flex-wrap: wrap; - width: 100%; -} - -div#mod_clipboardButtons h1 { - font-size: 1.48vh; - margin: 0vh; - margin-bottom: -1vh; - width: 98%; -} - -div#mod_clipboardButtons_inner div { - margin-top: 1.5vh; - background: rgba(var(--color_r), var(--color_g), var(--color_b), 0.1); - height: 3.2vh; - width: 42%; - display: flex; - align-items: center; - justify-content: center; - box-sizing: border-box; - border: 2px solid rgba(var(--color_r), var(--color_g), var(--color_b), 0.5); - border-radius: 2px; - font-family: var(--font_main); - font-weight: bold; - font-size: 1.5vh; - cursor: pointer; -} - -div#mod_clipboardButtons_inner div:active { - background: rgba(var(--color_r), var(--color_g), var(--color_b), 0.8); -} diff --git a/src/assets/css/mod_clock.css b/src/assets/css/mod_clock.css index 427a308cd..964277ba9 100644 --- a/src/assets/css/mod_clock.css +++ b/src/assets/css/mod_clock.css @@ -44,3 +44,7 @@ div#mod_clock em { margin: 0vh 0.3vh; width: 2.5vh; } + +div#mod_clock.mod_clock_twelve h1 span:last-child { + font-size: 1.5vh; +} diff --git a/src/assets/css/mod_fuzzyFinder.css b/src/assets/css/mod_fuzzyFinder.css new file mode 100644 index 000000000..dc4af21a4 --- /dev/null +++ b/src/assets/css/mod_fuzzyFinder.css @@ -0,0 +1,37 @@ +input#fuzzyFinder { + width: 100%; + background: var(--color_light_black); + color: rgb(var(--color_r), var(--color_g), var(--color_b)); + border: 0.15vh solid rgb(var(--color_r), var(--color_g), var(--color_b)); + padding: 0.4vh 0.2vh; + font-size: 1.4vh; + box-sizing: border-box; + margin-bottom: 1.5vh; +} + +input#fuzzyFinder:active, input#fuzzyFinder:focus { + outline: none !important; + background: rgb(var(--color_r), var(--color_g), var(--color_b)); + color: var(--color_light_black); +} + +ul#fuzzyFinder-results { + padding: 0; +} + +ul#fuzzyFinder-results li { + display: block; + min-width: 50vw; + font-family: var(--font_main); + background: var(--color_light_black); + color: rgb(var(--color_r), var(--color_g), var(--color_b)); + height: 1.6vh; + font-size: 1.5vh; + padding: 0.2vh 0.4vh; + padding-top: 0.4vh; +} + +ul#fuzzyFinder-results li.fuzzyFinderMatchSelected { + background: rgba(var(--color_r), var(--color_g), var(--color_b), 0.75); + color: var(--color_light_black); +} diff --git a/src/assets/css/mod_hardwareInspector.css b/src/assets/css/mod_hardwareInspector.css new file mode 100644 index 000000000..84333e366 --- /dev/null +++ b/src/assets/css/mod_hardwareInspector.css @@ -0,0 +1,49 @@ +div#mod_hardwareInspector { + border-top: 0.092vh solid rgba(var(--color_r), var(--color_g), var(--color_b), 0.3); + font-family: var(--font_main_light); + letter-spacing: 0.092vh; + padding: 0.645vh 0vh; + display: flex; +} + +div#mod_hardwareInspector::before { + content: ""; + border-left: 0.092vh solid rgba(var(--color_r), var(--color_g), var(--color_b), 0.3); + align-self: flex-start; + position: relative; + left: -0.092vh; + top: -1.111vh; + height: 0.833vh; +} + +div#mod_hardwareInspector::after { + content: ""; + border-right: 0.092vh solid rgba(var(--color_r), var(--color_g), var(--color_b), 0.3); + position: relative; + right: -0.092vh; + top: -1.111vh; + height: 0.833vh; +} + +div#mod_hardwareInspector_inner { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-evenly; + flex-wrap: wrap; + width: 100%; +} + +div#mod_hardwareInspector_inner > div { + text-align: left; +} + +div#mod_hardwareInspector_inner > div > * { + font-size: 1.3vh; + line-height: 1.5vh; + margin: 0vh; +} + +div#mod_hardwareInspector_inner > div > h2 { + opacity: 0.5; +} diff --git a/src/assets/css/mod_processlist.css b/src/assets/css/mod_processlist.css new file mode 100644 index 000000000..de9b29bb3 --- /dev/null +++ b/src/assets/css/mod_processlist.css @@ -0,0 +1,52 @@ +table#processContainer { + display: block; + max-height: 60vh; + overflow: auto; +} + +table#processContainer td.header { + font-weight: bold; + background: rgba(var(--color_r), var(--color_g), var(--color_b), 0.6); + color: var(--color_light_black); + text-align: center; +} + +table#processContainer td.header:hover { + cursor: pointer; +} + +table#processContainer td.pid { + width: 5vw; +} + +table#processContainer td.name { + width: 12vw; +} + +table#processContainer td.user { + width: 7vw; +} + +table#processContainer td.cpu { + width: 3vw; + text-align: center; +} + +table#processContainer td.mem{ + width: 3vw; + text-align: center; + +} +table#processContainer td.state { + width: 6vw; + text-align: center; +} +table#processContainer td.started { + width: 11vw; + +} + +table#processContainer td.runtime { + width: 5vw; +} + diff --git a/src/assets/css/mod_ramwatcher.css b/src/assets/css/mod_ramwatcher.css index b279e0c11..cbe8caa3d 100644 --- a/src/assets/css/mod_ramwatcher.css +++ b/src/assets/css/mod_ramwatcher.css @@ -78,3 +78,50 @@ div.mod_ramwatcher_point.available { div.mod_ramwatcher_point.active { opacity: 1; } + +div#mod_ramwatcher_swapcontainer { + display: grid; + grid-template-columns: 15% 65% 20%; + padding-left: 0.5vh; + margin-bottom: 0.5vh; +} + +div#mod_ramwatcher_swapcontainer h1 { + font-size: 1.3vh; + line-height: 1.5vh; + margin: 0vh; + align-self: center; +} + +progress#mod_ramwatcher_swapbar { + width: 100%; + align-self: center; + -webkit-appearance: none; + border-right: .1vh solid rgba(var(--color_r), var(--color_g), var(--color_b), 0.8); +} + +progress#mod_ramwatcher_swapbar::-webkit-progress-bar { + background: rgba(var(--color_r), var(--color_g), var(--color_b), 0.4); + height: .25vh; + position: relative; + top: .55vh; +} + +progress#mod_ramwatcher_swapbar::-webkit-progress-value { + background: rgb(var(--color_r), var(--color_g), var(--color_b)); + height: .4vh; + transition: width .5s cubic-bezier(0.4, 0, 1, 1); + position: relative; + bottom: .4vh; +} + +h3#mod_ramwatcher_swaptext { + font-style: normal; + font-size: 1.3vh; + line-height: 1.5vh; + opacity: 0.5; + margin: 0vh; + white-space: nowrap; + align-self: center; + text-align: right; +} diff --git a/src/assets/css/mod_toplist.css b/src/assets/css/mod_toplist.css index 497dbbbe9..6bedf0ce9 100644 --- a/src/assets/css/mod_toplist.css +++ b/src/assets/css/mod_toplist.css @@ -17,6 +17,10 @@ div#mod_toplist::before { height: 0.833vh; } +div#mod_toplist:hover { + cursor: pointer; +} + div#mod_toplist::after { content: ""; border-right: 0.092vh solid rgba(var(--color_r), var(--color_g), var(--color_b), 0.3); diff --git a/src/assets/css/modal.css b/src/assets/css/modal.css index 0f82c07e7..63e469796 100644 --- a/src/assets/css/modal.css +++ b/src/assets/css/modal.css @@ -1,9 +1,8 @@ div.modal_popup { position: absolute; - min-width: 30vw; + min-width: 38vh; background: var(--color_light_black); - border-color: rgb(var(--color_r), var(--color_g), var(--color_b));; - border-radius: 0.278vh; + border-color: rgb(var(--color_r), var(--color_g), var(--color_b)); padding: 2vh; padding-bottom: 0vh; display: flex; @@ -11,11 +10,34 @@ div.modal_popup { align-items: flex-start; justify-content: center; cursor: default; + + --aug-border: 0.2vh; + --aug-border-bg: rgb(var(--color_r), var(--color_g), var(--color_b)); + --aug-inset: 5px; + --aug-inset-bg: var(--color_light_black); +} + +div.modal_popup.error { + --aug-bl-height: 3vh; + --aug-bl-width: 30%; + border-top: 0.2vh solid var(--color_red); + border-bottom: 0.2vh solid transparent; + padding-bottom: 0.2vh; +} +div.modal_popup.warning { + --aug-b-width: 20%; + --aug-b-origin-x: 30%; + border-top: 0.2vh solid var(--color_yellow); + border-bottom: 0.2vh solid transparent; + padding-bottom: 0.2vh; +} +div.modal_popup.info { + --aug-border: 0.2vh; } -div.modal_popup.error {border-width: 0.7vh; border-style: double;} -div.modal_popup.warning {border-width: 0.5vh; border-style: solid;} -div.modal_popup.info {border-width: 0.2vh; border-style: solid;} +div.modal_popup.focus { + z-index: 2500 !important; +} div.modal_popup.blink { border: none; @@ -84,28 +106,58 @@ div.modal_popup button { } div.modal_popup button:hover { - background: rgba(var(--color_r), var(--color_g), var(--color_b), 0.5) + background: rgba(var(--color_r), var(--color_g), var(--color_b), 0.5); } -/* Settings editor modal */ -table#settingsEditor, table#settingsEditor th, table#settingsEditor td { +div.modal_popup table, div.modal_popup table th, div.modal_popup table td { border: 0.15vh solid rgb(var(--color_r), var(--color_g), var(--color_b)); border-collapse: collapse; } -table#settingsEditor th, table#settingsEditor td { +div.modal_popup table th, div.modal_popup table td { padding: 0.3vh; } -table#settingsEditor th { +div.modal_popup table th { font-size: 2vh; + background: rgba(var(--color_r), var(--color_g), var(--color_b), 0.6); + color: var(--color_light_black); } -table#settingsEditor td { +div.modal_popup table td { font-size: 1.7vh; } -table#settingsEditor td input { +div.modal_popup table#settingsEditor tbody { + display: block; + position: relative; + max-height: 60vh; + overflow: auto; +} + +div.modal_popup table#settingsEditor tbody tr:first-child { + position: sticky; + top: 0px; +} + +div.modal_popup table:not(#settingsEditor) td:first-child { + text-align: center; +} + +div.modal_popup textarea { + background: var(--color_light_black); + color: rgb(var(--color_r), var(--color_g), var(--color_b)); + border: 0.15vh solid rgb(var(--color_r), var(--color_g), var(--color_b)); + padding: 0.4vh 0.2vh; + font-size: 1.4vh; + resize: none; +} + +div.modal_popup textarea:active, div.modal_popup textarea:focus { + outline: none !important; +} + +div.modal_popup td input { width: 100%; background: var(--color_light_black); color: rgb(var(--color_r), var(--color_g), var(--color_b)); @@ -115,13 +167,22 @@ table#settingsEditor td input { box-sizing: border-box; } -table#settingsEditor td input:active, table#settingsEditor td input:focus { +div.modal_popup td input::placeholder { + color: rgb(var(--color_r), var(--color_g), var(--color_b)); + opacity: 0.7; +} + +div.modal_popup td input:active, div.modal_popup td input:focus { outline: none !important; background: rgb(var(--color_r), var(--color_g), var(--color_b)); color: var(--color_light_black); } -table#settingsEditor td select { +div.modal_popup td input:active::placeholder, div.modal_popup td input:focus::placeholder { + color: var(--color_light_black); +} + +div.modal_popup td select { cursor: pointer; width: 100%; background: var(--color_light_black); @@ -131,9 +192,60 @@ table#settingsEditor td select { font-size: 1.4vh; } +div.modal_popup summary { + font-size: 1.9vh; + font-weight: normal; + outline: none !important; + cursor: pointer; +} + +div.modal_popup summary+table { + margin-top: 1.5vh; +} + +/* Settings editor modal */ + h6#settingsEditorStatus { margin: 0; margin-top: 1vh; font-size: 1.5vh; font-style: italic; } + +/* Keyboard shortcuts modal */ + +table.shortcutsHelp td:nth-child(2) input { + border: none; +} + +table.shortcutsHelp td:first-child { + word-spacing: .3vh; + font-weight: bold; + padding: .8vh; +} + +table.shortcutsHelp td:nth-child(3) { + max-width: 40vw; +} + +details#shortcutsHelpAccordeon2 table td:nth-child(3) { + display: flex; + align-items: center; +} + +details#shortcutsHelpAccordeon2 table td:nth-child(3) input:first-child { + font-family: var(--font_mono); + min-width: 30vw; +} + +details#shortcutsHelpAccordeon2 table td:nth-child(3) input[type="checkbox"] { + width: auto; +} + +/* fsDisp media displayer */ + +.fsDisp_mediaDisp { + max-width: 50vw; + max-height: 50vh; + outline: none !important; +} diff --git a/src/assets/fonts/fira_code.woff2 b/src/assets/fonts/fira_code.woff2 new file mode 100644 index 000000000..ab4728777 Binary files /dev/null and b/src/assets/fonts/fira_code.woff2 differ diff --git a/src/assets/icons/file-icons.json b/src/assets/icons/file-icons.json new file mode 100644 index 000000000..114751f65 --- /dev/null +++ b/src/assets/icons/file-icons.json @@ -0,0 +1,8322 @@ +{ + "500px": { + "width": 448, + "height": 512, + "svg": "" + }, + "accessible-icon": { + "width": 448, + "height": 512, + "svg": "" + }, + "accusoft": { + "width": 640, + "height": 512, + "svg": "" + }, + "acquisitions-incorporated": { + "width": 384, + "height": 512, + "svg": "" + }, + "adn": { + "width": 496, + "height": 512, + "svg": "" + }, + "adversal": { + "width": 512, + "height": 512, + "svg": "" + }, + "affiliatetheme": { + "width": 512, + "height": 512, + "svg": "" + }, + "airbnb": { + "width": 448, + "height": 512, + "svg": "" + }, + "algolia": { + "width": 448, + "height": 512, + "svg": "" + }, + "alipay": { + "width": 448, + "height": 512, + "svg": "" + }, + "amazon-pay": { + "width": 640, + "height": 512, + "svg": "" + }, + "amazon": { + "width": 448, + "height": 512, + "svg": "" + }, + "amilia": { + "width": 448, + "height": 512, + "svg": "" + }, + "android": { + "width": 435, + "height": 512, + "svg": "" + }, + "angellist": { + "width": 448, + "height": 512, + "svg": "" + }, + "angrycreative": { + "width": 640, + "height": 512, + "svg": "" + }, + "angular": { + "width": 484, + "height": 512, + "svg": "" + }, + "app-store-ios": { + "width": 448, + "height": 512, + "svg": "" + }, + "app-store": { + "width": 512, + "height": 512, + "svg": "" + }, + "apper": { + "width": 640, + "height": 512, + "svg": "" + }, + "apple-pay": { + "width": 640, + "height": 512, + "svg": "" + }, + "apple": { + "width": 417, + "height": 512, + "svg": "" + }, + "artstation": { + "width": 512, + "height": 512, + "svg": "" + }, + "asymmetrik": { + "width": 576, + "height": 512, + "svg": "" + }, + "atlassian": { + "width": 512, + "height": 512, + "svg": "" + }, + "audible": { + "width": 640, + "height": 512, + "svg": "" + }, + "autoprefixer": { + "width": 640, + "height": 512, + "svg": "" + }, + "avianex": { + "width": 512, + "height": 512, + "svg": "" + }, + "aviato": { + "width": 640, + "height": 512, + "svg": "" + }, + "aws": { + "width": 512, + "height": 512, + "svg": "" + }, + "bandcamp": { + "width": 512, + "height": 512, + "svg": "" + }, + "battle-net": { + "width": 512, + "height": 512, + "svg": "" + }, + "behance-square": { + "width": 448, + "height": 512, + "svg": "" + }, + "behance": { + "width": 576, + "height": 512, + "svg": "" + }, + "bimobject": { + "width": 448, + "height": 512, + "svg": "" + }, + "bitbucket": { + "width": 455, + "height": 512, + "svg": "" + }, + "bitcoin": { + "width": 512, + "height": 512, + "svg": "" + }, + "bity": { + "width": 496, + "height": 512, + "svg": "" + }, + "black-tie": { + "width": 448, + "height": 512, + "svg": "" + }, + "blackberry": { + "width": 512, + "height": 512, + "svg": "" + }, + "blogger-b": { + "width": 448, + "height": 512, + "svg": "" + }, + "blogger": { + "width": 448, + "height": 512, + "svg": "" + }, + "bluetooth-b": { + "width": 320, + "height": 512, + "svg": "" + }, + "bluetooth": { + "width": 448, + "height": 512, + "svg": "" + }, + "bootstrap": { + "width": 576, + "height": 512, + "svg": "" + }, + "btc": { + "width": 384, + "height": 512, + "svg": "" + }, + "buffer": { + "width": 448, + "height": 512, + "svg": "" + }, + "buromobelexperte": { + "width": 448, + "height": 512, + "svg": "" + }, + "buy-n-large": { + "width": 576, + "height": 512, + "svg": "" + }, + "buysellads": { + "width": 448, + "height": 512, + "svg": "" + }, + "canadian-maple-leaf": { + "width": 512, + "height": 512, + "svg": "" + }, + "cc-amazon-pay": { + "width": 576, + "height": 512, + "svg": "" + }, + "cc-amex": { + "width": 576, + "height": 512, + "svg": "" + }, + "cc-apple-pay": { + "width": 576, + "height": 512, + "svg": "" + }, + "cc-diners-club": { + "width": 576, + "height": 512, + "svg": "" + }, + "cc-discover": { + "width": 576, + "height": 512, + "svg": "" + }, + "cc-jcb": { + "width": 576, + "height": 512, + "svg": "" + }, + "cc-mastercard": { + "width": 576, + "height": 512, + "svg": "" + }, + "cc-paypal": { + "width": 576, + "height": 512, + "svg": "" + }, + "cc-stripe": { + "width": 576, + "height": 512, + "svg": "" + }, + "cc-visa": { + "width": 576, + "height": 512, + "svg": "" + }, + "centercode": { + "width": 512, + "height": 512, + "svg": "" + }, + "centos": { + "width": 512, + "height": 512, + "svg": "" + }, + "chrome": { + "width": 512, + "height": 512, + "svg": "" + }, + "chromecast": { + "width": 512, + "height": 512, + "svg": "" + }, + "cloudflare": { + "width": 640, + "height": 512, + "svg": "" + }, + "cloudscale": { + "width": 448, + "height": 512, + "svg": "" + }, + "cloudsmith": { + "width": 332, + "height": 512, + "svg": "" + }, + "cloudversify": { + "width": 616, + "height": 512, + "svg": "" + }, + "codepen": { + "width": 512, + "height": 512, + "svg": "" + }, + "codiepie": { + "width": 472, + "height": 512, + "svg": "" + }, + "confluence": { + "width": 512, + "height": 512, + "svg": "" + }, + "connectdevelop": { + "width": 576, + "height": 512, + "svg": "" + }, + "contao": { + "width": 512, + "height": 512, + "svg": "" + }, + "cotton-bureau": { + "width": 512, + "height": 512, + "svg": "" + }, + "cpanel": { + "width": 640, + "height": 512, + "svg": "" + }, + "creative-commons-by": { + "width": 496, + "height": 512, + "svg": "" + }, + "creative-commons-nc-eu": { + "width": 496, + "height": 512, + "svg": "" + }, + "creative-commons-nc-jp": { + "width": 496, + "height": 512, + "svg": "" + }, + "creative-commons-nc": { + "width": 496, + "height": 512, + "svg": "" + }, + "creative-commons-nd": { + "width": 496, + "height": 512, + "svg": "" + }, + "creative-commons-pd-alt": { + "width": 496, + "height": 512, + "svg": "" + }, + "creative-commons-pd": { + "width": 496, + "height": 512, + "svg": "" + }, + "creative-commons-remix": { + "width": 496, + "height": 512, + "svg": "" + }, + "creative-commons-sa": { + "width": 496, + "height": 512, + "svg": "" + }, + "creative-commons-sampling-plus": { + "width": 496, + "height": 512, + "svg": "" + }, + "creative-commons-sampling": { + "width": 496, + "height": 512, + "svg": "" + }, + "creative-commons-share": { + "width": 496, + "height": 512, + "svg": "" + }, + "creative-commons-zero": { + "width": 496, + "height": 512, + "svg": "" + }, + "creative-commons": { + "width": 496, + "height": 512, + "svg": "" + }, + "critical-role": { + "width": 448, + "height": 512, + "svg": "" + }, + "css3-alt": { + "width": 384, + "height": 512, + "svg": "" + }, + "css3": { + "width": 452, + "height": 512, + "svg": "" + }, + "cuttlefish": { + "width": 440, + "height": 512, + "svg": "" + }, + "d-and-d-beyond": { + "width": 640, + "height": 512, + "svg": "" + }, + "d-and-d": { + "width": 576, + "height": 512, + "svg": "" + }, + "dailymotion": { + "width": 448, + "height": 512, + "svg": "" + }, + "dashcube": { + "width": 448, + "height": 512, + "svg": "" + }, + "deezer": { + "width": 576, + "height": 512, + "svg": "" + }, + "delicious": { + "width": 448, + "height": 512, + "svg": "" + }, + "deploydog": { + "width": 512, + "height": 512, + "svg": "" + }, + "deskpro": { + "width": 480, + "height": 512, + "svg": "" + }, + "dev": { + "width": 448, + "height": 512, + "svg": "" + }, + "deviantart": { + "width": 320, + "height": 512, + "svg": "" + }, + "dhl": { + "width": 640, + "height": 512, + "svg": "" + }, + "diaspora": { + "width": 512, + "height": 512, + "svg": "" + }, + "digg": { + "width": 512, + "height": 512, + "svg": "" + }, + "digital-ocean": { + "width": 512, + "height": 512, + "svg": "" + }, + "discord": { + "width": 640, + "height": 512, + "svg": "" + }, + "discourse": { + "width": 448, + "height": 512, + "svg": "" + }, + "dochub": { + "width": 416, + "height": 512, + "svg": "" + }, + "docker": { + "width": 512, + "height": 512, + "svg": "" + }, + "draft2digital": { + "width": 480, + "height": 512, + "svg": "" + }, + "dribbble-square": { + "width": 448, + "height": 512, + "svg": "" + }, + "dribbble": { + "width": 512, + "height": 512, + "svg": "" + }, + "dropbox": { + "width": 512, + "height": 512, + "svg": "" + }, + "drupal": { + "width": 447.8739929, + "height": 512, + "svg": "" + }, + "dyalog": { + "width": null, + "height": null, + "svg": "" + }, + "earlybirds": { + "width": 480, + "height": 512, + "svg": "" + }, + "ebay": { + "width": 640, + "height": 512, + "svg": "" + }, + "edge-legacy": { + "width": 512, + "height": 512, + "svg": "" + }, + "edge": { + "width": 512, + "height": 512, + "svg": "" + }, + "elementor": { + "width": 448, + "height": 512, + "svg": "" + }, + "ello": { + "width": 496, + "height": 512, + "svg": "" + }, + "ember": { + "width": 512, + "height": 512, + "svg": "" + }, + "empire": { + "width": 496, + "height": 512, + "svg": "" + }, + "envira": { + "width": 448, + "height": 512, + "svg": "" + }, + "erlang": { + "width": 512, + "height": 512, + "svg": "" + }, + "ethereum": { + "width": 320, + "height": 512, + "svg": "" + }, + "etsy": { + "width": 384, + "height": 512, + "svg": "" + }, + "evernote": { + "width": 384, + "height": 512, + "svg": "" + }, + "expeditedssl": { + "width": 496, + "height": 512, + "svg": "" + }, + "facebook-f": { + "width": 320, + "height": 512, + "svg": "" + }, + "facebook-messenger": { + "width": 512, + "height": 512, + "svg": "" + }, + "facebook-square": { + "width": 448, + "height": 512, + "svg": "" + }, + "facebook": { + "width": 512, + "height": 512, + "svg": "" + }, + "fantasy-flight-games": { + "width": 512, + "height": 512, + "svg": "" + }, + "fedex": { + "width": 640, + "height": 512, + "svg": "" + }, + "fedora": { + "width": 512, + "height": 512, + "svg": "" + }, + "figma": { + "width": 340, + "height": 512, + "svg": "" + }, + "firefox-browser": { + "width": 512, + "height": 512, + "svg": "" + }, + "firefox": { + "width": 512, + "height": 512, + "svg": "" + }, + "first-order-alt": { + "width": 496, + "height": 512, + "svg": "" + }, + "first-order": { + "width": 448, + "height": 512, + "svg": "" + }, + "firstdraft": { + "width": 384, + "height": 512, + "svg": "" + }, + "flickr": { + "width": 448, + "height": 512, + "svg": "" + }, + "flipboard": { + "width": 448, + "height": 512, + "svg": "" + }, + "fly": { + "width": 384, + "height": 512, + "svg": "" + }, + "font-awesome-alt": { + "width": 448, + "height": 512, + "svg": "" + }, + "font-awesome-flag": { + "width": 448, + "height": 512, + "svg": "" + }, + "font-awesome-logo-full": { + "width": 3992, + "height": 512, + "svg": "" + }, + "font-awesome": { + "width": 448, + "height": 512, + "svg": "" + }, + "fonticons-fi": { + "width": 384, + "height": 512, + "svg": "" + }, + "fonticons": { + "width": 448, + "height": 512, + "svg": "" + }, + "fort-awesome-alt": { + "width": 512, + "height": 512, + "svg": "" + }, + "fort-awesome": { + "width": 512, + "height": 512, + "svg": "" + }, + "forumbee": { + "width": 448, + "height": 512, + "svg": "" + }, + "foursquare": { + "width": 368, + "height": 512, + "svg": "" + }, + "free-code-camp": { + "width": 576, + "height": 512, + "svg": "" + }, + "freebsd": { + "width": 512, + "height": 512, + "svg": "" + }, + "fulcrum": { + "width": 320, + "height": 512, + "svg": "" + }, + "galactic-republic": { + "width": 496, + "height": 512, + "svg": "" + }, + "galactic-senate": { + "width": 512, + "height": 512, + "svg": "" + }, + "get-pocket": { + "width": 448, + "height": 512, + "svg": "" + }, + "gg-circle": { + "width": 512, + "height": 512, + "svg": "" + }, + "gg": { + "width": 512, + "height": 512, + "svg": "" + }, + "git-alt": { + "width": 448, + "height": 512, + "svg": "" + }, + "git-square": { + "width": 448, + "height": 512, + "svg": "" + }, + "git": { + "width": 512, + "height": 512, + "svg": "" + }, + "github-alt": { + "width": 512, + "height": 512, + "svg": "" + }, + "github-square": { + "width": 448, + "height": 512, + "svg": "" + }, + "github": { + "width": "64", + "height": "64", + "svg": "\n \n" + }, + "gitkraken": { + "width": 592, + "height": 512, + "svg": "" + }, + "gitlab": { + "width": 512, + "height": 512, + "svg": "" + }, + "gitter": { + "width": 384, + "height": 512, + "svg": "" + }, + "glide-g": { + "width": 448, + "height": 512, + "svg": "" + }, + "glide": { + "width": 512, + "height": 512, + "svg": "" + }, + "gofore": { + "width": 400, + "height": 512, + "svg": "" + }, + "goodreads-g": { + "width": 384, + "height": 512, + "svg": "" + }, + "goodreads": { + "width": 448, + "height": 512, + "svg": "" + }, + "google-drive": { + "width": 512, + "height": 512, + "svg": "" + }, + "google-pay": { + "width": 640, + "height": 512, + "svg": "" + }, + "google-play": { + "width": 512, + "height": 512, + "svg": "" + }, + "google-plus-g": { + "width": 640, + "height": 512, + "svg": "" + }, + "google-plus-square": { + "width": 448, + "height": 512, + "svg": "" + }, + "google-plus": { + "width": 512, + "height": 512, + "svg": "" + }, + "google-wallet": { + "width": 448, + "height": 512, + "svg": "" + }, + "google": { + "width": 481, + "height": 512, + "svg": "" + }, + "gratipay": { + "width": 496, + "height": 512, + "svg": "" + }, + "grav": { + "width": 512, + "height": 512, + "svg": "" + }, + "gripfire": { + "width": 384, + "height": 512, + "svg": "" + }, + "grunt": { + "width": 383, + "height": 512, + "svg": "" + }, + "guilded": { + "width": 448, + "height": 512, + "svg": "" + }, + "gulp": { + "width": 230, + "height": 512, + "svg": "" + }, + "hacker-news-square": { + "width": 448, + "height": 512, + "svg": "" + }, + "hacker-news": { + "width": 448, + "height": 512, + "svg": "" + }, + "hackerrank": { + "width": 512, + "height": 512, + "svg": "" + }, + "hips": { + "width": 640, + "height": 512, + "svg": "" + }, + "hire-a-helper": { + "width": 512, + "height": 512, + "svg": "" + }, + "hive": { + "width": 512, + "height": 512, + "svg": "" + }, + "hooli": { + "width": 640, + "height": 512, + "svg": "" + }, + "hornbill": { + "width": 512, + "height": 512, + "svg": "" + }, + "hotjar": { + "width": 448, + "height": 512, + "svg": "" + }, + "houzz": { + "width": 448, + "height": 512, + "svg": "" + }, + "html5": { + "width": 451, + "height": 512, + "svg": "" + }, + "hubspot": { + "width": 512, + "height": 512, + "svg": "" + }, + "ideal": { + "width": 576, + "height": 512, + "svg": "" + }, + "imdb": { + "width": 448, + "height": 512, + "svg": "" + }, + "innosoft": { + "width": 448, + "height": 512, + "svg": "" + }, + "instagram-square": { + "width": 448, + "height": 512, + "svg": "" + }, + "instagram": { + "width": 448, + "height": 512, + "svg": "" + }, + "instalod": { + "width": 512, + "height": 512, + "svg": "" + }, + "intercom": { + "width": 448, + "height": 512, + "svg": "" + }, + "internet-explorer": { + "width": 512, + "height": 512, + "svg": "" + }, + "invision": { + "width": 448, + "height": 512, + "svg": "" + }, + "ioxhost": { + "width": 640, + "height": 512, + "svg": "" + }, + "itch-io": { + "width": 512, + "height": 512, + "svg": "" + }, + "itunes-note": { + "width": 384, + "height": 512, + "svg": "" + }, + "itunes": { + "width": 448, + "height": 512, + "svg": "" + }, + "java": { + "width": 374, + "height": 512, + "svg": "" + }, + "jedi-order": { + "width": 448, + "height": 512, + "svg": "" + }, + "jenkins": { + "width": 371, + "height": 512, + "svg": "" + }, + "jira": { + "width": 388, + "height": 512, + "svg": "" + }, + "joget": { + "width": 496, + "height": 512, + "svg": "" + }, + "joomla": { + "width": 512, + "height": 512, + "svg": "" + }, + "js-square": { + "width": 448, + "height": 512, + "svg": "" + }, + "js": { + "width": 512, + "height": 512, + "svg": "" + }, + "jsfiddle": { + "width": 576, + "height": 512, + "svg": "" + }, + "kaggle": { + "width": 320, + "height": 512, + "svg": "" + }, + "keybase": { + "width": 472, + "height": 512, + "svg": "" + }, + "keycdn": { + "width": 512, + "height": 512, + "svg": "" + }, + "kickstarter-k": { + "width": 384, + "height": 512, + "svg": "" + }, + "kickstarter": { + "width": 448, + "height": 512, + "svg": "" + }, + "korvue": { + "width": 446, + "height": 512, + "svg": "" + }, + "laravel": { + "width": 512, + "height": 512, + "svg": "" + }, + "lastfm-square": { + "width": 448, + "height": 512, + "svg": "" + }, + "lastfm": { + "width": 512, + "height": 512, + "svg": "" + }, + "leanpub": { + "width": 576, + "height": 512, + "svg": "" + }, + "less": { + "width": 512, + "height": 512, + "svg": "" + }, + "line": { + "width": 448, + "height": 512, + "svg": "" + }, + "linkedin-in": { + "width": 448, + "height": 512, + "svg": "" + }, + "linkedin": { + "width": 448, + "height": 512, + "svg": "" + }, + "linode": { + "width": 448, + "height": 512, + "svg": "" + }, + "linux": { + "width": 436, + "height": 512, + "svg": "" + }, + "lyft": { + "width": 512, + "height": 512, + "svg": "" + }, + "magento": { + "width": 436, + "height": 512, + "svg": "" + }, + "mailchimp": { + "width": 512, + "height": 512, + "svg": "" + }, + "mandalorian": { + "width": 448, + "height": 512, + "svg": "" + }, + "markdown": { + "width": 512, + "height": 512, + "svg": "" + }, + "mastodon": { + "width": 448, + "height": 512, + "svg": "" + }, + "maxcdn": { + "width": 512, + "height": 512, + "svg": "" + }, + "mdb": { + "width": 576, + "height": 512, + "svg": "" + }, + "medapps": { + "width": 320, + "height": 512, + "svg": "" + }, + "medium-m": { + "width": 512, + "height": 512, + "svg": "" + }, + "medium": { + "width": 448, + "height": 512, + "svg": "" + }, + "medrt": { + "width": 544, + "height": 512, + "svg": "" + }, + "meetup": { + "width": 512, + "height": 512, + "svg": "" + }, + "megaport": { + "width": 496, + "height": 512, + "svg": "" + }, + "mendeley": { + "width": 640, + "height": 512, + "svg": "" + }, + "microblog": { + "width": 448, + "height": 512, + "svg": "" + }, + "microsoft": { + "width": 448, + "height": 512, + "svg": "" + }, + "mix": { + "width": 448, + "height": 512, + "svg": "" + }, + "mixcloud": { + "width": 640, + "height": 512, + "svg": "" + }, + "mixer": { + "width": 512, + "height": 512, + "svg": "" + }, + "mizuni": { + "width": 496, + "height": 512, + "svg": "" + }, + "modx": { + "width": 448, + "height": 512, + "svg": "" + }, + "monero": { + "width": 496, + "height": 512, + "svg": "" + }, + "napster": { + "width": 496, + "height": 512, + "svg": "" + }, + "neos": { + "width": 512, + "height": 512, + "svg": "" + }, + "nimblr": { + "width": 384, + "height": 512, + "svg": "" + }, + "node-js": { + "width": 448, + "height": 512, + "svg": "" + }, + "node": { + "width": 640, + "height": 512, + "svg": "" + }, + "npm": { + "width": 512, + "height": 512, + "svg": "" + }, + "ns8": { + "width": 640, + "height": 512, + "svg": "" + }, + "nutritionix": { + "width": 400, + "height": 512, + "svg": "" + }, + "octopus-deploy": { + "width": 512, + "height": 512, + "svg": "" + }, + "odnoklassniki-square": { + "width": 448, + "height": 512, + "svg": "" + }, + "odnoklassniki": { + "width": 320, + "height": 512, + "svg": "" + }, + "old-republic": { + "width": 496, + "height": 512, + "svg": "" + }, + "opencart": { + "width": 640, + "height": 512, + "svg": "" + }, + "openid": { + "width": 448, + "height": 512, + "svg": "" + }, + "opera": { + "width": 480, + "height": 512, + "svg": "" + }, + "optin-monster": { + "width": 576, + "height": 512, + "svg": "" + }, + "orcid": { + "width": 512, + "height": 512, + "svg": "" + }, + "osi": { + "width": 512, + "height": 512, + "svg": "" + }, + "page4": { + "width": 496, + "height": 512, + "svg": "" + }, + "pagelines": { + "width": 384, + "height": 512, + "svg": "" + }, + "palfed": { + "width": 576, + "height": 512, + "svg": "" + }, + "patreon": { + "width": 512, + "height": 512, + "svg": "" + }, + "paypal": { + "width": 384, + "height": 512, + "svg": "" + }, + "penny-arcade": { + "width": 640, + "height": 512, + "svg": "" + }, + "perbyte": { + "width": 448, + "height": 512, + "svg": "" + }, + "periscope": { + "width": 448, + "height": 512, + "svg": "" + }, + "phabricator": { + "width": 496, + "height": 512, + "svg": "" + }, + "phoenix-framework": { + "width": 640, + "height": 512, + "svg": "" + }, + "phoenix-squadron": { + "width": 512, + "height": 512, + "svg": "" + }, + "php": { + "width": 512, + "height": 512, + "svg": "" + }, + "pied-piper-alt": { + "width": 576, + "height": 512, + "svg": "" + }, + "pied-piper-hat": { + "width": 640, + "height": 512, + "svg": "" + }, + "pied-piper-pp": { + "width": 448, + "height": 512, + "svg": "" + }, + "pied-piper-square": { + "width": 448, + "height": 512, + "svg": "" + }, + "pied-piper": { + "width": 480, + "height": 512, + "svg": "" + }, + "pinterest-p": { + "width": 384, + "height": 512, + "svg": "" + }, + "pinterest-square": { + "width": 448, + "height": 512, + "svg": "" + }, + "pinterest": { + "width": 496, + "height": 512, + "svg": "" + }, + "playstation": { + "width": 576, + "height": 512, + "svg": "" + }, + "product-hunt": { + "width": 512, + "height": 512, + "svg": "" + }, + "pushed": { + "width": 432, + "height": 512, + "svg": "" + }, + "python": { + "width": 492, + "height": 512, + "svg": "" + }, + "qq": { + "width": 448, + "height": 512, + "svg": "" + }, + "quinscape": { + "width": 512, + "height": 512, + "svg": "" + }, + "quora": { + "width": 448, + "height": 512, + "svg": "" + }, + "r-project": { + "width": 581, + "height": 512, + "svg": "" + }, + "raspberry-pi": { + "width": 401, + "height": 512, + "svg": "" + }, + "ravelry": { + "width": 512, + "height": 512, + "svg": "" + }, + "react": { + "width": 512, + "height": 512, + "svg": "" + }, + "reacteurope": { + "width": 576, + "height": 512, + "svg": "" + }, + "readme": { + "width": 576, + "height": 512, + "svg": "" + }, + "rebel": { + "width": 512, + "height": 512, + "svg": "" + }, + "red-river": { + "width": 448, + "height": 512, + "svg": "" + }, + "reddit-alien": { + "width": 512, + "height": 512, + "svg": "" + }, + "reddit-square": { + "width": 448, + "height": 512, + "svg": "" + }, + "reddit": { + "width": 512, + "height": 512, + "svg": "" + }, + "redhat": { + "width": 512, + "height": 512, + "svg": "" + }, + "renren": { + "width": 512, + "height": 512, + "svg": "" + }, + "replyd": { + "width": 448, + "height": 512, + "svg": "" + }, + "researchgate": { + "width": 448, + "height": 512, + "svg": "" + }, + "resolving": { + "width": 496, + "height": 512, + "svg": "" + }, + "rev": { + "width": 448, + "height": 512, + "svg": "" + }, + "rocketchat": { + "width": 576, + "height": 512, + "svg": "" + }, + "rockrms": { + "width": 496, + "height": 512, + "svg": "" + }, + "rust": { + "width": 512, + "height": 512, + "svg": "" + }, + "safari": { + "width": 461, + "height": 512, + "svg": "" + }, + "salesforce": { + "width": 640, + "height": 512, + "svg": "" + }, + "sass": { + "width": 512, + "height": 512, + "svg": "" + }, + "schlix": { + "width": 448, + "height": 512, + "svg": "" + }, + "scribd": { + "width": 384, + "height": 512, + "svg": "" + }, + "searchengin": { + "width": 460, + "height": 512, + "svg": "" + }, + "sellcast": { + "width": 448, + "height": 512, + "svg": "" + }, + "sellsy": { + "width": 640, + "height": 512, + "svg": "" + }, + "servicestack": { + "width": 496, + "height": 512, + "svg": "" + }, + "shirtsinbulk": { + "width": 448, + "height": 512, + "svg": "" + }, + "shopify": { + "width": 452, + "height": 512, + "svg": "" + }, + "shopware": { + "width": 512, + "height": 512, + "svg": "" + }, + "simplybuilt": { + "width": 512, + "height": 512, + "svg": "" + }, + "sistrix": { + "width": 448, + "height": 512, + "svg": "" + }, + "sith": { + "width": 448, + "height": 512, + "svg": "" + }, + "sketch": { + "width": 512, + "height": 512, + "svg": "" + }, + "skyatlas": { + "width": 640, + "height": 512, + "svg": "" + }, + "skype": { + "width": 448, + "height": 512, + "svg": "" + }, + "slack-hash": { + "width": 448, + "height": 512, + "svg": "" + }, + "slack": { + "width": 448, + "height": 512, + "svg": "" + }, + "slideshare": { + "width": 512, + "height": 512, + "svg": "" + }, + "snapchat-ghost": { + "width": 512, + "height": 512, + "svg": "" + }, + "snapchat-square": { + "width": 448, + "height": 512, + "svg": "" + }, + "snapchat": { + "width": 496, + "height": 512, + "svg": "" + }, + "soundcloud": { + "width": 640, + "height": 512, + "svg": "" + }, + "sourcetree": { + "width": 448, + "height": 512, + "svg": "" + }, + "speakap": { + "width": 448, + "height": 512, + "svg": "" + }, + "speaker-deck": { + "width": 512, + "height": 512, + "svg": "" + }, + "spotify": { + "width": 496, + "height": 512, + "svg": "" + }, + "squarespace": { + "width": 512, + "height": 512, + "svg": "" + }, + "stack-exchange": { + "width": 448, + "height": 512, + "svg": "" + }, + "stack-overflow": { + "width": 384, + "height": 512, + "svg": "" + }, + "stackpath": { + "width": 448, + "height": 512, + "svg": "" + }, + "staylinked": { + "width": 440, + "height": 512, + "svg": "" + }, + "steam-square": { + "width": 448, + "height": 512, + "svg": "" + }, + "steam-symbol": { + "width": 448, + "height": 512, + "svg": "" + }, + "steam": { + "width": 496, + "height": 512, + "svg": "" + }, + "sticker-mule": { + "width": 576, + "height": 512, + "svg": "" + }, + "strava": { + "width": 384, + "height": 512, + "svg": "" + }, + "stripe-s": { + "width": 384, + "height": 512, + "svg": "" + }, + "stripe": { + "width": 640, + "height": 512, + "svg": "" + }, + "studiovinari": { + "width": 512, + "height": 512, + "svg": "" + }, + "stumbleupon-circle": { + "width": 496, + "height": 512, + "svg": "" + }, + "stumbleupon": { + "width": 512, + "height": 512, + "svg": "" + }, + "superpowers": { + "width": 448, + "height": 512, + "svg": "" + }, + "supple": { + "width": 640, + "height": 512, + "svg": "" + }, + "suse": { + "width": 512, + "height": 512, + "svg": "" + }, + "swift": { + "width": 512, + "height": 512, + "svg": "" + }, + "symfony": { + "width": 512, + "height": 512, + "svg": "" + }, + "teamspeak": { + "width": 512, + "height": 512, + "svg": "" + }, + "telegram-plane": { + "width": 448, + "height": 512, + "svg": "" + }, + "telegram": { + "width": 512, + "height": 512, + "svg": "" + }, + "tencent-weibo": { + "width": 384, + "height": 512, + "svg": "" + }, + "the-red-yeti": { + "width": 512, + "height": 512, + "svg": "" + }, + "themeco": { + "width": 448, + "height": 512, + "svg": "" + }, + "themeisle": { + "width": 512, + "height": 512, + "svg": "" + }, + "think-peaks": { + "width": 576, + "height": 512, + "svg": "" + }, + "tiktok": { + "width": 448, + "height": 512, + "svg": "" + }, + "trade-federation": { + "width": 496, + "height": 512, + "svg": "" + }, + "trello": { + "width": 512, + "height": 512, + "svg": "" + }, + "tripadvisor": { + "width": 576, + "height": 512, + "svg": "" + }, + "tumblr-square": { + "width": 448, + "height": 512, + "svg": "" + }, + "tumblr": { + "width": 320, + "height": 512, + "svg": "" + }, + "twitch": { + "width": 512, + "height": 512, + "svg": "" + }, + "twitter-square": { + "width": 448, + "height": 512, + "svg": "" + }, + "twitter": { + "width": "64", + "height": "64", + "svg": "\n \n" + }, + "typo3": { + "width": 512, + "height": 512, + "svg": "" + }, + "uber": { + "width": 448, + "height": 512, + "svg": "" + }, + "ubuntu": { + "width": 496, + "height": 512, + "svg": "" + }, + "uikit": { + "width": 443, + "height": 512, + "svg": "" + }, + "umbraco": { + "width": 510, + "height": 512, + "svg": "" + }, + "uncharted": { + "width": 448, + "height": 512, + "svg": "" + }, + "uniregistry": { + "width": 384, + "height": 512, + "svg": "" + }, + "unity": { + "width": 512, + "height": 512, + "svg": "" + }, + "unsplash": { + "width": 448, + "height": 512, + "svg": "" + }, + "untappd": { + "width": 640, + "height": 512, + "svg": "" + }, + "ups": { + "width": 384, + "height": 512, + "svg": "" + }, + "usb": { + "width": 24, + "height": 24, + "svg": "" + }, + "usps": { + "width": 576, + "height": 512, + "svg": "" + }, + "ussunnah": { + "width": 512, + "height": 512, + "svg": "" + }, + "vaadin": { + "width": 448, + "height": 512, + "svg": "" + }, + "viacoin": { + "width": 384, + "height": 512, + "svg": "" + }, + "viadeo-square": { + "width": 448, + "height": 512, + "svg": "" + }, + "viadeo": { + "width": 448, + "height": 512, + "svg": "" + }, + "viber": { + "width": 512, + "height": 512, + "svg": "" + }, + "vimeo-square": { + "width": 448, + "height": 512, + "svg": "" + }, + "vimeo-v": { + "width": 448, + "height": 512, + "svg": "" + }, + "vimeo": { + "width": 448, + "height": 512, + "svg": "" + }, + "vine": { + "width": 384, + "height": 512, + "svg": "" + }, + "vk": { + "width": 576, + "height": 512, + "svg": "" + }, + "vnv": { + "width": 640, + "height": 512, + "svg": "" + }, + "vuejs": { + "width": 448, + "height": 512, + "svg": "" + }, + "watchman-monitoring": { + "width": 512, + "height": 512, + "svg": "" + }, + "waze": { + "width": 512, + "height": 512, + "svg": "" + }, + "weebly": { + "width": 512, + "height": 512, + "svg": "" + }, + "weibo": { + "width": 512, + "height": 512, + "svg": "" + }, + "weixin": { + "width": 576, + "height": 512, + "svg": "" + }, + "whatsapp-square": { + "width": 448, + "height": 512, + "svg": "" + }, + "whatsapp": { + "width": 448, + "height": 512, + "svg": "" + }, + "whmcs": { + "width": 448, + "height": 512, + "svg": "" + }, + "wikipedia-w": { + "width": 640, + "height": 512, + "svg": "" + }, + "windows": { + "width": 500, + "height": 512, + "svg": "" + }, + "wix": { + "width": 512, + "height": 512, + "svg": "" + }, + "wizards-of-the-coast": { + "width": 640, + "height": 512, + "svg": "" + }, + "wodu": { + "width": 640, + "height": 512, + "svg": "" + }, + "wolf-pack-battalion": { + "width": 512, + "height": 512, + "svg": "" + }, + "wordpress-simple": { + "width": 512, + "height": 512, + "svg": "" + }, + "wordpress": { + "width": 512, + "height": 512, + "svg": "" + }, + "wpbeginner": { + "width": 512, + "height": 512, + "svg": "" + }, + "wpexplorer": { + "width": 512, + "height": 512, + "svg": "" + }, + "wpforms": { + "width": 448, + "height": 512, + "svg": "" + }, + "wpressr": { + "width": 496, + "height": 512, + "svg": "" + }, + "xbox": { + "width": 512, + "height": 512, + "svg": "" + }, + "xing-square": { + "width": 448, + "height": 512, + "svg": "" + }, + "xing": { + "width": 384, + "height": 512, + "svg": "" + }, + "y-combinator": { + "width": 448, + "height": 512, + "svg": "" + }, + "yahoo": { + "width": 512, + "height": 512, + "svg": "" + }, + "yammer": { + "width": 512, + "height": 512, + "svg": "" + }, + "yandex-international": { + "width": 320, + "height": 512, + "svg": "" + }, + "yandex": { + "width": 256, + "height": 512, + "svg": "" + }, + "yarn": { + "width": 477, + "height": 512, + "svg": "" + }, + "yelp": { + "width": 384, + "height": 512, + "svg": "" + }, + "yoast": { + "width": 448, + "height": 512, + "svg": "" + }, + "youtube-square": { + "width": 448, + "height": 512, + "svg": "" + }, + "youtube": { + "width": 576, + "height": 512, + "svg": "" + }, + "zhihu": { + "width": 640, + "height": 512, + "svg": "" + }, + "1c-alt": { + "width": 512, + "height": 512, + "svg": "" + }, + "1c": { + "width": 512, + "height": 512, + "svg": "" + }, + "3d-model": { + "width": 512, + "height": 512, + "svg": "" + }, + "3ds-max": { + "width": 512, + "height": 502, + "svg": "" + }, + "4d": { + "width": 512, + "height": 512, + "svg": "" + }, + "a+": { + "width": 512, + "height": 512, + "svg": "" + }, + "abap": { + "width": 512, + "height": 512, + "svg": "" + }, + "abif": { + "width": 512, + "height": 512, + "svg": "" + }, + "agc": { + "width": 512, + "height": 512, + "svg": "" + }, + "amd": { + "width": 512, + "height": 512, + "svg": "" + }, + "ampl": { + "width": 512, + "height": 512, + "svg": "" + }, + "antlr": { + "width": 512, + "height": 512, + "svg": "" + }, + "api-blueprint": { + "width": 512, + "height": 512, + "svg": "" + }, + "apiextractor": { + "width": 435, + "height": 512, + "svg": "" + }, + "apl-old": { + "width": null, + "height": null, + "svg": "" + }, + "apl": { + "width": 481, + "height": 512, + "svg": "" + }, + "arm": { + "width": 512, + "height": 512, + "svg": "" + }, + "ats": { + "width": 512, + "height": 512, + "svg": "" + }, + "att": { + "width": 512, + "height": 512, + "svg": "" + }, + "avr": { + "width": 512, + "height": 512, + "svg": "" + }, + "acre": { + "width": 444, + "height": 512, + "svg": "" + }, + "actionscript": { + "width": 512, + "height": 512, + "svg": "" + }, + "ada": { + "width": 512, + "height": 583, + "svg": "" + }, + "adobe-acrobat": { + "width": 512, + "height": 512, + "svg": "" + }, + "adobe-aftereffects": { + "width": 512, + "height": 512, + "svg": "" + }, + "adobe-animate": { + "width": 512, + "height": 512, + "svg": "" + }, + "adobe-audition": { + "width": 512, + "height": 512, + "svg": "" + }, + "adobe-bridge": { + "width": 512, + "height": 512, + "svg": "" + }, + "adobe-characteranimator": { + "width": 512, + "height": 512, + "svg": "" + }, + "adobe-creativecloud": { + "width": 512, + "height": 512, + "svg": "" + }, + "adobe-dimension": { + "width": 512, + "height": 512, + "svg": "" + }, + "adobe-dreamweaver": { + "width": 512, + "height": 512, + "svg": "" + }, + "adobe-flash": { + "width": 512, + "height": 512, + "svg": "" + }, + "adobe-fuse": { + "width": 512, + "height": 512, + "svg": "" + }, + "adobe-illustrator": { + "width": 512, + "height": 512, + "svg": "" + }, + "adobe-incopy": { + "width": 512, + "height": 512, + "svg": "" + }, + "adobe-indesign": { + "width": 512, + "height": 512, + "svg": "" + }, + "adobe-lightroom": { + "width": 512, + "height": 512, + "svg": "" + }, + "adobe-mediaencoder": { + "width": 512, + "height": 512, + "svg": "" + }, + "adobe-photoshop": { + "width": 512, + "height": 512, + "svg": "" + }, + "adobe-prelude": { + "width": 512, + "height": 512, + "svg": "" + }, + "adobe-premiere": { + "width": 512, + "height": 512, + "svg": "" + }, + "adobe-premiererush": { + "width": 512, + "height": 512, + "svg": "" + }, + "adobe-xd": { + "width": 512, + "height": 512, + "svg": "" + }, + "adobe": { + "width": 512, + "height": 512, + "svg": "" + }, + "adonisjs": { + "width": 512, + "height": 512, + "svg": "" + }, + "aeternity": { + "width": 512, + "height": 512, + "svg": "" + }, + "affectscript": { + "width": 512, + "height": 512, + "svg": "" + }, + "affinitydesigner": { + "width": 512, + "height": 512, + "svg": "" + }, + "agda": { + "width": 512, + "height": 512, + "svg": "" + }, + "akka": { + "width": 512, + "height": 512, + "svg": "" + }, + "alacritty-alt": { + "width": 512, + "height": 512, + "svg": "" + }, + "alacritty": { + "width": 449, + "height": 512, + "svg": "" + }, + "alex": { + "width": 264, + "height": 512, + "svg": "" + }, + "alloy": { + "width": 512, + "height": 512, + "svg": "" + }, + "alpine-linux": { + "width": 512, + "height": 512, + "svg": "" + }, + "amigaos": { + "width": 512, + "height": 512, + "svg": "" + }, + "amusewiki": { + "width": 512, + "height": 512, + "svg": "" + }, + "analytica": { + "width": 512, + "height": 512, + "svg": "" + }, + "angelscript": { + "width": 512, + "height": 512, + "svg": "" + }, + "animestudio": { + "width": 512, + "height": 512, + "svg": "" + }, + "ansible-alt": { + "width": 469, + "height": 512, + "svg": "" + }, + "ansible": { + "width": 512, + "height": 512, + "svg": "" + }, + "antwar": { + "width": 512, + "height": 512, + "svg": "" + }, + "anyscript": { + "width": 512, + "height": 512, + "svg": "" + }, + "apache-ant": { + "width": 512, + "height": 512, + "svg": "" + }, + "apollo": { + "width": 448, + "height": 512, + "svg": "" + }, + "appveyor": { + "width": 512, + "height": 512, + "svg": "" + }, + "arc": { + "width": 512, + "height": 512, + "svg": "" + }, + "arch-linux": { + "width": 512, + "height": 512, + "svg": "" + }, + "arduino": { + "width": 512, + "height": 512, + "svg": "" + }, + "arttext": { + "width": 512, + "height": 512, + "svg": "" + }, + "arttext4": { + "width": 432, + "height": 512, + "svg": "" + }, + "asciidoc": { + "width": 439, + "height": 512, + "svg": "" + }, + "asciidoctor": { + "width": null, + "height": null, + "svg": "" + }, + "assembly-agc": { + "width": 512, + "height": 512, + "svg": "" + }, + "assembly-amd": { + "width": 512, + "height": 512, + "svg": "" + }, + "assembly-arm": { + "width": 512, + "height": 512, + "svg": "" + }, + "assembly-att": { + "width": 512, + "height": 512, + "svg": "" + }, + "assembly-avr": { + "width": 512, + "height": 512, + "svg": "" + }, + "assembly-generic": { + "width": 512, + "height": 512, + "svg": "" + }, + "assembly-hitachi": { + "width": 512, + "height": 512, + "svg": "" + }, + "assembly-intel": { + "width": 512, + "height": 512, + "svg": "" + }, + "assembly-motorola": { + "width": 512, + "height": 512, + "svg": "" + }, + "assembly-powerpc": { + "width": 512, + "height": 512, + "svg": "" + }, + "assembly-riscv": { + "width": 512, + "height": 512, + "svg": "" + }, + "assembly-sparc": { + "width": 512, + "height": 512, + "svg": "" + }, + "assembly-vax": { + "width": 512, + "height": 512, + "svg": "" + }, + "assembly-zilog": { + "width": 512, + "height": 512, + "svg": "" + }, + "asymptote-alt": { + "width": 476, + "height": 512, + "svg": "" + }, + "asymptote": { + "width": 512, + "height": 512, + "svg": "" + }, + "atoum": { + "width": 512, + "height": 512, + "svg": "" + }, + "audacity": { + "width": 512, + "height": 512, + "svg": "" + }, + "augeas": { + "width": 372, + "height": 512, + "svg": "" + }, + "aurelia": { + "width": 512, + "height": 512, + "svg": "" + }, + "autohotkey": { + "width": 512, + "height": 512, + "svg": "" + }, + "autoit": { + "width": 512, + "height": 512, + "svg": "" + }, + "automator": { + "width": 474, + "height": 512, + "svg": "" + }, + "avro": { + "width": 512, + "height": 512, + "svg": "" + }, + "awk": { + "width": 491, + "height": 512, + "svg": "" + }, + "azure-pipelines": { + "width": 512, + "height": 512, + "svg": "" + }, + "bem": { + "width": 512, + "height": 512, + "svg": "" + }, + "bnf": { + "width": 512, + "height": 512, + "svg": "" + }, + "byond": { + "width": 512, + "height": 512, + "svg": "" + }, + "babel": { + "width": 422, + "height": 512, + "svg": "" + }, + "ballerina": { + "width": 283, + "height": 512, + "svg": "" + }, + "bazaar": { + "width": 500, + "height": 512, + "svg": "" + }, + "bazel-old": { + "width": 355, + "height": 512, + "svg": "" + }, + "bazel": { + "width": 512, + "height": 512, + "svg": "" + }, + "behat": { + "width": 385, + "height": 512, + "svg": "" + }, + "bibtex": { + "width": null, + "height": null, + "svg": "" + }, + "bikeshed": { + "width": 496, + "height": 512, + "svg": "" + }, + "biml": { + "width": 512, + "height": 512, + "svg": "" + }, + "bintray": { + "width": 512, + "height": 512, + "svg": "" + }, + "binder": { + "width": 401, + "height": 512, + "svg": "" + }, + "bison": { + "width": 512, + "height": 512, + "svg": "" + }, + "blender": { + "width": 512, + "height": 512, + "svg": "" + }, + "blitzbasic": { + "width": 512, + "height": 512, + "svg": "" + }, + "bloc": { + "width": 428, + "height": 512, + "svg": "" + }, + "bluespec": { + "width": 402, + "height": 512, + "svg": "" + }, + "boo": { + "width": 512, + "height": 512, + "svg": "" + }, + "bors": { + "width": 480, + "height": 512, + "svg": "" + }, + "bosque": { + "width": 512, + "height": 512, + "svg": "" + }, + "brainfuck": { + "width": 512, + "height": 512, + "svg": "" + }, + "brakeman": { + "width": 334, + "height": 512, + "svg": "" + }, + "bro": { + "width": 512, + "height": 512, + "svg": "" + }, + "broccoli": { + "width": 512, + "height": 512, + "svg": "" + }, + "brotli-old": { + "width": 374, + "height": 512, + "svg": "" + }, + "brotli": { + "width": 512, + "height": 512, + "svg": "" + }, + "browserslist": { + "width": 512, + "height": 512, + "svg": "" + }, + "browsersync": { + "width": 360, + "height": 512, + "svg": "" + }, + "brunch": { + "width": 512, + "height": 512, + "svg": "" + }, + "buck": { + "width": 512, + "height": 512, + "svg": "" + }, + "build-boot": { + "width": 356, + "height": 512, + "svg": "" + }, + "buildkite": { + "width": 512, + "height": 512, + "svg": "" + }, + "bundler": { + "width": 481, + "height": 512, + "svg": "" + }, + "c#-script": { + "width": 459, + "height": 512, + "svg": "" + }, + "c#": { + "width": 455, + "height": 512, + "svg": "" + }, + "c++": { + "width": 512, + "height": 512, + "svg": "" + }, + "casc": { + "width": 512, + "height": 512, + "svg": "" + }, + "cdf": { + "width": 494, + "height": 512, + "svg": "" + }, + "ckeditor": { + "width": 464, + "height": 512, + "svg": "" + }, + "clips": { + "width": 417, + "height": 512, + "svg": "" + }, + "cnab": { + "width": 470, + "height": 512, + "svg": "" + }, + "cobol": { + "width": 512, + "height": 512, + "svg": "" + }, + "cpan": { + "width": 496, + "height": 512, + "svg": "" + }, + "csound": { + "width": 508, + "height": 512, + "svg": "" + }, + "cvs": { + "width": 512, + "height": 512, + "svg": "" + }, + "cwl": { + "width": 150, + "height": 512, + "svg": "" + }, + "cabal": { + "width": 512, + "height": 512, + "svg": "" + }, + "caddy-old": { + "width": 512, + "height": 512, + "svg": "" + }, + "caddy": { + "width": 507, + "height": 512, + "svg": "" + }, + "caffe": { + "width": 469, + "height": 512, + "svg": "" + }, + "caffe2": { + "width": 448, + "height": 512, + "svg": "" + }, + "cairo": { + "width": 396, + "height": 512, + "svg": "" + }, + "cake": { + "width": 456, + "height": 512, + "svg": "" + }, + "cakephp-old": { + "width": 512, + "height": 512, + "svg": "" + }, + "cakephp": { + "width": 512, + "height": 512, + "svg": "" + }, + "cakefile": { + "width": 512, + "height": 512, + "svg": "" + }, + "calva": { + "width": 512, + "height": 512, + "svg": "" + }, + "carthage": { + "width": 512, + "height": 512, + "svg": "" + }, + "ceylon": { + "width": 512, + "height": 512, + "svg": "" + }, + "chai": { + "width": 444, + "height": 512, + "svg": "" + }, + "chapel": { + "width": 512, + "height": 512, + "svg": "" + }, + "chartjs": { + "width": 444, + "height": 512, + "svg": "" + }, + "cheetah3d": { + "width": 512, + "height": 512, + "svg": "" + }, + "chef": { + "width": 512, + "height": 512, + "svg": "" + }, + "chocolatey": { + "width": 512, + "height": 512, + "svg": "" + }, + "chuck": { + "width": 512, + "height": 512, + "svg": "" + }, + "circleci": { + "width": 505, + "height": 512, + "svg": "" + }, + "cirru": { + "width": 512, + "height": 512, + "svg": "" + }, + "clarion": { + "width": 512, + "height": 512, + "svg": "" + }, + "clean": { + "width": 319, + "height": 512, + "svg": "" + }, + "click": { + "width": 512, + "height": 512, + "svg": "" + }, + "clojurejs": { + "width": 512, + "height": 512, + "svg": "" + }, + "closuretemplate": { + "width": 512, + "height": 512, + "svg": "" + }, + "cloudfoundry": { + "width": 343, + "height": 512, + "svg": "" + }, + "cmake": { + "width": 512, + "height": 512, + "svg": "" + }, + "conll": { + "width": 512, + "height": 512, + "svg": "" + }, + "cocoapods": { + "width": 512, + "height": 512, + "svg": "" + }, + "codacy": { + "width": 512, + "height": 512, + "svg": "" + }, + "code-climate": { + "width": 512, + "height": 512, + "svg": "" + }, + "codekit": { + "width": 512, + "height": 512, + "svg": "" + }, + "codemeta": { + "width": 436, + "height": 512, + "svg": "" + }, + "codemirror": { + "width": 512, + "height": 512, + "svg": "" + }, + "codeship": { + "width": 512, + "height": 512, + "svg": "" + }, + "codecov": { + "width": 468, + "height": 512, + "svg": "" + }, + "coldfusion": { + "width": 512, + "height": 512, + "svg": "" + }, + "commitlint": { + "width": 512, + "height": 512, + "svg": "" + }, + "commitizen": { + "width": 512, + "height": 512, + "svg": "" + }, + "common-lisp": { + "width": 512, + "height": 512, + "svg": "" + }, + "component-pascal": { + "width": 512, + "height": 512, + "svg": "" + }, + "composer": { + "width": 393, + "height": 512, + "svg": "" + }, + "conan": { + "width": 481, + "height": 512, + "svg": "" + }, + "conda": { + "width": 445, + "height": 512, + "svg": "" + }, + "config-coffeescript": { + "width": 512, + "height": 512, + "svg": "" + }, + "config-go": { + "width": 512, + "height": 512, + "svg": "" + }, + "config-haskell": { + "width": 512, + "height": 512, + "svg": "" + }, + "config-js": { + "width": 512, + "height": 512, + "svg": "" + }, + "config-perl": { + "width": 512, + "height": 512, + "svg": "" + }, + "config-python": { + "width": 512, + "height": 512, + "svg": "" + }, + "config-react": { + "width": 512, + "height": 512, + "svg": "" + }, + "config-ruby": { + "width": 512, + "height": 512, + "svg": "" + }, + "config-rust": { + "width": 512, + "height": 512, + "svg": "" + }, + "config-typescript": { + "width": 512, + "height": 512, + "svg": "" + }, + "config": { + "width": 512, + "height": 512, + "svg": "" + }, + "coq": { + "width": 342, + "height": 512, + "svg": "" + }, + "cordova": { + "width": 512, + "height": 512, + "svg": "" + }, + "coreldraw-alt": { + "width": 371, + "height": 512, + "svg": "" + }, + "coreldraw": { + "width": 512, + "height": 512, + "svg": "" + }, + "coveralls": { + "width": 512, + "height": 512, + "svg": "" + }, + "cpcdosc+": { + "width": 500, + "height": 512, + "svg": "" + }, + "crafttweaker": { + "width": 500, + "height": 512, + "svg": "" + }, + "creole": { + "width": 512, + "height": 512, + "svg": "" + }, + "crowdin": { + "width": 512, + "height": 512, + "svg": "" + }, + "crystal": { + "width": null, + "height": null, + "svg": "" + }, + "cubit": { + "width": 440, + "height": 512, + "svg": "" + }, + "cucumber": { + "width": 435, + "height": 512, + "svg": "" + }, + "cuneiform": { + "width": 512, + "height": 512, + "svg": "" + }, + "curl-lang": { + "width": 512, + "height": 512, + "svg": "" + }, + "curry": { + "width": 512, + "height": 512, + "svg": "" + }, + "cython": { + "width": 512, + "height": 512, + "svg": "" + }, + "d3": { + "width": 512, + "height": 512, + "svg": "" + }, + "dna": { + "width": 506, + "height": 512, + "svg": "" + }, + "dom": { + "width": 512, + "height": 512, + "svg": "" + }, + "dosbox-alt": { + "width": 456, + "height": 512, + "svg": "" + }, + "dosbox": { + "width": 512, + "height": 512, + "svg": "" + }, + "dvc": { + "width": 512, + "height": 512, + "svg": "" + }, + "dafny": { + "width": 512, + "height": 512, + "svg": "" + }, + "darcs-patch": { + "width": 512, + "height": 512, + "svg": "" + }, + "dashboard": { + "width": 512, + "height": 512, + "svg": "" + }, + "dataweave": { + "width": 512, + "height": 512, + "svg": "" + }, + "default": { + "width": 384, + "height": 512, + "svg": "" + }, + "delphi": { + "width": 440, + "height": 512, + "svg": "" + }, + "deno": { + "width": 512, + "height": 512, + "svg": "" + }, + "dependabot": { + "width": 480, + "height": 512, + "svg": "" + }, + "devcontainer": { + "width": 512, + "height": 512, + "svg": "" + }, + "devicetree": { + "width": 512, + "height": 512, + "svg": "" + }, + "dhall": { + "width": 243, + "height": 512, + "svg": "" + }, + "dia": { + "width": 512, + "height": 512, + "svg": "" + }, + "diff": { + "width": 512, + "height": 512, + "svg": "" + }, + "digdag": { + "width": 512, + "height": 512, + "svg": "" + }, + "docbook": { + "width": 512, + "height": 512, + "svg": "" + }, + "docpad": { + "width": 512, + "height": 512, + "svg": "" + }, + "doclets": { + "width": 512, + "height": 512, + "svg": "" + }, + "docz": { + "width": 511.9989929, + "height": 511.9989929, + "svg": "" + }, + "dogescript": { + "width": 512, + "height": 512, + "svg": "" + }, + "donejs": { + "width": 512, + "height": 512, + "svg": "" + }, + "doxygen": { + "width": 438, + "height": 512, + "svg": "" + }, + "dragonflybsd": { + "width": 441, + "height": 512, + "svg": "" + }, + "dragula": { + "width": 438, + "height": 512, + "svg": "" + }, + "drone": { + "width": 512, + "height": 512, + "svg": "" + }, + "dub": { + "width": 512, + "height": 512, + "svg": "" + }, + "dylib": { + "width": 503, + "height": 512, + "svg": "" + }, + "e": { + "width": 406, + "height": 512, + "svg": "" + }, + "eclipse-lang": { + "width": 512, + "height": 512, + "svg": "" + }, + "ejs": { + "width": 512, + "height": 512, + "svg": "" + }, + "eq": { + "width": 512, + "height": 512, + "svg": "" + }, + "esdoc": { + "width": 512, + "height": 512, + "svg": "" + }, + "eslint-old": { + "width": null, + "height": null, + "svg": "" + }, + "eslint": { + "width": 512, + "height": 512, + "svg": "" + }, + "eagle": { + "width": 512, + "height": 512, + "svg": "" + }, + "easybuild": { + "width": 355, + "height": 512, + "svg": "" + }, + "ecere": { + "width": 512, + "height": 512, + "svg": "" + }, + "editorconfig": { + "width": 512, + "height": 512, + "svg": "" + }, + "eiffel": { + "width": 512, + "height": 512, + "svg": "" + }, + "electron": { + "width": 474, + "height": 512, + "svg": "" + }, + "elementaryos": { + "width": 512, + "height": 512, + "svg": "" + }, + "elm": { + "width": 512, + "height": 512, + "svg": "" + }, + "emacs": { + "width": 512, + "height": 512, + "svg": "" + }, + "emberscript": { + "width": 512, + "height": 512, + "svg": "" + }, + "ensime": { + "width": 450, + "height": 512, + "svg": "" + }, + "expo": { + "width": 457, + "height": 512, + "svg": "" + }, + "fbx": { + "width": 388, + "height": 512, + "svg": "" + }, + "ffmpeg": { + "width": 512, + "height": 512, + "svg": "" + }, + "fossa": { + "width": 438, + "height": 512, + "svg": "" + }, + "fabfile": { + "width": 512, + "height": 512, + "svg": "" + }, + "fabric": { + "width": 476, + "height": 512, + "svg": "" + }, + "factor": { + "width": 512, + "height": 512, + "svg": "" + }, + "falcon": { + "width": 512, + "height": 512, + "svg": "" + }, + "fancy": { + "width": 341, + "height": 512, + "svg": "" + }, + "fantom": { + "width": 512, + "height": 512, + "svg": "" + }, + "fauna": { + "width": 416, + "height": 512, + "svg": "" + }, + "faust": { + "width": 442, + "height": 512, + "svg": "" + }, + "fexl": { + "width": 512, + "height": 512, + "svg": "" + }, + "fiddle": { + "width": 512, + "height": 512, + "svg": "" + }, + "finaldraft": { + "width": 331, + "height": 512, + "svg": "" + }, + "finder": { + "width": 465, + "height": 512, + "svg": "" + }, + "firebase-bolt": { + "width": 272, + "height": 512, + "svg": "" + }, + "firebase": { + "width": 411, + "height": 512, + "svg": "" + }, + "flask": { + "width": 512, + "height": 512, + "svg": "" + }, + "floobits": { + "width": 512, + "height": 512, + "svg": "" + }, + "flow": { + "width": 413, + "height": 512, + "svg": "" + }, + "flutter": { + "width": 416, + "height": 512, + "svg": "" + }, + "flux": { + "width": 512, + "height": 512, + "svg": "" + }, + "font-bitmap": { + "width": 512, + "height": 512, + "svg": "" + }, + "font-outline": { + "width": 512, + "height": 512, + "svg": "" + }, + "font": { + "width": null, + "height": null, + "svg": "" + }, + "fontforge": { + "width": 450, + "height": 512, + "svg": "" + }, + "fortherecord": { + "width": 512, + "height": 512, + "svg": "" + }, + "fork": { + "width": 512, + "height": 512, + "svg": "" + }, + "fortran": { + "width": null, + "height": null, + "svg": "" + }, + "fossil": { + "width": 449, + "height": 512, + "svg": "" + }, + "fountain": { + "width": 512, + "height": 512, + "svg": "" + }, + "franca": { + "width": 512, + "height": 512, + "svg": "" + }, + "freedos": { + "width": 512, + "height": 512, + "svg": "" + }, + "freedesktop": { + "width": 512, + "height": 512, + "svg": "" + }, + "freemarker": { + "width": 512, + "height": 512, + "svg": "" + }, + "freemat": { + "width": 489, + "height": 512, + "svg": "" + }, + "frege": { + "width": 441, + "height": 512, + "svg": "" + }, + "fuelux": { + "width": 512, + "height": 512, + "svg": "" + }, + "fusebox": { + "width": 490, + "height": 512, + "svg": "" + }, + "futhark": { + "width": 512, + "height": 512, + "svg": "" + }, + "gams": { + "width": 512, + "height": 512, + "svg": "" + }, + "gap": { + "width": 512, + "height": 512, + "svg": "" + }, + "gauss": { + "width": 512, + "height": 512, + "svg": "" + }, + "gdb": { + "width": 512, + "height": 512, + "svg": "" + }, + "gf": { + "width": 512, + "height": 512, + "svg": "" + }, + "gimp": { + "width": 512, + "height": 512, + "svg": "" + }, + "gn": { + "width": 512, + "height": 512, + "svg": "" + }, + "gnu": { + "width": 512, + "height": 512, + "svg": "" + }, + "galaxy": { + "width": 512, + "height": 512, + "svg": "" + }, + "galen": { + "width": 512, + "height": 512, + "svg": "" + }, + "gamemaker": { + "width": 512, + "height": 512, + "svg": "" + }, + "gatsby": { + "width": 512, + "height": 512, + "svg": "" + }, + "genstat": { + "width": 512, + "height": 512, + "svg": "" + }, + "genshi": { + "width": 310, + "height": 512, + "svg": "" + }, + "gentoo": { + "width": 489, + "height": 512, + "svg": "" + }, + "ghostscript": { + "width": 410, + "height": 512, + "svg": "" + }, + "gitpod": { + "width": 444, + "height": 512, + "svg": "" + }, + "glade": { + "width": 512, + "height": 512, + "svg": "" + }, + "glyphs": { + "width": 512, + "height": 512, + "svg": "" + }, + "gnuplot": { + "width": 512, + "height": 512, + "svg": "" + }, + "go-old": { + "width": null, + "height": null, + "svg": "" + }, + "go": { + "width": 376, + "height": 512, + "svg": "" + }, + "goreleaser": { + "width": 391, + "height": 512, + "svg": "" + }, + "godot": { + "width": 512, + "height": 512, + "svg": "" + }, + "golo": { + "width": 512, + "height": 512, + "svg": "" + }, + "gosu": { + "width": 512, + "height": 512, + "svg": "" + }, + "gradle": { + "width": 509, + "height": 512, + "svg": "" + }, + "graphql-codegenerator": { + "width": 393, + "height": 512, + "svg": "" + }, + "graphql": { + "width": 512, + "height": 512, + "svg": "" + }, + "graphviz": { + "width": null, + "height": null, + "svg": "" + }, + "grapher": { + "width": 487, + "height": 512, + "svg": "" + }, + "graphite": { + "width": 512, + "height": 512, + "svg": "" + }, + "gravit-designer": { + "width": 512, + "height": 512, + "svg": "" + }, + "greenkeeper": { + "width": 512, + "height": 512, + "svg": "" + }, + "gridsome": { + "width": 512, + "height": 512, + "svg": "" + }, + "groovy": { + "width": 512, + "height": 512, + "svg": "" + }, + "hie": { + "width": 512, + "height": 512, + "svg": "" + }, + "hjson": { + "width": 512, + "height": 512, + "svg": "" + }, + "hack": { + "width": 350, + "height": 512, + "svg": "" + }, + "haml": { + "width": 396, + "height": 512, + "svg": "" + }, + "harbour": { + "width": 512, + "height": 512, + "svg": "" + }, + "hashicorp": { + "width": 512, + "height": 512, + "svg": "" + }, + "haxe": { + "width": 512, + "height": 512, + "svg": "" + }, + "haxedevelop": { + "width": 512, + "height": 512, + "svg": "" + }, + "helix": { + "width": 448, + "height": 512, + "svg": "" + }, + "hewlettpackard": { + "width": 512, + "height": 512, + "svg": "" + }, + "hitachi": { + "width": 512, + "height": 512, + "svg": "" + }, + "homebrew": { + "width": 397, + "height": 512, + "svg": "" + }, + "hop": { + "width": 512, + "height": 512, + "svg": "" + }, + "hoplon": { + "width": 512, + "height": 512, + "svg": "" + }, + "houdini": { + "width": 512, + "height": 512, + "svg": "" + }, + "houndci": { + "width": 512, + "height": 512, + "svg": "" + }, + "hugo": { + "width": 456, + "height": 512, + "svg": "" + }, + "husky": { + "width": 487, + "height": 512, + "svg": "" + }, + "hy": { + "width": 512, + "height": 512, + "svg": "" + }, + "hygen": { + "width": 512, + "height": 512, + "svg": "" + }, + "hyper": { + "width": 512, + "height": 512, + "svg": "" + }, + "icu": { + "width": 512, + "height": 512, + "svg": "" + }, + "idl": { + "width": 512, + "height": 512, + "svg": "" + }, + "igor-pro": { + "width": 512, + "height": 512, + "svg": "" + }, + "icomoon": { + "width": 512, + "height": 512, + "svg": "" + }, + "idris": { + "width": 279, + "height": 512, + "svg": "" + }, + "image": { + "width": 439, + "height": 512, + "svg": "" + }, + "imba-alt": { + "width": 512, + "height": 512, + "svg": "" + }, + "imba-old": { + "width": 512, + "height": 512, + "svg": "" + }, + "imba": { + "width": 512, + "height": 512, + "svg": "" + }, + "imgbot": { + "width": 360, + "height": 512, + "svg": "" + }, + "influxdata": { + "width": 504, + "height": 512, + "svg": "" + }, + "inform7": { + "width": 512, + "height": 512, + "svg": "" + }, + "ink": { + "width": 512, + "height": 512, + "svg": "" + }, + "inkscape": { + "width": 512, + "height": 512, + "svg": "" + }, + "innosetup": { + "width": 512, + "height": 512, + "svg": "" + }, + "intel": { + "width": 512, + "height": 512, + "svg": "" + }, + "io": { + "width": 512, + "height": 512, + "svg": "" + }, + "ioke": { + "width": 512, + "height": 512, + "svg": "" + }, + "ionic-project": { + "width": 512, + "height": 512, + "svg": "" + }, + "isabelle": { + "width": 512, + "height": 512, + "svg": "" + }, + "istanbul": { + "width": null, + "height": null, + "svg": "" + }, + "j": { + "width": 512, + "height": 512, + "svg": "" + }, + "json": { + "width": 512, + "height": 512, + "svg": "" + }, + "json-2": { + "width": 512, + "height": 512, + "svg": "" + }, + "json-ld1": { + "width": 512, + "height": 512, + "svg": "" + }, + "json-ld2": { + "width": 512, + "height": 512, + "svg": "" + }, + "json5": { + "width": 512, + "height": 512, + "svg": "" + }, + "jsx-alt": { + "width": 512, + "height": 512, + "svg": "" + }, + "jsx-atom": { + "width": 512, + "height": 512, + "svg": "" + }, + "jsx": { + "width": 512, + "height": 512, + "svg": "" + }, + "jade": { + "width": null, + "height": null, + "svg": "" + }, + "jakefile": { + "width": 512, + "height": 512, + "svg": "" + }, + "janet": { + "width": 455, + "height": 512, + "svg": "" + }, + "jasmine": { + "width": 512, + "height": 512, + "svg": "" + }, + "jest": { + "width": 450, + "height": 512, + "svg": "" + }, + "jinja": { + "width": 512, + "height": 512, + "svg": "" + }, + "jison": { + "width": 473, + "height": 512, + "svg": "" + }, + "jolie": { + "width": 512, + "height": 512, + "svg": "" + }, + "jsonnet": { + "width": 512, + "height": 512, + "svg": "" + }, + "julia": { + "width": 512, + "height": 512, + "svg": "" + }, + "junos": { + "width": 472, + "height": 512, + "svg": "" + }, + "jupyter": { + "width": 376, + "height": 512, + "svg": "" + }, + "knime": { + "width": 512, + "height": 512, + "svg": "" + }, + "krl": { + "width": 512, + "height": 512, + "svg": "" + }, + "kaitai": { + "width": 512, + "height": 512, + "svg": "" + }, + "karma": { + "width": 512, + "height": 512, + "svg": "" + }, + "keynote": { + "width": 434, + "height": 512, + "svg": "" + }, + "khronos": { + "width": 512, + "height": 512, + "svg": "" + }, + "kicad": { + "width": 512, + "height": 512, + "svg": "" + }, + "kibo": { + "width": 512, + "height": 512, + "svg": "" + }, + "kitchenci": { + "width": 476, + "height": 512, + "svg": "" + }, + "kivy": { + "width": null, + "height": null, + "svg": "" + }, + "knockout": { + "width": 512, + "height": 512, + "svg": "" + }, + "kotlin": { + "width": 512, + "height": 512, + "svg": "" + }, + "kubernetes": { + "width": 512, + "height": 512, + "svg": "" + }, + "kusto-alt": { + "width": 512, + "height": 512, + "svg": "" + }, + "kusto": { + "width": 512, + "height": 512, + "svg": "" + }, + "kx": { + "width": 512, + "height": 512, + "svg": "" + }, + "lfe": { + "width": 434, + "height": 512, + "svg": "" + }, + "lgtm": { + "width": 512, + "height": 512, + "svg": "" + }, + "linqpad": { + "width": 485, + "height": 512, + "svg": "" + }, + "llvm": { + "width": 512, + "height": 512, + "svg": "" + }, + "lolcode": { + "width": 411, + "height": 512, + "svg": "" + }, + "lsl": { + "width": 377, + "height": 512, + "svg": "" + }, + "latex": { + "width": null, + "height": null, + "svg": "" + }, + "labview": { + "width": 512, + "height": 512, + "svg": "" + }, + "lark": { + "width": 497, + "height": 512, + "svg": "" + }, + "lasso": { + "width": 512, + "height": 512, + "svg": "" + }, + "latino": { + "width": 512, + "height": 512, + "svg": "" + }, + "leaflet": { + "width": 460, + "height": 512, + "svg": "" + }, + "lean": { + "width": 315, + "height": 512, + "svg": "" + }, + "lefthook-alt": { + "width": 512, + "height": 512, + "svg": "" + }, + "lefthook": { + "width": 512, + "height": 512, + "svg": "" + }, + "leiningen": { + "width": 305, + "height": 512, + "svg": "" + }, + "lektor": { + "width": 512, + "height": 512, + "svg": "" + }, + "lerna": { + "width": 512, + "height": 512, + "svg": "" + }, + "lex-alt": { + "width": 512, + "height": 512, + "svg": "" + }, + "lex": { + "width": 500, + "height": 512, + "svg": "" + }, + "lightwave": { + "width": 512, + "height": 512, + "svg": "" + }, + "lighthouse": { + "width": 512, + "height": 512, + "svg": "" + }, + "lilypond": { + "width": 512, + "height": 512, + "svg": "" + }, + "lime": { + "width": 405, + "height": 512, + "svg": "" + }, + "lisp": { + "width": 512, + "height": 512, + "svg": "" + }, + "livescript": { + "width": null, + "height": null, + "svg": "" + }, + "logtalk": { + "width": 512, + "height": 512, + "svg": "" + }, + "lookml": { + "width": 329, + "height": 512, + "svg": "" + }, + "lua": { + "width": 512, + "height": 512, + "svg": "" + }, + "matlab": { + "width": 512, + "height": 512, + "svg": "" + }, + "mdx": { + "width": 512, + "height": 512, + "svg": "" + }, + "melpa": { + "width": 512, + "height": 512, + "svg": "" + }, + "mjml": { + "width": 512, + "height": 512, + "svg": "" + }, + "ms-dos": { + "width": 408, + "height": 512, + "svg": "" + }, + "macvim": { + "width": 512, + "height": 512, + "svg": "" + }, + "macaulay2": { + "width": 388, + "height": 512, + "svg": "" + }, + "magit": { + "width": 512, + "height": 512, + "svg": "" + }, + "mako": { + "width": 338, + "height": 512, + "svg": "" + }, + "manjaro": { + "width": 512, + "height": 512, + "svg": "" + }, + "manpage": { + "width": 512, + "height": 512, + "svg": "" + }, + "mapbox": { + "width": 512, + "height": 512, + "svg": "" + }, + "markdownlint": { + "width": 512, + "height": 512, + "svg": "" + }, + "marko": { + "width": null, + "height": null, + "svg": "" + }, + "mathjax": { + "width": 512, + "height": 512, + "svg": "" + }, + "mathematica": { + "width": 512, + "height": 512, + "svg": "" + }, + "matroska": { + "width": 512, + "height": 512, + "svg": "" + }, + "max": { + "width": 512, + "height": 512, + "svg": "" + }, + "maya": { + "width": 512, + "height": 512, + "svg": "" + }, + "mediawiki": { + "width": 512, + "height": 512, + "svg": "" + }, + "mercurial": { + "width": 512, + "height": 512, + "svg": "" + }, + "mercury": { + "width": 512, + "height": 512, + "svg": "" + }, + "mermaid": { + "width": 367, + "height": 512, + "svg": "" + }, + "meson-old": { + "width": 512, + "height": 512, + "svg": "" + }, + "meson": { + "width": 512, + "height": 512, + "svg": "" + }, + "metapost": { + "width": 512, + "height": 512, + "svg": "" + }, + "metal": { + "width": 512, + "height": 512, + "svg": "" + }, + "meteor": { + "width": 512, + "height": 512, + "svg": "" + }, + "microsoft-access": { + "width": 512, + "height": 512, + "svg": "" + }, + "microsoft-excel": { + "width": 512, + "height": 512, + "svg": "" + }, + "microsoft-infopath": { + "width": 512, + "height": 512, + "svg": "" + }, + "microsoft-lync": { + "width": 512, + "height": 512, + "svg": "" + }, + "microsoft-onenote": { + "width": 512, + "height": 512, + "svg": "" + }, + "microsoft-outlook": { + "width": 507, + "height": 512, + "svg": "" + }, + "microsoft-powerpoint": { + "width": 512, + "height": 512, + "svg": "" + }, + "microsoft-project": { + "width": 512, + "height": 512, + "svg": "" + }, + "microsoft-publisher": { + "width": 512, + "height": 512, + "svg": "" + }, + "microsoft-visio": { + "width": 512, + "height": 512, + "svg": "" + }, + "microsoft-word": { + "width": 512, + "height": 512, + "svg": "" + }, + "minecraft": { + "width": 512, + "height": 512, + "svg": "" + }, + "minizinc": { + "width": 512, + "height": 512, + "svg": "" + }, + "mint": { + "width": 512, + "height": 512, + "svg": "" + }, + "mirah": { + "width": 311, + "height": 512, + "svg": "" + }, + "miranda": { + "width": 300, + "height": 512, + "svg": "" + }, + "mixin": { + "width": 418, + "height": 512, + "svg": "" + }, + "mocha": { + "width": 310, + "height": 512, + "svg": "" + }, + "modelica": { + "width": 512, + "height": 512, + "svg": "" + }, + "modernweb": { + "width": 512, + "height": 512, + "svg": "" + }, + "modo": { + "width": 512, + "height": 512, + "svg": "" + }, + "modula-2": { + "width": 512, + "height": 512, + "svg": "" + }, + "modula-3": { + "width": 512, + "height": 512, + "svg": "" + }, + "moho": { + "width": 512, + "height": 512, + "svg": "" + }, + "moleculer": { + "width": 512, + "height": 512, + "svg": "" + }, + "moment-timezone": { + "width": 512, + "height": 512, + "svg": "" + }, + "moment": { + "width": 512, + "height": 512, + "svg": "" + }, + "monkey": { + "width": 512, + "height": 512, + "svg": "" + }, + "mono": { + "width": 512, + "height": 512, + "svg": "" + }, + "monotone": { + "width": 415, + "height": 512, + "svg": "" + }, + "motorola": { + "width": 512, + "height": 512, + "svg": "" + }, + "moustache": { + "width": 512, + "height": 512, + "svg": "" + }, + "mruby": { + "width": 460, + "height": 512, + "svg": "" + }, + "mupad": { + "width": null, + "height": null, + "svg": "" + }, + "nasm": { + "width": 512, + "height": 512, + "svg": "" + }, + "nant": { + "width": 512, + "height": 512, + "svg": "" + }, + "ndepend": { + "width": 512, + "height": 512, + "svg": "" + }, + "neon": { + "width": 470, + "height": 512, + "svg": "" + }, + "npm-old": { + "width": null, + "height": null, + "svg": "" + }, + "nsis-old": { + "width": 512, + "height": 512, + "svg": "" + }, + "nsis": { + "width": 512, + "height": 512, + "svg": "" + }, + "nsri-alt": { + "width": 355, + "height": 512, + "svg": "" + }, + "nsri": { + "width": 426, + "height": 512, + "svg": "" + }, + "nvidia": { + "width": 512, + "height": 512, + "svg": "" + }, + "nwscript": { + "width": 512, + "height": 512, + "svg": "" + }, + "nxc": { + "width": 343, + "height": 512, + "svg": "" + }, + "nano": { + "width": 383, + "height": 512, + "svg": "" + }, + "nanoc": { + "width": 512, + "height": 512, + "svg": "" + }, + "neko": { + "width": 486, + "height": 512, + "svg": "" + }, + "nemerle": { + "width": 512, + "height": 512, + "svg": "" + }, + "neo4j": { + "width": 459, + "height": 512, + "svg": "" + }, + "nessus": { + "width": 512, + "height": 512, + "svg": "" + }, + "nestjs": { + "width": 512, + "height": 512, + "svg": "" + }, + "netlinx": { + "width": 512, + "height": 512, + "svg": "" + }, + "netlogo": { + "width": 512, + "height": 512, + "svg": "" + }, + "netlify": { + "width": 512, + "height": 512, + "svg": "" + }, + "new-relic": { + "width": 512, + "height": 512, + "svg": "" + }, + "nextjs": { + "width": 512, + "height": 512, + "svg": "" + }, + "nextflow": { + "width": 512, + "height": 512, + "svg": "" + }, + "ngrx": { + "width": 478, + "height": 512, + "svg": "" + }, + "nib": { + "width": 512, + "height": 512, + "svg": "" + }, + "nickle": { + "width": 512, + "height": 512, + "svg": "" + }, + "nightwatch": { + "width": 423, + "height": 512, + "svg": "" + }, + "nimble": { + "width": 512, + "height": 512, + "svg": "" + }, + "nimrod": { + "width": 512, + "height": 512, + "svg": "" + }, + "nintendo64": { + "width": 512, + "height": 512, + "svg": "" + }, + "nit": { + "width": 512, + "height": 512, + "svg": "" + }, + "nix": { + "width": 512, + "height": 512, + "svg": "" + }, + "nmap": { + "width": 512, + "height": 512, + "svg": "" + }, + "nodemon": { + "width": 451, + "height": 512, + "svg": "" + }, + "nokogiri": { + "width": 512, + "height": 512, + "svg": "" + }, + "nomad": { + "width": 438, + "height": 512, + "svg": "" + }, + "noon": { + "width": 512, + "height": 512, + "svg": "" + }, + "normalise": { + "width": 512, + "height": 512, + "svg": "" + }, + "nuget": { + "width": 512, + "height": 512, + "svg": "" + }, + "nuclide": { + "width": 427, + "height": 512, + "svg": "" + }, + "numpy-old": { + "width": 512, + "height": 512, + "svg": "" + }, + "numpy": { + "width": 480, + "height": 512, + "svg": "" + }, + "nunjucks": { + "width": null, + "height": null, + "svg": "" + }, + "nuxt": { + "width": 512, + "height": 512, + "svg": "" + }, + "nx": { + "width": 512, + "height": 512, + "svg": "" + }, + "ocaml": { + "width": 512, + "height": 512, + "svg": "" + }, + "ooc": { + "width": 387, + "height": 512, + "svg": "" + }, + "os2": { + "width": 512, + "height": 512, + "svg": "" + }, + "owl": { + "width": 318, + "height": 512, + "svg": "" + }, + "oberon": { + "width": 512, + "height": 512, + "svg": "" + }, + "objective-j": { + "width": 512, + "height": 512, + "svg": "" + }, + "octave": { + "width": 512, + "height": 512, + "svg": "" + }, + "odin": { + "width": 512, + "height": 512, + "svg": "" + }, + "ogone": { + "width": 461, + "height": 512, + "svg": "" + }, + "omnigraffle": { + "width": 512, + "height": 512, + "svg": "" + }, + "opa": { + "width": 512, + "height": 512, + "svg": "" + }, + "openapi": { + "width": 512, + "height": 512, + "svg": "" + }, + "openbsd-alt": { + "width": 512, + "height": 512, + "svg": "" + }, + "openbsd": { + "width": 512, + "height": 512, + "svg": "" + }, + "opencl": { + "width": 512, + "height": 512, + "svg": "" + }, + "opencv": { + "width": 512, + "height": 512, + "svg": "" + }, + "openexr": { + "width": 481, + "height": 512, + "svg": "" + }, + "opengl": { + "width": 512, + "height": 512, + "svg": "" + }, + "openindiana": { + "width": 512, + "height": 512, + "svg": "" + }, + "openoffice": { + "width": 512, + "height": 512, + "svg": "" + }, + "openpolicyagent": { + "width": 460, + "height": 512, + "svg": "" + }, + "opensolaris": { + "width": 512, + "height": 512, + "svg": "" + }, + "openstack": { + "width": 512, + "height": 512, + "svg": "" + }, + "openvms": { + "width": null, + "height": null, + "svg": "" + }, + "openvpn": { + "width": 512, + "height": 512, + "svg": "" + }, + "openzfs": { + "width": 512, + "height": 512, + "svg": "" + }, + "openscad": { + "width": 641, + "height": 512, + "svg": "" + }, + "org-mode": { + "width": 467, + "height": 512, + "svg": "" + }, + "ox": { + "width": 512, + "height": 512, + "svg": "" + }, + "oxygene": { + "width": 512, + "height": 512, + "svg": "" + }, + "oz": { + "width": 512, + "height": 512, + "svg": "" + }, + "p4": { + "width": 512, + "height": 512, + "svg": "" + }, + "pawn": { + "width": 242, + "height": 512, + "svg": "" + }, + "pcd": { + "width": 512, + "height": 512, + "svg": "" + }, + "phpunit": { + "width": 512, + "height": 512, + "svg": "" + }, + "pico-8": { + "width": null, + "height": null, + "svg": "" + }, + "pm2": { + "width": 512, + "height": 512, + "svg": "" + }, + "pnpm": { + "width": 512, + "height": 512, + "svg": "" + }, + "pov-ray": { + "width": 371, + "height": 512, + "svg": "" + }, + "pros": { + "width": 512, + "height": 512, + "svg": "" + }, + "pan": { + "width": 512, + "height": 512, + "svg": "" + }, + "papyrus": { + "width": 512, + "height": 512, + "svg": "" + }, + "parrot": { + "width": 375, + "height": 512, + "svg": "" + }, + "pascal": { + "width": 512, + "height": 512, + "svg": "" + }, + "patch": { + "width": 512, + "height": 512, + "svg": "" + }, + "pegjs": { + "width": 417, + "height": 512, + "svg": "" + }, + "perl6": { + "width": 512, + "height": 512, + "svg": "" + }, + "phalcon": { + "width": 448, + "height": 512, + "svg": "" + }, + "phoenix": { + "width": 512, + "height": 512, + "svg": "" + }, + "photorec": { + "width": 512, + "height": 512, + "svg": "" + }, + "phraseapp": { + "width": 512, + "height": 512, + "svg": "" + }, + "pickle": { + "width": 370, + "height": 512, + "svg": "" + }, + "picolisp": { + "width": 512, + "height": 512, + "svg": "" + }, + "pike": { + "width": 512, + "height": 512, + "svg": "" + }, + "pinescript": { + "width": 512, + "height": 512, + "svg": "" + }, + "pipenv": { + "width": 512, + "height": 512, + "svg": "" + }, + "platformio": { + "width": 425, + "height": 512, + "svg": "" + }, + "pod": { + "width": 512, + "height": 512, + "svg": "" + }, + "pogoscript": { + "width": 286, + "height": 512, + "svg": "" + }, + "pointwise": { + "width": 512, + "height": 512, + "svg": "" + }, + "polymer": { + "width": 512, + "height": 512, + "svg": "" + }, + "pony": { + "width": 512, + "height": 512, + "svg": "" + }, + "postcss": { + "width": null, + "height": null, + "svg": "" + }, + "postscript": { + "width": 512, + "height": 512, + "svg": "" + }, + "powerbuilder": { + "width": 497, + "height": 512, + "svg": "" + }, + "powerpc": { + "width": 512, + "height": 512, + "svg": "" + }, + "powershell": { + "width": 512, + "height": 512, + "svg": "" + }, + "precision": { + "width": 512, + "height": 512, + "svg": "" + }, + "precommit": { + "width": 512, + "height": 512, + "svg": "" + }, + "prettier": { + "width": 439, + "height": 512, + "svg": "" + }, + "prisma": { + "width": null, + "height": null, + "svg": "" + }, + "processing": { + "width": 512, + "height": 512, + "svg": "" + }, + "progress-old": { + "width": 512, + "height": 512, + "svg": "" + }, + "progress": { + "width": 479, + "height": 512, + "svg": "" + }, + "propeller": { + "width": 512, + "height": 512, + "svg": "" + }, + "proselint": { + "width": 512, + "height": 512, + "svg": "" + }, + "protractor": { + "width": 512, + "height": 512, + "svg": "" + }, + "pug-old": { + "width": 512, + "height": 512, + "svg": "" + }, + "pug": { + "width": 512, + "height": 512, + "svg": "" + }, + "pullapprove": { + "width": 512, + "height": 512, + "svg": "" + }, + "puppet": { + "width": 335, + "height": 512, + "svg": "" + }, + "pure": { + "width": 293, + "height": 512, + "svg": "" + }, + "purebasic": { + "width": 512, + "height": 512, + "svg": "" + }, + "purescript": { + "width": 512, + "height": 512, + "svg": "" + }, + "pypi": { + "width": 454, + "height": 512, + "svg": "" + }, + "pyup": { + "width": 443, + "height": 512, + "svg": "" + }, + "pyret": { + "width": 512, + "height": 500, + "svg": "" + }, + "q#": { + "width": 382, + "height": 512, + "svg": "" + }, + "qt": { + "width": 512, + "height": 512, + "svg": "" + }, + "qiskit": { + "width": 512, + "height": 512, + "svg": "" + }, + "qlikview": { + "width": 512, + "height": 512, + "svg": "" + }, + "quasar": { + "width": 512, + "height": 512, + "svg": "" + }, + "r": { + "width": 512, + "height": 512, + "svg": "" + }, + "raml": { + "width": null, + "height": null, + "svg": "" + }, + "rdata": { + "width": 512, + "height": 512, + "svg": "" + }, + "rdoc": { + "width": 512, + "height": 512, + "svg": "" + }, + "realbasic": { + "width": 512, + "height": 512, + "svg": "" + }, + "risc-v": { + "width": 512, + "height": 512, + "svg": "" + }, + "rspec": { + "width": 512, + "height": 512, + "svg": "" + }, + "rstudio": { + "width": 512, + "height": 512, + "svg": "" + }, + "racket": { + "width": 512, + "height": 512, + "svg": "" + }, + "rascal": { + "width": 512, + "height": 512, + "svg": "" + }, + "razzle": { + "width": 403, + "height": 512, + "svg": "" + }, + "rescript": { + "width": 512, + "height": 512, + "svg": "" + }, + "reactos": { + "width": 512, + "height": 512, + "svg": "" + }, + "readthedocs": { + "width": 402, + "height": 512, + "svg": "" + }, + "reason": { + "width": 512, + "height": 512, + "svg": "" + }, + "reasonstudios-alt": { + "width": 512, + "height": 512, + "svg": "" + }, + "reasonstudios": { + "width": 456, + "height": 512, + "svg": "" + }, + "rebol": { + "width": 512, + "height": 512, + "svg": "" + }, + "red-old": { + "width": 512, + "height": 512, + "svg": "" + }, + "red": { + "width": 512, + "height": 512, + "svg": "" + }, + "redux": { + "width": 512, + "height": 512, + "svg": "" + }, + "reek": { + "width": 512, + "height": 512, + "svg": "" + }, + "regex": { + "width": 512, + "height": 512, + "svg": "" + }, + "remark": { + "width": 512, + "height": 512, + "svg": "" + }, + "renovate": { + "width": 512, + "height": 512, + "svg": "" + }, + "rexx": { + "width": 353, + "height": 512, + "svg": "" + }, + "rhino3d": { + "width": 512, + "height": 512, + "svg": "" + }, + "ring": { + "width": 454, + "height": 512, + "svg": "" + }, + "riot-old": { + "width": 512, + "height": 512, + "svg": "" + }, + "riot": { + "width": 512, + "height": 512, + "svg": "" + }, + "rmarkdown": { + "width": 512, + "height": 512, + "svg": "" + }, + "robotframework-old": { + "width": 512, + "height": 512, + "svg": "" + }, + "robotframework": { + "width": 512, + "height": 512, + "svg": "" + }, + "robots": { + "width": 512, + "height": 512, + "svg": "" + }, + "rollup-old": { + "width": 446, + "height": 512, + "svg": "" + }, + "rollup": { + "width": 387, + "height": 512, + "svg": "" + }, + "rubocop": { + "width": 433, + "height": 512, + "svg": "" + }, + "rubygems": { + "width": 447, + "height": 512, + "svg": "" + }, + "sac": { + "width": 384, + "height": 512, + "svg": "" + }, + "sas": { + "width": 342, + "height": 512, + "svg": "" + }, + "sbt": { + "width": 512, + "height": 512, + "svg": "" + }, + "sparc": { + "width": 286, + "height": 512, + "svg": "" + }, + "sqf": { + "width": 512, + "height": 512, + "svg": "" + }, + "sqlite": { + "width": 458, + "height": 512, + "svg": "" + }, + "svn": { + "width": 512, + "height": 512, + "svg": "" + }, + "sage": { + "width": 512, + "height": 512, + "svg": "" + }, + "sails": { + "width": 512, + "height": 512, + "svg": "" + }, + "saltstack": { + "width": 500, + "height": 512, + "svg": "" + }, + "san": { + "width": 425, + "height": 512, + "svg": "" + }, + "sandbox": { + "width": 512, + "height": 512, + "svg": "" + }, + "scheme": { + "width": 350, + "height": 512, + "svg": "" + }, + "scilab": { + "width": 512, + "height": 512, + "svg": "" + }, + "scilla": { + "width": 512, + "height": 512, + "svg": "" + }, + "scratch": { + "width": 271, + "height": 512, + "svg": "" + }, + "scrutinizer": { + "width": 447, + "height": 512, + "svg": "" + }, + "self": { + "width": 512, + "height": 512, + "svg": "" + }, + "semanticrelease": { + "width": 444, + "height": 512, + "svg": "" + }, + "sentry": { + "width": 512, + "height": 512, + "svg": "" + }, + "sequelize": { + "width": 443, + "height": 512, + "svg": "" + }, + "serverless": { + "width": 512, + "height": 512, + "svg": "" + }, + "service-fabric": { + "width": 512, + "height": 512, + "svg": "" + }, + "shadowcljs": { + "width": 512, + "height": 512, + "svg": "" + }, + "shellcheck": { + "width": 512, + "height": 512, + "svg": "" + }, + "shen": { + "width": null, + "height": null, + "svg": "" + }, + "shipit": { + "width": 512, + "height": 512, + "svg": "" + }, + "shippable": { + "width": 512, + "height": 512, + "svg": "" + }, + "shuriken": { + "width": 512, + "height": 512, + "svg": "" + }, + "sigils": { + "width": null, + "height": null, + "svg": "" + }, + "silicongraphics": { + "width": 506, + "height": 512, + "svg": "" + }, + "silverstripe": { + "width": 508, + "height": 512, + "svg": "" + }, + "sinatra": { + "width": 512, + "height": 512, + "svg": "" + }, + "sketchup-layout": { + "width": 512, + "height": 512, + "svg": "" + }, + "sketchup-make": { + "width": 475, + "height": 512, + "svg": "" + }, + "sketchup-stylebuilder": { + "width": 482, + "height": 512, + "svg": "" + }, + "slash": { + "width": 512, + "height": 512, + "svg": "" + }, + "smartos-alt": { + "width": 512, + "height": 512, + "svg": "" + }, + "smartos": { + "width": 512, + "height": 512, + "svg": "" + }, + "snapcraft": { + "width": 512, + "height": 512, + "svg": "" + }, + "snort": { + "width": 512, + "height": 512, + "svg": "" + }, + "snowpack": { + "width": 512, + "height": 512, + "svg": "" + }, + "snyk": { + "width": 280, + "height": 512, + "svg": "" + }, + "solidarity": { + "width": 346, + "height": 512, + "svg": "" + }, + "solidity": { + "width": 330, + "height": 512, + "svg": "" + }, + "sophia": { + "width": 489, + "height": 512, + "svg": "" + }, + "sorbet": { + "width": 397, + "height": 512, + "svg": "" + }, + "source": { + "width": 512, + "height": 512, + "svg": "" + }, + "spacemacs": { + "width": 512, + "height": 512, + "svg": "" + }, + "spacengine": { + "width": 474, + "height": 512, + "svg": "" + }, + "spray": { + "width": 448, + "height": 512, + "svg": "" + }, + "stan": { + "width": 512, + "height": 512, + "svg": "" + }, + "stata": { + "width": 512, + "height": 512, + "svg": "" + }, + "stdlibjs": { + "width": 460, + "height": 512, + "svg": "" + }, + "stencil": { + "width": 405, + "height": 512, + "svg": "" + }, + "stitches": { + "width": 512, + "height": 512, + "svg": "" + }, + "storybook": { + "width": null, + "height": null, + "svg": "" + }, + "storyist": { + "width": 512, + "height": 512, + "svg": "" + }, + "strings": { + "width": null, + "height": null, + "svg": "" + }, + "stylable": { + "width": 455, + "height": 512, + "svg": "" + }, + "styledcomponents": { + "width": 512, + "height": 512, + "svg": "" + }, + "stylelint": { + "width": null, + "height": null, + "svg": "" + }, + "stylishhaskell": { + "width": 417, + "height": 512, + "svg": "" + }, + "stylus-orb": { + "width": 512, + "height": 512, + "svg": "" + }, + "stylus-s": { + "width": 376, + "height": 512, + "svg": "" + }, + "stylus": { + "width": 512, + "height": 512, + "svg": "" + }, + "sublime": { + "width": 512, + "height": 512, + "svg": "" + }, + "supercollider": { + "width": 512, + "height": 512, + "svg": "" + }, + "svelte": { + "width": 426, + "height": 512, + "svg": "" + }, + "swagger": { + "width": 512, + "height": 512, + "svg": "" + }, + "systemverilog": { + "width": 512, + "height": 512, + "svg": "" + }, + "tfs": { + "width": 510, + "height": 512, + "svg": "" + }, + "tla+": { + "width": 512, + "height": 512, + "svg": "" + }, + "toml": { + "width": 512, + "height": 512, + "svg": "" + }, + "totvs": { + "width": 502, + "height": 512, + "svg": "" + }, + "tsx-alt": { + "width": 512, + "height": 512, + "svg": "" + }, + "tsx": { + "width": 512, + "height": 512, + "svg": "" + }, + "ttcn-3": { + "width": 400, + "height": 512, + "svg": "" + }, + "txl": { + "width": 512, + "height": 512, + "svg": "" + }, + "tag": { + "width": "32", + "height": "32", + "svg": "\n \n \n" + }, + "tailwind": { + "width": 512, + "height": 512, + "svg": "" + }, + "tcl": { + "width": 242, + "height": 512, + "svg": "" + }, + "templatetoolkit": { + "width": 512, + "height": 512, + "svg": "" + }, + "templeos": { + "width": 473, + "height": 512, + "svg": "" + }, + "terminal": { + "width": 512, + "height": 512, + "svg": "" + }, + "tern": { + "width": 491, + "height": 512, + "svg": "" + }, + "terraform": { + "width": 458, + "height": 512, + "svg": "" + }, + "terser": { + "width": 512, + "height": 512, + "svg": "" + }, + "test-coffeescript": { + "width": 512, + "height": 512, + "svg": "" + }, + "test-directory": { + "width": 512, + "height": 512, + "svg": "" + }, + "test-generic": { + "width": 512, + "height": 512, + "svg": "" + }, + "test-go": { + "width": 512, + "height": 512, + "svg": "" + }, + "test-haskell": { + "width": 512, + "height": 512, + "svg": "" + }, + "test-js": { + "width": 512, + "height": 512, + "svg": "" + }, + "test-perl": { + "width": 512, + "height": 512, + "svg": "" + }, + "test-python": { + "width": 512, + "height": 512, + "svg": "" + }, + "test-react": { + "width": 512, + "height": 512, + "svg": "" + }, + "test-ruby": { + "width": 512, + "height": 512, + "svg": "" + }, + "test-rust": { + "width": 512, + "height": 512, + "svg": "" + }, + "test-typescript": { + "width": 512, + "height": 512, + "svg": "" + }, + "testcafe": { + "width": 512, + "height": 512, + "svg": "" + }, + "textmate": { + "width": 512, + "height": 512, + "svg": "" + }, + "textile": { + "width": 512, + "height": 512, + "svg": "" + }, + "thor": { + "width": 512, + "height": 512, + "svg": "" + }, + "tilt": { + "width": 470, + "height": 512, + "svg": "" + }, + "tinymce": { + "width": 512, + "height": 512, + "svg": "" + }, + "tipe": { + "width": 331, + "height": 512, + "svg": "" + }, + "tortoisesvn": { + "width": 512, + "height": 512, + "svg": "" + }, + "truffle": { + "width": 490, + "height": 512, + "svg": "" + }, + "turing": { + "width": 512, + "height": 512, + "svg": "" + }, + "twig": { + "width": 409, + "height": 512, + "svg": "" + }, + "twine": { + "width": 448, + "height": 512, + "svg": "" + }, + "typedoc": { + "width": 467, + "height": 512, + "svg": "" + }, + "typescript-alt": { + "width": 512, + "height": 512, + "svg": "" + }, + "typescript": { + "width": 512, + "height": 512, + "svg": "" + }, + "typings": { + "width": 512, + "height": 512, + "svg": "" + }, + "ufo": { + "width": 512, + "height": 512, + "svg": "" + }, + "uno": { + "width": 512, + "height": 512, + "svg": "" + }, + "unibeautify": { + "width": 395, + "height": 512, + "svg": "" + }, + "unicode": { + "width": 512, + "height": 512, + "svg": "" + }, + "unrealscript": { + "width": 512, + "height": 512, + "svg": "" + }, + "urweb": { + "width": 512, + "height": 512, + "svg": "" + }, + "v-ray": { + "width": 512, + "height": 512, + "svg": "" + }, + "v": { + "width": 512, + "height": 512, + "svg": "" + }, + "v8-turbofan": { + "width": 512, + "height": 512, + "svg": "" + }, + "v8": { + "width": 512, + "height": 512, + "svg": "" + }, + "vax": { + "width": 512, + "height": 512, + "svg": "" + }, + "vcl": { + "width": 512, + "height": 512, + "svg": "" + }, + "vhdl": { + "width": 512, + "height": 512, + "svg": "" + }, + "vmware": { + "width": 512, + "height": 512, + "svg": "" + }, + "vscode": { + "width": 512, + "height": 512, + "svg": "" + }, + "vsts": { + "width": 512, + "height": 512, + "svg": "" + }, + "vagrant": { + "width": null, + "height": null, + "svg": "" + }, + "vala": { + "width": 512, + "height": 512, + "svg": "" + }, + "velocity": { + "width": 457, + "height": 512, + "svg": "" + }, + "verilog": { + "width": 512, + "height": 512, + "svg": "" + }, + "vertexshader": { + "width": 512, + "height": 512, + "svg": "" + }, + "video": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "virtualbox-alt": { + "width": 512, + "height": 512, + "svg": "" + }, + "virtualbox": { + "width": 440, + "height": 512, + "svg": "" + }, + "vite": { + "width": 510, + "height": 512, + "svg": "" + }, + "vue": { + "width": 512, + "height": 512, + "svg": "" + }, + "vyper": { + "width": 512, + "height": 512, + "svg": "" + }, + "w3c": { + "width": 512, + "height": 512, + "svg": "" + }, + "wasi": { + "width": 512, + "height": 512, + "svg": "" + }, + "wdl": { + "width": 356, + "height": 512, + "svg": "" + }, + "wallaby": { + "width": 512, + "height": 512, + "svg": "" + }, + "walt": { + "width": 512, + "height": 512, + "svg": "" + }, + "warcraft-iii": { + "width": 512, + "height": 512, + "svg": "" + }, + "watchman": { + "width": 512, + "height": 512, + "svg": "" + }, + "webassembly": { + "width": 512, + "height": 512, + "svg": "" + }, + "webgl": { + "width": 512, + "height": 512, + "svg": "" + }, + "webvtt": { + "width": 512, + "height": 512, + "svg": "" + }, + "webhint": { + "width": 512, + "height": 512, + "svg": "" + }, + "webpack-old": { + "width": 450, + "height": 512, + "svg": "" + }, + "webpack": { + "width": 462, + "height": 512, + "svg": "" + }, + "wenyan": { + "width": 300, + "height": 512, + "svg": "" + }, + "wercker": { + "width": 384, + "height": 512, + "svg": "" + }, + "wget": { + "width": 512, + "height": 512, + "svg": "" + }, + "winui": { + "width": 512, + "height": 512, + "svg": "" + }, + "windi": { + "width": 472, + "height": 512, + "svg": "" + }, + "wine": { + "width": 302, + "height": 512, + "svg": "" + }, + "wolfram": { + "width": 512, + "height": 512, + "svg": "" + }, + "workbox": { + "width": 512, + "height": 512, + "svg": "" + }, + "wurst": { + "width": 512, + "height": 512, + "svg": "" + }, + "x10": { + "width": 512, + "height": 512, + "svg": "" + }, + "xmos": { + "width": 512, + "height": 512, + "svg": "" + }, + "xpages": { + "width": 512, + "height": 512, + "svg": "" + }, + "xamarin": { + "width": 512, + "height": 512, + "svg": "" + }, + "xtend": { + "width": 512, + "height": 512, + "svg": "" + }, + "xubuntu": { + "width": 512, + "height": 512, + "svg": "" + }, + "yaml-alt1": { + "width": 512, + "height": 512, + "svg": "" + }, + "yaml-alt2": { + "width": 512, + "height": 512, + "svg": "" + }, + "yaml-alt3": { + "width": 512, + "height": 512, + "svg": "" + }, + "yaml-alt4": { + "width": 512, + "height": 512, + "svg": "" + }, + "yaml": { + "width": 457, + "height": 512, + "svg": "" + }, + "yamllint": { + "width": 512, + "height": 512, + "svg": "" + }, + "yang": { + "width": 512, + "height": 512, + "svg": "" + }, + "yara": { + "width": 512, + "height": 512, + "svg": "" + }, + "yui": { + "width": 512, + "height": 512, + "svg": "" + }, + "yasm": { + "width": 462, + "height": 512, + "svg": "" + }, + "yorick": { + "width": 417, + "height": 512, + "svg": "" + }, + "zbrush": { + "width": 512, + "height": 512, + "svg": "" + }, + "zeit": { + "width": 512, + "height": 512, + "svg": "" + }, + "zephir": { + "width": 512, + "height": 512, + "svg": "" + }, + "zig": { + "width": 512, + "height": 512, + "svg": "" + }, + "zilog": { + "width": 512, + "height": 512, + "svg": "" + }, + "zimpl": { + "width": 476, + "height": 512, + "svg": "" + }, + "zorinos": { + "width": 512, + "height": 512, + "svg": "" + }, + "zork": { + "width": 470, + "height": 512, + "svg": "" + }, + "bithound": { + "width": 466, + "height": 512, + "svg": "" + }, + "curl": { + "width": 512, + "height": 512, + "svg": "" + }, + "dbase": { + "width": 512, + "height": 512, + "svg": "" + }, + "dotenv": { + "width": 512, + "height": 512, + "svg": "" + }, + "dotjs": { + "width": 512, + "height": 512, + "svg": "" + }, + "draw.io": { + "width": 512, + "height": 512, + "svg": "" + }, + "ec": { + "width": 512, + "height": 512, + "svg": "" + }, + "fthtml": { + "width": 512, + "height": 512, + "svg": "" + }, + "gltf": { + "width": 512, + "height": 512, + "svg": "" + }, + "illumos": { + "width": 394, + "height": 512, + "svg": "" + }, + "jscpd": { + "width": 512, + "height": 512, + "svg": "" + }, + "kos": { + "width": 512, + "height": 512, + "svg": "" + }, + "libuv": { + "width": 435, + "height": 512, + "svg": "" + }, + "mirc": { + "width": 512, + "height": 512, + "svg": "" + }, + "nginx": { + "width": 512, + "height": 512, + "svg": "" + }, + "pkgsrc": { + "width": 487, + "height": 512, + "svg": "" + }, + "pytest": { + "width": 512, + "height": 512, + "svg": "" + }, + "restructuredtext": { + "width": 512, + "height": 512, + "svg": "" + }, + "restql": { + "width": 458, + "height": 512, + "svg": "" + }, + "rsync": { + "width": 512, + "height": 512, + "svg": "" + }, + "tmux": { + "width": 512, + "height": 512, + "svg": "" + }, + "xmake": { + "width": 512, + "height": 512, + "svg": "" + }, + "appcelerator": { + "width": 512, + "height": 512, + "svg": "" + }, + "appstore": { + "width": 512, + "height": 512, + "svg": "" + }, + "aptana": { + "width": 512, + "height": 512, + "svg": "" + }, + "asterisk": { + "width": 512, + "height": 512, + "svg": "" + }, + "atom": { + "width": 512, + "height": 512, + "svg": "" + }, + "backbone": { + "width": 413, + "height": 512, + "svg": "" + }, + "bing": { + "width": 410, + "height": 512, + "svg": "" + }, + "bloatstrap": { + "width": 512, + "height": 512, + "svg": "" + }, + "bower": { + "width": 512, + "height": 512, + "svg": "" + }, + "brackets": { + "width": 512, + "height": 512, + "svg": "" + }, + "bugsense": { + "width": 512, + "height": 512, + "svg": "" + }, + "celluloid": { + "width": 512, + "height": 512, + "svg": "" + }, + "cisco": { + "width": 512, + "height": 512, + "svg": "" + }, + "clojure-alt": { + "width": 512, + "height": 512, + "svg": "" + }, + "clojure": { + "width": 512, + "height": 512, + "svg": "" + }, + "cloud9": { + "width": 512, + "height": 512, + "svg": "" + }, + "coda": { + "width": 512, + "height": 512, + "svg": "" + }, + "code-badge": { + "width": 439, + "height": 512, + "svg": "" + }, + "code": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "codeigniter": { + "width": 427, + "height": 512, + "svg": "" + }, + "codrops": { + "width": 512, + "height": 512, + "svg": "" + }, + "coffeescript": { + "width": 512, + "height": 512, + "svg": "" + }, + "compass": { + "width": 512, + "height": 512, + "svg": "" + }, + "creativecommons-badge": { + "width": 512, + "height": 512, + "svg": "" + }, + "creativecommons": { + "width": 512, + "height": 512, + "svg": "" + }, + "css3-full": { + "width": 512, + "height": 512, + "svg": "" + }, + "cssdeck": { + "width": 512, + "height": 512, + "svg": "" + }, + "csstricks": { + "width": 478, + "height": 512, + "svg": "" + }, + "dart": { + "width": 512, + "height": 512, + "svg": "" + }, + "database": { + "width": 390, + "height": 512, + "svg": "" + }, + "debian": { + "width": 410, + "height": 512, + "svg": "" + }, + "django": { + "width": 512, + "height": 512, + "svg": "" + }, + "dlang": { + "width": 512, + "height": 512, + "svg": "" + }, + "doctrine": { + "width": 388, + "height": 512, + "svg": "" + }, + "dojo": { + "width": 512, + "height": 512, + "svg": "" + }, + "dotnet": { + "width": 512, + "height": 512, + "svg": "" + }, + "dreamweaver": { + "width": 512, + "height": 512, + "svg": "" + }, + "eclipse": { + "width": 512, + "height": 512, + "svg": "" + }, + "envato": { + "width": 449, + "height": 512, + "svg": "" + }, + "extjs": { + "width": 512, + "height": 512, + "svg": "" + }, + "fsharp": { + "width": 512, + "height": 512, + "svg": "" + }, + "ghost-small": { + "width": 512, + "height": 512, + "svg": "" + }, + "ghost": { + "width": 499, + "height": 512, + "svg": "" + }, + "git-branch": { + "width": 366, + "height": 512, + "svg": "" + }, + "git-commit": { + "width": 512, + "height": 512, + "svg": "" + }, + "git-compare": { + "width": 443, + "height": 512, + "svg": "" + }, + "git-merge": { + "width": 439, + "height": 512, + "svg": "" + }, + "git-pullrequest": { + "width": 410, + "height": 512, + "svg": "" + }, + "github-badge": { + "width": 512, + "height": 512, + "svg": "" + }, + "github-full": { + "width": 512, + "height": 512, + "svg": "" + }, + "google-analytics": { + "width": 512, + "height": 512, + "svg": "" + }, + "google-cloudplatform": { + "width": 512, + "height": 512, + "svg": "" + }, + "grails": { + "width": 512, + "height": 512, + "svg": "" + }, + "hackernews": { + "width": 512, + "height": 512, + "svg": "" + }, + "haskell": { + "width": 512, + "height": 512, + "svg": "" + }, + "heroku": { + "width": 331, + "height": 512, + "svg": "" + }, + "html5-3deffects": { + "width": 512, + "height": 512, + "svg": "" + }, + "html5-connectivity": { + "width": 512, + "height": 512, + "svg": "" + }, + "html5-deviceaccess": { + "width": 512, + "height": 512, + "svg": "" + }, + "html5-multimedia": { + "width": 512, + "height": 512, + "svg": "" + }, + "ie": { + "width": 498, + "height": 512, + "svg": "" + }, + "illustrator": { + "width": 512, + "height": 512, + "svg": "" + }, + "intellij": { + "width": 512, + "height": 512, + "svg": "" + }, + "ionic": { + "width": 512, + "height": 512, + "svg": "" + }, + "jekyll": { + "width": 280, + "height": 512, + "svg": "" + }, + "jquery-ui": { + "width": 512, + "height": 512, + "svg": "" + }, + "jquery": { + "width": 512, + "height": 512, + "svg": "" + }, + "js-badge": { + "width": 512, + "height": 512, + "svg": "" + }, + "js-shield": { + "width": 452, + "height": 512, + "svg": "" + }, + "komodo": { + "width": 512, + "height": 512, + "svg": "" + }, + "krakenjs-badge": { + "width": 479, + "height": 512, + "svg": "" + }, + "krakenjs": { + "width": 489, + "height": 512, + "svg": "" + }, + "materialize": { + "width": 512, + "height": 512, + "svg": "" + }, + "meteor-full": { + "width": 512, + "height": 512, + "svg": "" + }, + "mit": { + "width": 512, + "height": 512, + "svg": "" + }, + "modernizr": { + "width": 512, + "height": 512, + "svg": "" + }, + "mongodb": { + "width": 219, + "height": 512, + "svg": "" + }, + "mootools-badge": { + "width": 182, + "height": 512, + "svg": "" + }, + "mootools": { + "width": 512, + "height": 512, + "svg": "" + }, + "mozilla": { + "width": 512, + "height": 512, + "svg": "" + }, + "msql-server": { + "width": 468, + "height": 512, + "svg": "" + }, + "mysql": { + "width": 486, + "height": 512, + "svg": "" + }, + "nancy": { + "width": 327, + "height": 512, + "svg": "" + }, + "net-magazine": { + "width": 512, + "height": 512, + "svg": "" + }, + "netbeans": { + "width": 485, + "height": 512, + "svg": "" + }, + "nodejs-small": { + "width": 455, + "height": 512, + "svg": "" + }, + "nodejs": { + "width": 455, + "height": 512, + "svg": "" + }, + "onedrive": { + "width": 512, + "height": 512, + "svg": "" + }, + "openshift": { + "width": 512, + "height": 512, + "svg": "" + }, + "opensource": { + "width": 512, + "height": 512, + "svg": "" + }, + "perl": { + "width": 512, + "height": 512, + "svg": "" + }, + "phonegap": { + "width": 512, + "height": 512, + "svg": "" + }, + "photoshop": { + "width": 512, + "height": 512, + "svg": "" + }, + "postgresql": { + "width": 512, + "height": 512, + "svg": "" + }, + "prolog": { + "width": 456, + "height": 512, + "svg": "" + }, + "rackspace": { + "width": 497, + "height": 512, + "svg": "" + }, + "raphael": { + "width": 512, + "height": 512, + "svg": "" + }, + "rasberry-pi": { + "width": 401, + "height": 512, + "svg": "" + }, + "redis": { + "width": 512, + "height": 512, + "svg": "" + }, + "requirejs": { + "width": 426, + "height": 512, + "svg": "" + }, + "responsive": { + "width": 512, + "height": 512, + "svg": "" + }, + "ruby-on-rails": { + "width": 512, + "height": 512, + "svg": "" + }, + "ruby-rough": { + "width": 512, + "height": 512, + "svg": "" + }, + "ruby": { + "width": 512, + "height": 512, + "svg": "" + }, + "scala": { + "width": 376, + "height": 512, + "svg": "" + }, + "scriptcs": { + "width": 512, + "height": 512, + "svg": "" + }, + "scrum": { + "width": 512, + "height": 512, + "svg": "" + }, + "senchatouch": { + "width": 338, + "height": 512, + "svg": "" + }, + "sizzlejs": { + "width": 512, + "height": 512, + "svg": "" + }, + "smashing-magazine": { + "width": 512, + "height": 512, + "svg": "" + }, + "snapsvg": { + "width": 309, + "height": 512, + "svg": "" + }, + "spark": { + "width": 512, + "height": 512, + "svg": "" + }, + "sqllite": { + "width": 229, + "height": 512, + "svg": "" + }, + "stackoverflow": { + "width": 401, + "height": 512, + "svg": "" + }, + "streamline": { + "width": 466, + "height": 512, + "svg": "" + }, + "symfony-badge": { + "width": 512, + "height": 512, + "svg": "" + }, + "techcrunch": { + "width": 512, + "height": 512, + "svg": "" + }, + "terminal-badge": { + "width": 512, + "height": 512, + "svg": "" + }, + "travis": { + "width": 512, + "height": 512, + "svg": "" + }, + "vim": { + "width": 512, + "height": 512, + "svg": "" + }, + "visualstudio": { + "width": 512, + "height": 512, + "svg": "" + }, + "webplatform": { + "width": 512, + "height": 512, + "svg": "" + }, + "yahoo-small": { + "width": 512, + "height": 512, + "svg": "" + }, + "yeoman": { + "width": 457, + "height": 512, + "svg": "" + }, + "yii": { + "width": 479, + "height": 512, + "svg": "" + }, + "zend": { + "width": 512, + "height": 512, + "svg": "" + }, + "3dprint": { + "width": 512, + "height": 512, + "svg": "" + }, + "antenna": { + "width": 302, + "height": 512, + "svg": "" + }, + "apache": { + "width": 512, + "height": 512, + "svg": "" + }, + "archlinux": { + "width": 512, + "height": 512, + "svg": "" + }, + "bomb": { + "width": 365, + "height": 512, + "svg": "" + }, + "c": { + "width": 469, + "height": 512, + "svg": "" + }, + "cassandra": { + "width": 512, + "height": 512, + "svg": "" + }, + "coffee-bean": { + "width": 436, + "height": 512, + "svg": "" + }, + "csharp": { + "width": 512, + "height": 512, + "svg": "" + }, + "css": { + "width": 472, + "height": 512, + "svg": "" + }, + "database-alt1": { + "width": 381, + "height": 512, + "svg": "" + }, + "database-alt2": { + "width": 448, + "height": 512, + "svg": "" + }, + "dreamhost": { + "width": 512, + "height": 512, + "svg": "" + }, + "elixir": { + "width": 332, + "height": 512, + "svg": "" + }, + "exherbo": { + "width": 503, + "height": 512, + "svg": "" + }, + "fire": { + "width": 385, + "height": 512, + "svg": "" + }, + "gnome": { + "width": 403, + "height": 512, + "svg": "" + }, + "google-alt": { + "width": 512, + "height": 512, + "svg": "" + }, + "google-code": { + "width": 461, + "height": 512, + "svg": "" + }, + "google-developers": { + "width": 512, + "height": 512, + "svg": "" + }, + "grails-alt": { + "width": 512, + "height": 512, + "svg": "" + }, + "hadoop": { + "width": 512, + "height": 512, + "svg": "" + }, + "html": { + "width": 471, + "height": 512, + "svg": "" + }, + "iphone": { + "width": 256, + "height": 512, + "svg": "" + }, + "java-bold": { + "width": 369, + "height": 512, + "svg": "" + }, + "java-duke": { + "width": 284, + "height": 512, + "svg": "" + }, + "javascript-alt": { + "width": 512, + "height": 512, + "svg": "" + }, + "javascript": { + "width": 512, + "height": 512, + "svg": "" + }, + "jetty": { + "width": 512, + "height": 512, + "svg": "" + }, + "kde": { + "width": 485, + "height": 512, + "svg": "" + }, + "linegraph": { + "width": 512, + "height": 512, + "svg": "" + }, + "linuxmint": { + "width": 512, + "height": 512, + "svg": "" + }, + "looking": { + "width": 448, + "height": 512, + "svg": "" + }, + "mariadb": { + "width": 512, + "height": 512, + "svg": "" + }, + "maven": { + "width": 379, + "height": 512, + "svg": "" + }, + "microscope": { + "width": 329, + "height": 512, + "svg": "" + }, + "mobiledevice": { + "width": 512, + "height": 512, + "svg": "" + }, + "mobilephone-alt": { + "width": 240, + "height": 512, + "svg": "" + }, + "mobilephone-broadcast": { + "width": 326, + "height": 512, + "svg": "" + }, + "mysql-alt": { + "width": 487, + "height": 512, + "svg": "" + }, + "netbsd": { + "width": 491, + "height": 512, + "svg": "" + }, + "nginx-alt1": { + "width": 512, + "height": 512, + "svg": "" + }, + "nginx-alt2": { + "width": 322, + "height": 512, + "svg": "" + }, + "objc": { + "width": 471, + "height": 512, + "svg": "" + }, + "oracle-alt": { + "width": 512, + "height": 512, + "svg": "" + }, + "oracle": { + "width": 512, + "height": 512, + "svg": "" + }, + "osx": { + "width": 432, + "height": 512, + "svg": "" + }, + "phone-alt": { + "width": 380, + "height": 512, + "svg": "" + }, + "phone-retro": { + "width": 512, + "height": 512, + "svg": "" + }, + "php-alt": { + "width": 472, + "height": 512, + "svg": "" + }, + "playframework-alt": { + "width": 448, + "height": 512, + "svg": "" + }, + "playframework": { + "width": 448, + "height": 512, + "svg": "" + }, + "plone": { + "width": 512, + "height": 512, + "svg": "" + }, + "postgresql-alt": { + "width": 512, + "height": 512, + "svg": "" + }, + "rails-alt": { + "width": 398, + "height": 512, + "svg": "" + }, + "rails": { + "width": 426, + "height": 512, + "svg": "" + }, + "satellite": { + "width": 512, + "height": 512, + "svg": "" + }, + "scala-alt": { + "width": 375, + "height": 512, + "svg": "" + }, + "script-alt": { + "width": 471, + "height": 512, + "svg": "" + }, + "script": { + "width": 512, + "height": 512, + "svg": "" + }, + "shell": { + "width": 512, + "height": 512, + "svg": "" + }, + "solaris": { + "width": 512, + "height": 512, + "svg": "" + }, + "splatter": { + "width": 512, + "height": 512, + "svg": "" + }, + "spring": { + "width": 512, + "height": 512, + "svg": "" + }, + "svg": { + "width": 512, + "height": 512, + "svg": "" + }, + "tomcat": { + "width": 512, + "height": 512, + "svg": "" + }, + "wireless": { + "width": 512, + "height": 512, + "svg": "" + }, + "x11": { + "width": 512, + "height": 512, + "svg": "" + }, + "activity": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "alert": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "archive": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "arrow-bottom": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "arrow-left": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "arrow-right": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "arrow-top": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "backwards": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "bag": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "ban": { + "width": "32", + "height": "32", + "svg": "\n \n \n" + }, + "bell": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "book": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "bookmark": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "calendar": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "camera": { + "width": "32", + "height": "32", + "svg": "\n \n \n" + }, + "caret-bottom": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "caret-left": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "caret-right": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "caret-top": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "cart": { + "width": "32", + "height": "32", + "svg": "\n \n \n \n" + }, + "checkmark": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "chevron-bottom": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "chevron-left": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "chevron-right": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "chevron-top": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "clipboard": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "clock": { + "width": "32", + "height": "32", + "svg": "\n \n \n" + }, + "close": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "compose": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "creditcard": { + "width": "32", + "height": "32", + "svg": "\n \n \n" + }, + "desktop": { + "width": "32", + "height": "32", + "svg": "\n \n\n" + }, + "download": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "edit": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "eject": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "ellipsis-horizontal": { + "width": "32", + "height": "32", + "svg": "\n \n \n \n" + }, + "ellipsis-vertical": { + "width": "32", + "height": "32", + "svg": "\n \n \n \n" + }, + "end": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "export": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "external": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "eye": { + "width": "32", + "height": "32", + "svg": "\n \n \n \n" + }, + "feed": { + "width": "32", + "height": "32", + "svg": "\n \n \n" + }, + "file": { + "width": 24, + "height": 24, + "svg": "" + }, + "filter": { + "width": "32", + "height": "32", + "svg": "\n \n\n\n" + }, + "flag": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "folder-open": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "folder": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "forwards": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "fullscreen-exit": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "fullscreen": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "gift": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "heart": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "home": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "import": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "inbox": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "info": { + "width": "32", + "height": "32", + "svg": "\n \n \n" + }, + "lightning": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "link": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "location": { + "width": "32", + "height": "32", + "svg": "\n \n \n" + }, + "lock": { + "width": "32", + "height": "32", + "svg": "\n \n \n" + }, + "mail": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "menu": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "message": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "microphone": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "minus": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "mobile": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "moon": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "move": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "music": { + "width": "32", + "height": "32", + "svg": "\n \n \n \n" + }, + "mute": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "options": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "paperclip": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "pause": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "photo": { + "width": "32", + "height": "32", + "svg": "\n \n \n" + }, + "play": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "plus": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "portfolio": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "print": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "reload": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "reply": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "search": { + "width": "32", + "height": "32", + "svg": "\n \n \n" + }, + "send": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "settings": { + "width": "32", + "height": "32", + "svg": "\n \n \n" + }, + "sign-in": { + "width": "32", + "height": "32", + "svg": "\n \n\n" + }, + "sign-out": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "star": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "start": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "telephone": { + "width": "32", + "height": "32", + "svg": "\n \n \n" + }, + "trash": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "unlock": { + "width": "32", + "height": "32", + "svg": "\n \n \n" + }, + "upload": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "user": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "volume": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "work": { + "width": "32", + "height": "32", + "svg": "\n \n" + }, + "zoom-in": { + "width": "32", + "height": "32", + "svg": "\n \n \n \n" + }, + "zoom-out": { + "width": "32", + "height": "32", + "svg": "\n \n \n \n" + }, + "zoom-reset": { + "width": "32", + "height": "32", + "svg": "\n \n \n \n" + }, + "showDisks": { + "width": 24, + "height": 24, + "svg": "" + }, + "up": { + "width": 24, + "height": 24, + "svg": "" + }, + "dir": { + "width": 24, + "height": 24, + "svg": "" + }, + "symlink": { + "width": 24, + "height": 24, + "svg": "" + }, + "other": { + "width": 24, + "height": 24, + "svg": "" + }, + "disk": { + "width": 24, + "height": 24, + "svg": "" + }, + "rom": { + "width": 24, + "height": 24, + "svg": "" + }, + "audio": { + "width": "32", + "height": "32", + "svg": "\n \n" + } +} \ No newline at end of file diff --git a/src/assets/kb_layouts/da-DK.json b/src/assets/kb_layouts/da-DK.json new file mode 100644 index 000000000..fd44edc07 --- /dev/null +++ b/src/assets/kb_layouts/da-DK.json @@ -0,0 +1,448 @@ +{ + "row_numbers": [ + { + "name": "ESC", + "cmd": "~~~CTRLSEQ1~~~" + }, + { + "name": "½", + "cmd": "½", + "shift_name": "§", + "shift_cmd": "§" + }, + { + "name": "1", + "cmd": "1", + "shift_name": "!", + "shift_cmd": "!", + "alt_cmd": "~~~CTRLSEQ1~~~1", + "fn_name": "F1", + "fn_cmd": "~~~CTRLSEQ1~~~OP" + }, + { + "name": "2", + "cmd": "2", + "shift_name": "\"", + "shift_cmd": "\"", + "alt_cmd": "@", + "alt_name": "@", + "fn_name": "F2", + "fn_cmd": "~~~CTRLSEQ1~~~OQ" + }, + { + "name": "3", + "cmd": "3", + "shift_name": "#", + "shift_cmd": "#", + "ctrl_cmd": "~~~CTRLSEQ1~~~", + "alt_name": "£", + "alt_cmd": "£", + "fn_name": "F3", + "fn_cmd": "~~~CTRLSEQ1~~~OR" + }, + { + "name": "4", + "cmd": "4", + "shift_name": "¤", + "shift_cmd": "¤", + "ctrl_cmd": "~~~CTRLSEQ2~~~", + "alt_name": "$", + "alt_cmd": "$", + "fn_name": "F4", + "fn_cmd": "~~~CTRLSEQ1~~~OS" + }, + { + "name": "5", + "cmd": "5", + "shift_name": "%", + "shift_cmd": "%", + "ctrl_cmd": "~~~CTRLSEQ3~~~", + "alt_cmd": "~~~CTRLSEQ1~~~5", + "fn_name": "F5", + "fn_cmd": "~~~CTRLSEQ1~~~[15~" + }, + { + "name": "6", + "cmd": "6", + "shift_name": "&", + "shift_cmd": "&", + "ctrl_cmd": "~~~CTRLSEQ4~~~", + "alt_cmd": "~~~CTRLSEQ1~~~6", + "fn_name": "F6", + "fn_cmd": "~~~CTRLSEQ1~~~[17~" + }, + { + "name": "7", + "cmd": "7", + "shift_name": "/", + "shift_cmd": "/", + "alt_name": "{", + "alt_cmd": "{", + "ctrl_cmd": "~~~CTRLSEQ5~~~", + "fn_name": "F7", + "fn_cmd": "~~~CTRLSEQ1~~~[18~" + }, + { + "name": "8", + "cmd": "8", + "shift_name": "(", + "shift_cmd": "(", + "alt_name": "[", + "alt_cmd": "[", + "ctrl_cmd": "\r", + "fn_name": "F8", + "fn_cmd": "~~~CTRLSEQ1~~~[19~" + }, + { + "name": "9", + "cmd": "9", + "shift_name": ")", + "shift_cmd": ")", + "alt_name": "]", + "alt_cmd": "]", + "fn_name": "F9", + "fn_cmd": "~~~CTRLSEQ1~~~[20~" + }, + { + "name": "0", + "cmd": "0", + "shift_name": "=", + "shift_cmd": "=", + "alt_name": "}", + "alt_cmd": "}", + "fn_name": "F10", + "fn_cmd": "~~~CTRLSEQ1~~~[21~" + }, + { + "name": "+", + "cmd": "+", + "shift_name": "?", + "shift_cmd": "?", + "fn_name": "F11", + "fn_cmd": "~~~CTRLSEQ1~~~[23~" + }, + { + "name": "´", + "cmd": "´", + "shift_name": "`", + "shift_cmd": "`", + "alt_cmd": "|", + "alt_name": "|", + "fn_name": "F12", + "fn_cmd": "~~~CTRLSEQ1~~~[24~" + }, + { + "name": "BACK", + "cmd": "\b", + "shift_name": "DELETE", + "shift_cmd": "~~~CTRLSEQ1~~~[3~" + } + ], + "row_1": [ + { + "name": "TAB", + "cmd": "\t" + }, + { + "name": "Q", + "cmd": "q", + "shift_cmd": "Q", + "ctrl_cmd": "~~~CTRLSEQ6~~~", + "alt_cmd": "~~~CTRLSEQ1~~~q" + }, + { + "name": "W", + "cmd": "w", + "shift_cmd": "W", + "ctrl_cmd": "~~~CTRLSEQ7~~~", + "alt_cmd": "~~~CTRLSEQ1~~~w" + }, + { + "name": "E", + "cmd": "e", + "shift_cmd": "E", + "alt_name": "€", + "alt_cmd": "€", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~e" + }, + { + "name": "R", + "cmd": "r", + "shift_cmd": "R", + "ctrl_cmd": "~~~CTRLSEQ8~~~", + "alt_cmd": "~~~CTRLSEQ1~~~r" + }, + { + "name": "T", + "cmd": "t", + "shift_cmd": "T", + "ctrl_cmd": "~~~CTRLSEQ9~~~", + "alt_cmd": "~~~CTRLSEQ1~~~t" + }, + { + "name": "Y", + "cmd": "y", + "shift_cmd": "Y", + "ctrl_cmd": "~~~CTRLSEQ10~~~", + "alt_cmd": "~~~CTRLSEQ1~~~y" + }, + { + "name": "U", + "cmd": "u", + "shift_cmd": "U", + "ctrl_cmd": "~~~CTRLSEQ11~~~", + "alt_cmd": "~~~CTRLSEQ1~~~u" + }, + { + "name": "I", + "cmd": "i", + "shift_cmd": "I", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~i" + }, + { + "name": "O", + "cmd": "o", + "shift_cmd": "O", + "alt_cmd": "~~~CTRLSEQ1~~~o" + }, + { + "name": "P", + "cmd": "p", + "shift_cmd": "P", + "ctrl_cmd": "~~~CTRLSEQ12~~~", + "alt_cmd": "~~~CTRLSEQ1~~~p" + }, + { + "name": "Å", + "cmd": "å", + "shift_cmd": "Å", + "ctrl_cmd": "~~~CTRLSEQ1~~~" + }, + { + "name": "¨", + "cmd": "¨", + "shift_name": "^", + "shift_cmd": "^", + "alt_name": "~", + "alt_cmd": "~", + "ctrl_cmd": "~~~CTRLSEQ3~~~" + }, + { + "name": "ENTER", + "cmd": "\r" + } + ], + "row_2": [ + { + "name": "CAPS", + "cmd": "ESCAPED|-- CAPSLCK: ON", + "shift_cmd": "ESCAPED|-- CAPSLCK: OFF" + }, + { + "name": "A", + "cmd": "a", + "shift_cmd": "A", + "ctrl_cmd": "~~~CTRLSEQ13~~~", + "alt_cmd": "~~~CTRLSEQ1~~~a" + }, + { + "name": "S", + "cmd": "s", + "shift_cmd": "S", + "ctrl_cmd": "~~~CTRLSEQ14~~~", + "alt_cmd": "~~~CTRLSEQ1~~~s" + }, + { + "name": "D", + "cmd": "d", + "shift_cmd": "D", + "ctrl_cmd": "~~~CTRLSEQ15~~~", + "alt_cmd": "~~~CTRLSEQ1~~~d" + }, + { + "name": "F", + "cmd": "f", + "shift_cmd": "F", + "ctrl_cmd": "~~~CTRLSEQ16~~~", + "alt_cmd": "~~~CTRLSEQ1~~~f" + }, + { + "name": "G", + "cmd": "g", + "shift_cmd": "G", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~g" + }, + { + "name": "H", + "cmd": "h", + "shift_cmd": "H", + "alt_cmd": "~~~CTRLSEQ1~~~h" + }, + { + "name": "J", + "cmd": "j", + "shift_cmd": "J", + "alt_cmd": "~~~CTRLSEQ1~~~j" + }, + { + "name": "K", + "cmd": "k", + "shift_cmd": "K", + "alt_cmd": "~~~CTRLSEQ1~~~k" + }, + { + "name": "L", + "cmd": "l", + "shift_cmd": "L", + "alt_cmd": "~~~CTRLSEQ1~~~l" + }, + { + "name": "Æ", + "cmd": "æ", + "shift_cmd": "Æ" + }, + { + "name": "Ø", + "cmd": "ø", + "shift_cmd": "Ø" + }, + { + "name": "'", + "cmd": "'", + "shift_name": "*", + "shift_cmd": "*", + "ctrl_cmd": "~~~CTRLSEQ2~~~" + }, + { + "name": "", + "cmd": "\r" + } + ], + "row_3": [ + { + "name": "SHIFT", + "cmd": "ESCAPED|-- SHIFT: LEFT" + }, + { + "name": "<", + "cmd": "<", + "shift_name": ">", + "shift_cmd": ">", + "alt_name": "\\", + "alt_cmd": "\\", + "ctrl_cmd": "~~~CTRLSEQ2~~~" + }, + { + "name": "Z", + "cmd": "z", + "shift_cmd": "Y", + "ctrl_cmd": "~~~CTRLSEQ17~~~", + "alt_cmd": "~~~CTRLSEQ1~~~z" + }, + { + "name": "X", + "cmd": "x", + "shift_cmd": "X", + "ctrl_cmd": "~~~CTRLSEQ18~~~", + "alt_cmd": "~~~CTRLSEQ1~~~x" + }, + { + "name": "C", + "cmd": "c", + "shift_cmd": "C", + "ctrl_cmd": "~~~CTRLSEQ19~~~", + "alt_cmd": "~~~CTRLSEQ1~~~c" + }, + { + "name": "V", + "cmd": "v", + "shift_cmd": "V", + "ctrl_cmd": "~~~CTRLSEQ20~~~", + "alt_cmd": "~~~CTRLSEQ1~~~v" + }, + { + "name": "B", + "cmd": "b", + "shift_cmd": "B", + "ctrl_cmd": "~~~CTRLSEQ21~~~", + "alt_cmd": "~~~CTRLSEQ1~~~b" + }, + { + "name": "N", + "cmd": "n", + "shift_cmd": "N", + "alt_cmd": "~~~CTRLSEQ1~~~n" + }, + { + "name": "M", + "cmd": "m", + "shift_cmd": "M", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~m" + }, + { + "name": ",", + "cmd": ",", + "shift_name": ";", + "shift_cmd": ";" + }, + { + "name": ".", + "cmd": ".", + "shift_name": ":", + "shift_cmd": ":" + }, + { + "name": "-", + "cmd": "-", + "shift_name": "_", + "shift_cmd": "_" + }, + { + "name": "SHIFT", + "cmd": "ESCAPED|-- SHIFT: RIGHT" + }, + { + "name": "ESCAPED|-- ICON: ARROW_UP", + "cmd": "~~~CTRLSEQ1~~~OA" + } + ], + "row_space": [ + { + "name": "CTRL", + "cmd": "ESCAPED|-- CTRL: LEFT" + }, + { + "name": "FN", + "cmd": "ESCAPED|-- FN: ON", + "fn_cmd": "ESCAPED|-- FN: OFF" + }, + { + "name": "", + "cmd": " " + }, + { + "name": "ALT GR", + "cmd": "ESCAPED|-- ALT: RIGHT" + }, + { + "name": "CTRL", + "cmd": "ESCAPED|-- CTRL: RIGHT" + }, + { + "name": "ESCAPED|-- ICON: ARROW_LEFT", + "cmd": "~~~CTRLSEQ1~~~OD" + }, + { + "name": "ESCAPED|-- ICON: ARROW_DOWN", + "cmd": "~~~CTRLSEQ1~~~OB" + }, + { + "name": "ESCAPED|-- ICON: ARROW_RIGHT", + "cmd": "~~~CTRLSEQ1~~~OC" + } + ] +} diff --git a/src/assets/kb_layouts/de-DE.json b/src/assets/kb_layouts/de-DE.json index d03802018..64977e665 100644 --- a/src/assets/kb_layouts/de-DE.json +++ b/src/assets/kb_layouts/de-DE.json @@ -390,7 +390,7 @@ "cmd": "ESCAPED|-- SHIFT: RIGHT" }, { - "name": "⬆", + "name": "ESCAPED|-- ICON: ARROW_UP", "cmd": "~~~CTRLSEQ1~~~OA" } ], @@ -417,15 +417,15 @@ "cmd": "ESCAPED|-- CTRL: RIGHT" }, { - "name": "⬅", + "name": "ESCAPED|-- ICON: ARROW_LEFT", "cmd": "~~~CTRLSEQ1~~~OD" }, { - "name": "⬇", + "name": "ESCAPED|-- ICON: ARROW_DOWN", "cmd": "~~~CTRLSEQ1~~~OB" }, { - "name": "➡", + "name": "ESCAPED|-- ICON: ARROW_RIGHT", "cmd": "~~~CTRLSEQ1~~~OC" } ] diff --git a/src/assets/kb_layouts/en-COLEMAK.json b/src/assets/kb_layouts/en-COLEMAK.json index f9778a381..cc78e595a 100644 --- a/src/assets/kb_layouts/en-COLEMAK.json +++ b/src/assets/kb_layouts/en-COLEMAK.json @@ -393,7 +393,7 @@ "cmd": "ESCAPED|-- SHIFT: RIGHT" }, { - "name": "⬆", + "name": "ESCAPED|-- ICON: ARROW_UP", "cmd": "~~~CTRLSEQ1~~~OA" } ], @@ -420,15 +420,15 @@ "cmd": "ESCAPED|-- CTRL: RIGHT" }, { - "name": "⬅", + "name": "ESCAPED|-- ICON: ARROW_LEFT", "cmd": "~~~CTRLSEQ1~~~OD" }, { - "name": "⬇", + "name": "ESCAPED|-- ICON: ARROW_DOWN", "cmd": "~~~CTRLSEQ1~~~OB" }, { - "name": "➡", + "name": "ESCAPED|-- ICON: ARROW_RIGHT", "cmd": "~~~CTRLSEQ1~~~OC" } ] diff --git a/src/assets/kb_layouts/en-DVORAK.json b/src/assets/kb_layouts/en-DVORAK.json index 2470dfb00..e9f180264 100644 --- a/src/assets/kb_layouts/en-DVORAK.json +++ b/src/assets/kb_layouts/en-DVORAK.json @@ -392,7 +392,7 @@ "cmd": "ESCAPED|-- SHIFT: RIGHT" }, { - "name": "⬆", + "name": "ESCAPED|-- ICON: ARROW_UP", "cmd": "~~~CTRLSEQ1~~~OA" } ], @@ -419,15 +419,15 @@ "cmd": "ESCAPED|-- CTRL: RIGHT" }, { - "name": "⬅", + "name": "ESCAPED|-- ICON: ARROW_LEFT", "cmd": "~~~CTRLSEQ1~~~OD" }, { - "name": "⬇", + "name": "ESCAPED|-- ICON: ARROW_DOWN", "cmd": "~~~CTRLSEQ1~~~OB" }, { - "name": "➡", + "name": "ESCAPED|-- ICON: ARROW_RIGHT", "cmd": "~~~CTRLSEQ1~~~OC" } ] diff --git a/src/assets/kb_layouts/en-GB.json b/src/assets/kb_layouts/en-GB.json index 19ef9aad2..2a549b189 100644 --- a/src/assets/kb_layouts/en-GB.json +++ b/src/assets/kb_layouts/en-GB.json @@ -332,7 +332,7 @@ "name": "SHIFT", "cmd": "ESCAPED|-- SHIFT: RIGHT" }, { - "name": "⬆", + "name": "ESCAPED|-- ICON: ARROW_UP", "cmd": "~~~CTRLSEQ1~~~OA" }], "row_space": [{ @@ -352,13 +352,13 @@ "name": "CTRL", "cmd": "ESCAPED|-- CTRL: RIGHT" }, { - "name": "⬅", + "name": "ESCAPED|-- ICON: ARROW_LEFT", "cmd": "~~~CTRLSEQ1~~~OD" }, { - "name": "⬇", + "name": "ESCAPED|-- ICON: ARROW_DOWN", "cmd": "~~~CTRLSEQ1~~~OB" }, { - "name": "➡", + "name": "ESCAPED|-- ICON: ARROW_RIGHT", "cmd": "~~~CTRLSEQ1~~~OC" }] } diff --git a/src/assets/kb_layouts/en-NORMAN.json b/src/assets/kb_layouts/en-NORMAN.json new file mode 100644 index 000000000..87e900b70 --- /dev/null +++ b/src/assets/kb_layouts/en-NORMAN.json @@ -0,0 +1,434 @@ +{ + "row_numbers": [ + { + "name": "ESC", + "cmd": "~~~CTRLSEQ1~~~" + }, + { + "name": "`", + "cmd": "`", + "shift_name": "~", + "shift_cmd": "~" + }, + { + "name": "1", + "cmd": "1", + "shift_name": "!", + "shift_cmd": "!", + "alt_cmd": "~~~CTRLSEQ1~~~1", + "fn_name": "F1", + "fn_cmd": "~~~CTRLSEQ1~~~OP" + }, + { + "name": "2", + "cmd": "2", + "shift_name": "@", + "shift_cmd": "@", + "alt_cmd": "~~~CTRLSEQ1~~~2", + "fn_name": "F2", + "fn_cmd": "~~~CTRLSEQ1~~~OQ" + }, + { + "name": "3", + "cmd": "3", + "shift_name": "#", + "shift_cmd": "#", + "ctrl_cmd": "~~~CTRLSEQ1~~~", + "alt_cmd": "~~~CTRLSEQ1~~~3", + "fn_name": "F3", + "fn_cmd": "~~~CTRLSEQ1~~~OR" + }, + { + "name": "4", + "cmd": "4", + "shift_name": "$", + "shift_cmd": "$", + "ctrl_cmd": "~~~CTRLSEQ2~~~", + "alt_cmd": "~~~CTRLSEQ1~~~4", + "fn_name": "F4", + "fn_cmd": "~~~CTRLSEQ1~~~OS" + }, + { + "name": "5", + "cmd": "5", + "shift_name": "%", + "shift_cmd": "%", + "ctrl_cmd": "~~~CTRLSEQ3~~~", + "alt_cmd": "~~~CTRLSEQ1~~~5", + "fn_name": "F5", + "fn_cmd": "~~~CTRLSEQ1~~~[15~" + }, + { + "name": "6", + "cmd": "6", + "shift_name": "^", + "shift_cmd": "^", + "ctrl_cmd": "~~~CTRLSEQ4~~~", + "alt_cmd": "~~~CTRLSEQ1~~~6", + "fn_name": "F6", + "fn_cmd": "~~~CTRLSEQ1~~~[17~" + }, + { + "name": "7", + "cmd": "7", + "shift_name": "&", + "shift_cmd": "&", + "ctrl_cmd": "~~~CTRLSEQ5~~~", + "fn_name": "F7", + "fn_cmd": "~~~CTRLSEQ1~~~[18~" + }, + { + "name": "8", + "cmd": "8", + "shift_name": "*", + "shift_cmd": "*", + "ctrl_cmd": "\r", + "fn_name": "F8", + "fn_cmd": "~~~CTRLSEQ1~~~[19~" + }, + { + "name": "9", + "cmd": "9", + "shift_name": "(", + "shift_cmd": "(", + "alt_cmd": "~~~CTRLSEQ1~~~9", + "fn_name": "F9", + "fn_cmd": "~~~CTRLSEQ1~~~[20~" + }, + { + "name": "0", + "cmd": "0", + "shift_name": ")", + "shift_cmd": ")", + "alt_cmd": "~~~CTRLSEQ1~~~0", + "fn_name": "F10", + "fn_cmd": "~~~CTRLSEQ1~~~[21~" + }, + { + "name": "-", + "cmd": "-", + "shift_name": "_", + "shift_cmd": "_", + "fn_name": "F11", + "fn_cmd": "~~~CTRLSEQ1~~~[23~" + }, + { + "name": "=", + "cmd": "=", + "shift_name": "+", + "shift_cmd": "+", + "fn_name": "F12", + "fn_cmd": "~~~CTRLSEQ1~~~[24~" + }, + { + "name": "BACK", + "cmd": "\b", + "shift_name": "DELETE", + "shift_cmd": "~~~CTRLSEQ1~~~[3~" + } + ], + "row_1": [ + { + "name": "TAB", + "cmd": "\t" + }, + { + "name": "Q", + "cmd": "q", + "shift_cmd": "Q", + "ctrl_cmd": "~~~CTRLSEQ6~~~", + "alt_cmd": "~~~CTRLSEQ1~~~q" + }, + { + "name": "W", + "cmd": "w", + "shift_cmd": "W", + "ctrl_cmd": "~~~CTRLSEQ7~~~", + "alt_cmd": "~~~CTRLSEQ1~~~w" + }, + { + "name": "D", + "cmd": "d", + "shift_cmd": "D", + "ctrl_cmd": "~~~CTRLSEQ15~~~", + "alt_cmd": "~~~CTRLSEQ1~~~d" + }, + { + "name": "F", + "cmd": "f", + "shift_cmd": "F", + "ctrl_cmd": "~~~CTRLSEQ16~~~", + "alt_cmd": "~~~CTRLSEQ1~~~f" + }, + { + "name": "K", + "cmd": "k", + "shift_cmd": "K", + "alt_cmd": "~~~CTRLSEQ1~~~k" + }, + { + "name": "J", + "cmd": "j", + "shift_cmd": "J", + "alt_cmd": "~~~CTRLSEQ1~~~j" + }, + { + "name": "U", + "cmd": "u", + "shift_cmd": "U", + "ctrl_cmd": "~~~CTRLSEQ11~~~", + "alt_cmd": "~~~CTRLSEQ1~~~u" + }, + { + "name": "R", + "cmd": "r", + "shift_cmd": "R", + "ctrl_cmd": "~~~CTRLSEQ8~~~", + "alt_cmd": "~~~CTRLSEQ1~~~r" + }, + { + "name": "L", + "cmd": "l", + "shift_cmd": "L", + "alt_cmd": "~~~CTRLSEQ1~~~l" + }, + { + "name": ";", + "cmd": ";", + "shift_name": ":", + "shift_cmd": ":" + }, + { + "name": "[", + "cmd": "[", + "shift_name": "{", + "shift_cmd": "{", + "ctrl_cmd": "~~~CTRLSEQ1~~~" + }, + { + "name": "]", + "cmd": "]", + "shift_name": "}", + "shift_cmd": "}", + "ctrl_cmd": "~~~CTRLSEQ3~~~" + }, + { + "name": "", + "cmd": "\r" + } + ], + "row_2": [ + { + "name": "CAPS", + "cmd": "ESCAPED|-- CAPSLCK: ON", + "shift_cmd": "ESCAPED|-- CAPSLCK: OFF" + }, + { + "name": "A", + "cmd": "a", + "shift_cmd": "A", + "ctrl_cmd": "~~~CTRLSEQ13~~~", + "alt_cmd": "~~~CTRLSEQ1~~~a" + }, + { + "name": "S", + "cmd": "s", + "shift_cmd": "S", + "ctrl_cmd": "~~~CTRLSEQ14~~~", + "alt_cmd": "~~~CTRLSEQ1~~~s" + }, + { + "name": "E", + "cmd": "e", + "shift_cmd": "E", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~e" + }, + { + "name": "T", + "cmd": "t", + "shift_cmd": "T", + "ctrl_cmd": "~~~CTRLSEQ9~~~", + "alt_cmd": "~~~CTRLSEQ1~~~t" + }, + { + "name": "G", + "cmd": "g", + "shift_cmd": "G", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~g" + }, + { + "name": "Y", + "cmd": "y", + "shift_cmd": "Y", + "ctrl_cmd": "~~~CTRLSEQ10~~~", + "alt_cmd": "~~~CTRLSEQ1~~~y" + }, + { + "name": "N", + "cmd": "n", + "shift_cmd": "N", + "alt_cmd": "~~~CTRLSEQ1~~~n" + }, + { + "name": "I", + "cmd": "i", + "shift_cmd": "I", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~i" + }, + { + "name": "O", + "cmd": "o", + "shift_cmd": "O", + "alt_cmd": "~~~CTRLSEQ1~~~o" + }, + { + "name": "H", + "cmd": "h", + "shift_cmd": "H", + "alt_cmd": "~~~CTRLSEQ1~~~h" + }, + { + "name": "'", + "cmd": "'", + "shift_name": "\"", + "shift_cmd": "\"" + }, + { + "name": "\\", + "cmd": "\\", + "shift_name": "|", + "shift_cmd": "|", + "ctrl_cmd": "~~~CTRLSEQ2~~~" + }, + { + "name": "ENTER", + "cmd": "\r" + } + ], + "row_3": [ + { + "name": "SHIFT", + "cmd": "ESCAPED|-- SHIFT: LEFT" + }, + { + "name": "<", + "cmd": "<", + "shift_name": ">", + "shift_cmd": ">", + "ctrl_cmd": "~~~CTRLSEQ2~~~" + }, + { + "name": "Z", + "cmd": "z", + "shift_cmd": "Z", + "ctrl_cmd": "~~~CTRLSEQ17~~~", + "alt_cmd": "~~~CTRLSEQ1~~~z" + }, + { + "name": "X", + "cmd": "x", + "shift_cmd": "X", + "ctrl_cmd": "~~~CTRLSEQ18~~~", + "alt_cmd": "~~~CTRLSEQ1~~~x" + }, + { + "name": "C", + "cmd": "c", + "shift_cmd": "C", + "ctrl_cmd": "~~~CTRLSEQ19~~~", + "alt_cmd": "~~~CTRLSEQ1~~~c" + }, + { + "name": "V", + "cmd": "v", + "shift_cmd": "V", + "ctrl_cmd": "~~~CTRLSEQ20~~~", + "alt_cmd": "~~~CTRLSEQ1~~~v" + }, + { + "name": "B", + "cmd": "b", + "shift_cmd": "B", + "ctrl_cmd": "~~~CTRLSEQ21~~~", + "alt_cmd": "~~~CTRLSEQ1~~~b" + }, + { + "name": "P", + "cmd": "p", + "shift_cmd": "P", + "ctrl_cmd": "~~~CTRLSEQ12~~~", + "alt_cmd": "~~~CTRLSEQ1~~~p" + }, + { + "name": "M", + "cmd": "m", + "shift_cmd": "M", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~m" + }, + { + "name": ",", + "cmd": ",", + "shift_name": "<", + "shift_cmd": "<" + }, + { + "name": ".", + "cmd": ".", + "shift_name": ">", + "shift_cmd": ">" + }, + { + "name": "\/", + "cmd": "\/", + "shift_name": "?", + "shift_cmd": "?" + }, + { + "name": "SHIFT", + "cmd": "ESCAPED|-- SHIFT: RIGHT" + }, + { + "name": "ESCAPED|-- ICON: ARROW_UP", + "cmd": "~~~CTRLSEQ1~~~OA" + } + ], + "row_space": [ + { + "name": "CTRL", + "cmd": "ESCAPED|-- CTRL: LEFT" + }, + { + "name": "ALT", + "cmd": "ESCAPED|-- FN: ON", + "fn_cmd": "ESCAPED|-- FN: OFF" + }, + { + "name": "", + "cmd": " " + }, + { + "name": "ALT GR", + "cmd": "ESCAPED|-- ALT: RIGHT" + }, + { + "name": "CTRL", + "cmd": "ESCAPED|-- CTRL: RIGHT" + }, + { + "name": "ESCAPED|-- ICON: ARROW_LEFT", + "cmd": "~~~CTRLSEQ1~~~OD" + }, + { + "name": "ESCAPED|-- ICON: ARROW_DOWN", + "cmd": "~~~CTRLSEQ1~~~OB" + }, + { + "name": "ESCAPED|-- ICON: ARROW_RIGHT", + "cmd": "~~~CTRLSEQ1~~~OC" + } + ] +} diff --git a/src/assets/kb_layouts/en-US.json b/src/assets/kb_layouts/en-US.json index 424dd5f44..99ceb007f 100644 --- a/src/assets/kb_layouts/en-US.json +++ b/src/assets/kb_layouts/en-US.json @@ -392,7 +392,7 @@ "cmd": "ESCAPED|-- SHIFT: RIGHT" }, { - "name": "⬆", + "name": "ESCAPED|-- ICON: ARROW_UP", "cmd": "~~~CTRLSEQ1~~~OA" } ], @@ -419,15 +419,15 @@ "cmd": "ESCAPED|-- CTRL: RIGHT" }, { - "name": "⬅", + "name": "ESCAPED|-- ICON: ARROW_LEFT", "cmd": "~~~CTRLSEQ1~~~OD" }, { - "name": "⬇", + "name": "ESCAPED|-- ICON: ARROW_DOWN", "cmd": "~~~CTRLSEQ1~~~OB" }, { - "name": "➡", + "name": "ESCAPED|-- ICON: ARROW_RIGHT", "cmd": "~~~CTRLSEQ1~~~OC" } ] diff --git a/src/assets/kb_layouts/en-WORKMAN.json b/src/assets/kb_layouts/en-WORKMAN.json new file mode 100644 index 000000000..5fa688189 --- /dev/null +++ b/src/assets/kb_layouts/en-WORKMAN.json @@ -0,0 +1,433 @@ +{ + "row_numbers": [ + { + "name": "ESC", + "cmd": "~~~CTRLSEQ1~~~" + }, + { + "name": "`", + "cmd": "`", + "shift_name": "~", + "shift_cmd": "~" + }, + { + "name": "1", + "cmd": "1", + "shift_name": "!", + "shift_cmd": "!", + "alt_cmd": "~~~CTRLSEQ1~~~1", + "fn_name": "F1", + "fn_cmd": "~~~CTRLSEQ1~~~OP" + }, + { + "name": "2", + "cmd": "2", + "shift_name": "@", + "shift_cmd": "@", + "alt_cmd": "~~~CTRLSEQ1~~~2", + "fn_name": "F2", + "fn_cmd": "~~~CTRLSEQ1~~~OQ" + }, + { + "name": "3", + "cmd": "3", + "shift_name": "#", + "shift_cmd": "#", + "ctrl_cmd": "~~~CTRLSEQ1~~~", + "alt_cmd": "~~~CTRLSEQ1~~~3", + "fn_name": "F3", + "fn_cmd": "~~~CTRLSEQ1~~~OR" + }, + { + "name": "4", + "cmd": "4", + "shift_name": "$", + "shift_cmd": "$", + "ctrl_cmd": "~~~CTRLSEQ2~~~", + "alt_cmd": "~~~CTRLSEQ1~~~4", + "fn_name": "F4", + "fn_cmd": "~~~CTRLSEQ1~~~OS" + }, + { + "name": "5", + "cmd": "5", + "shift_name": "%", + "shift_cmd": "%", + "ctrl_cmd": "~~~CTRLSEQ3~~~", + "alt_cmd": "~~~CTRLSEQ1~~~5", + "fn_name": "F5", + "fn_cmd": "~~~CTRLSEQ1~~~[15~" + }, + { + "name": "6", + "cmd": "6", + "shift_name": "^", + "shift_cmd": "^", + "ctrl_cmd": "~~~CTRLSEQ4~~~", + "alt_cmd": "~~~CTRLSEQ1~~~6", + "fn_name": "F6", + "fn_cmd": "~~~CTRLSEQ1~~~[17~" + }, + { + "name": "7", + "cmd": "7", + "shift_name": "&", + "shift_cmd": "&", + "ctrl_cmd": "~~~CTRLSEQ5~~~", + "fn_name": "F7", + "fn_cmd": "~~~CTRLSEQ1~~~[18~" + }, + { + "name": "8", + "cmd": "8", + "shift_name": "*", + "shift_cmd": "*", + "ctrl_cmd": "\r", + "fn_name": "F8", + "fn_cmd": "~~~CTRLSEQ1~~~[19~" + }, + { + "name": "9", + "cmd": "9", + "shift_name": "(", + "shift_cmd": "(", + "alt_cmd": "~~~CTRLSEQ1~~~9", + "fn_name": "F9", + "fn_cmd": "~~~CTRLSEQ1~~~[20~" + }, + { + "name": "0", + "cmd": "0", + "shift_name": ")", + "shift_cmd": ")", + "alt_cmd": "~~~CTRLSEQ1~~~0", + "fn_name": "F10", + "fn_cmd": "~~~CTRLSEQ1~~~[21~" + }, + { + "name": "-", + "cmd": "-", + "shift_name": "_", + "shift_cmd": "_", + "fn_name": "F11", + "fn_cmd": "~~~CTRLSEQ1~~~[23~" + }, + { + "name": "=", + "cmd": "=", + "shift_name": "+", + "shift_cmd": "+", + "fn_name": "F12", + "fn_cmd": "~~~CTRLSEQ1~~~[24~" + }, + { + "name": "BACK", + "cmd": "\b", + "shift_name": "DELETE", + "shift_cmd": "~~~CTRLSEQ1~~~[3~" + } + ], + "row_1": [ + { + "name": "TAB", + "cmd": "\t" + }, + { + "name": "Q", + "cmd": "q", + "shift_cmd": "Q", + "ctrl_cmd": "~~~CTRLSEQ6~~~", + "alt_cmd": "~~~CTRLSEQ1~~~q" + }, + { + "name": "D", + "cmd": "d", + "shift_cmd": "D", + "ctrl_cmd": "~~~CTRLSEQ7~~~", + "alt_cmd": "~~~CTRLSEQ1~~~d" + }, + { + "name": "R", + "cmd": "r", + "shift_cmd": "R", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~r" + }, + { + "name": "W", + "cmd": "w", + "shift_cmd": "W", + "ctrl_cmd": "~~~CTRLSEQ8~~~", + "alt_cmd": "~~~CTRLSEQ1~~~w" + }, + { + "name": "B", + "cmd": "b", + "shift_cmd": "B", + "ctrl_cmd": "~~~CTRLSEQ9~~~", + "alt_cmd": "~~~CTRLSEQ1~~~b" + }, + { + "name": "J", + "cmd": "j", + "shift_cmd": "J", + "ctrl_cmd": "~~~CTRLSEQ10~~~", + "alt_cmd": "~~~CTRLSEQ1~~~j" + }, + { + "name": "F", + "cmd": "F", + "shift_cmd": "F", + "ctrl_cmd": "~~~CTRLSEQ11~~~", + "alt_cmd": "~~~CTRLSEQ1~~~f" + }, + { + "name": "U", + "cmd": "U", + "shift_cmd": "U", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~u" + }, + { + "name": "P", + "cmd": "p", + "shift_cmd": "P", + "alt_cmd": "~~~CTRLSEQ1~~~p" + }, + { + "name": ":", + "cmd": ":", + "shift_cmd": ":", + "ctrl_cmd": "~~~CTRLSEQ12~~~", + "alt_cmd": "~~~CTRLSEQ1~~~;" + }, + { + "name": "[", + "cmd": "[", + "shift_name": "{", + "shift_cmd": "{", + "ctrl_cmd": "~~~CTRLSEQ1~~~" + }, + { + "name": "]", + "cmd": "]", + "shift_name": "}", + "shift_cmd": "}", + "ctrl_cmd": "~~~CTRLSEQ3~~~" + }, + { + "name": "ENTER", + "cmd": "\r" + } + ], + "row_2": [ + { + "name": "CAPS", + "cmd": "ESCAPED|-- CAPSLCK: ON", + "shift_cmd": "ESCAPED|-- CAPSLCK: OFF" + }, + { + "name": "A", + "cmd": "a", + "shift_cmd": "A", + "ctrl_cmd": "~~~CTRLSEQ13~~~", + "alt_cmd": "~~~CTRLSEQ1~~~a" + }, + { + "name": "S", + "cmd": "s", + "shift_cmd": "S", + "ctrl_cmd": "~~~CTRLSEQ14~~~", + "alt_cmd": "~~~CTRLSEQ1~~~s" + }, + { + "name": "H", + "cmd": "h", + "shift_cmd": "H", + "ctrl_cmd": "~~~CTRLSEQ15~~~", + "alt_cmd": "~~~CTRLSEQ1~~~h" + }, + { + "name": "T", + "cmd": "t", + "shift_cmd": "t", + "ctrl_cmd": "~~~CTRLSEQ16~~~", + "alt_cmd": "~~~CTRLSEQ1~~~t" + }, + { + "name": "G", + "cmd": "g", + "shift_cmd": "G", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~g" + }, + { + "name": "Y", + "cmd": "y", + "shift_cmd": "Y", + "alt_cmd": "~~~CTRLSEQ1~~~y" + }, + { + "name": "N", + "cmd": "n", + "shift_cmd": "N", + "alt_cmd": "~~~CTRLSEQ1~~~n" + }, + { + "name": "E", + "cmd": "e", + "shift_cmd": "E", + "alt_cmd": "~~~CTRLSEQ1~~~e" + }, + { + "name": "O", + "cmd": "o", + "shift_cmd": "O", + "alt_cmd": "~~~CTRLSEQ1~~~o" + }, + { + "name": "I", + "cmd": "i", + "shift_name": "I", + "shift_cmd": "I" + }, + { + "name": "'", + "cmd": "'", + "shift_name": "\"", + "shift_cmd": "\"" + }, + { + "name": "\\", + "cmd": "\\", + "shift_name": "|", + "shift_cmd": "|", + "ctrl_cmd": "~~~CTRLSEQ2~~~" + }, + { + "name": "", + "cmd": "\r" + } + ], + "row_3": [ + { + "name": "SHIFT", + "cmd": "ESCAPED|-- SHIFT: LEFT" + }, + { + "name": "<", + "cmd": "<", + "shift_name": ">", + "shift_cmd": ">", + "ctrl_cmd": "~~~CTRLSEQ2~~~" + }, + { + "name": "Z", + "cmd": "z", + "shift_cmd": "Z", + "ctrl_cmd": "~~~CTRLSEQ17~~~", + "alt_cmd": "~~~CTRLSEQ1~~~z" + }, + { + "name": "X", + "cmd": "x", + "shift_cmd": "X", + "ctrl_cmd": "~~~CTRLSEQ18~~~", + "alt_cmd": "~~~CTRLSEQ1~~~x" + }, + { + "name": "M", + "cmd": "m", + "shift_cmd": "M", + "ctrl_cmd": "~~~CTRLSEQ19~~~", + "alt_cmd": "~~~CTRLSEQ1~~~m" + }, + { + "name": "C", + "cmd": "c", + "shift_cmd": "C", + "ctrl_cmd": "~~~CTRLSEQ20~~~", + "alt_cmd": "~~~CTRLSEQ1~~~c" + }, + { + "name": "V", + "cmd": "v", + "shift_cmd": "V", + "ctrl_cmd": "~~~CTRLSEQ21~~~", + "alt_cmd": "~~~CTRLSEQ1~~~v" + }, + { + "name": "K", + "cmd": "k", + "shift_cmd": "K", + "alt_cmd": "~~~CTRLSEQ1~~~k" + }, + { + "name": "L", + "cmd": "l", + "shift_cmd": "L", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~l" + }, + { + "name": ",", + "cmd": ",", + "shift_name": "<", + "shift_cmd": "<" + }, + { + "name": ".", + "cmd": ".", + "shift_name": ">", + "shift_cmd": ">" + }, + { + "name": "\/", + "cmd": "\/", + "shift_name": "?", + "shift_cmd": "?" + }, + { + "name": "SHIFT", + "cmd": "ESCAPED|-- SHIFT: RIGHT" + }, + { + "name": "ESCAPED|-- ICON: ARROW_UP", + "cmd": "~~~CTRLSEQ1~~~OA" + } + ], + "row_space": [ + { + "name": "CTRL", + "cmd": "ESCAPED|-- CTRL: LEFT" + }, + { + "name": "ALT", + "cmd": "ESCAPED|-- FN: ON", + "fn_cmd": "ESCAPED|-- FN: OFF" + }, + { + "name": "", + "cmd": " " + }, + { + "name": "ALT GR", + "cmd": "ESCAPED|-- ALT: RIGHT" + }, + { + "name": "CTRL", + "cmd": "ESCAPED|-- CTRL: RIGHT" + }, + { + "name": "ESCAPED|-- ICON: ARROW_LEFT", + "cmd": "~~~CTRLSEQ1~~~OD" + }, + { + "name": "ESCAPED|-- ICON: ARROW_DOWN", + "cmd": "~~~CTRLSEQ1~~~OB" + }, + { + "name": "ESCAPED|-- ICON: ARROW_RIGHT", + "cmd": "~~~CTRLSEQ1~~~OC" + } + ] diff --git a/src/assets/kb_layouts/es-ES.json b/src/assets/kb_layouts/es-ES.json new file mode 100644 index 000000000..5564cc530 --- /dev/null +++ b/src/assets/kb_layouts/es-ES.json @@ -0,0 +1,448 @@ +{ + "row_numbers": [ + { + "name": "ESC", + "cmd": "~~~CTRLSEQ1~~~" + }, + { + "name": "°", + "cmd": "°", + "shift_name": "ª", + "shift_cmd": "ª", + "alt_name": "\\", + "alt_cmd": "\\" + }, + { + "name": "1", + "cmd": "1", + "shift_name": "!", + "shift_cmd": "!", + "alt_name": "|", + "alt_cmd": "|", + "fn_name": "F1", + "fn_cmd": "~~~CTRLSEQ1~~~OP" + }, + { + "name": "2", + "cmd": "2", + "shift_name": "\"", + "shift_cmd": "\"", + "alt_name": "@", + "alt_cmd": "@", + "fn_name": "F2", + "fn_cmd": "~~~CTRLSEQ1~~~OQ" + }, + { + "name": "3", + "cmd": "3", + "shift_name": "·", + "shift_cmd": "·", + "alt_name": "#", + "alt_cmd": "#", + "ctrl_cmd": "~~~CTRLSEQ1~~~", + "fn_name": "F3", + "fn_cmd": "~~~CTRLSEQ1~~~OR" + }, + { + "name": "4", + "cmd": "4", + "shift_name": "$", + "shift_cmd": "$", + "alt_name": "~", + "alt_cmd": "ESCAPED|-- TILDE", + "ctrl_cmd": "~~~CTRLSEQ2~~~", + "fn_name": "F4", + "fn_cmd": "~~~CTRLSEQ1~~~OS" + }, + { + "name": "5", + "cmd": "5", + "shift_name": "%", + "shift_cmd": "%", + "alt_name": "€", + "alt_cmd": "€", + "ctrl_cmd": "~~~CTRLSEQ3~~~", + "fn_name": "F5", + "fn_cmd": "~~~CTRLSEQ1~~~[15~" + }, + { + "name": "6", + "cmd": "6", + "shift_name": "&", + "shift_cmd": "&", + "alt_name": "¬", + "alt_cmd": "¬", + "ctrl_cmd": "~~~CTRLSEQ4~~~", + "fn_name": "F6", + "fn_cmd": "~~~CTRLSEQ1~~~[17~" + }, + { + "name": "7", + "cmd": "7", + "shift_name": "/", + "shift_cmd": "/", + "ctrl_cmd": "~~~CTRLSEQ5~~~", + "fn_name": "F7", + "fn_cmd": "~~~CTRLSEQ1~~~[18~" + }, + { + "name": "8", + "cmd": "8", + "shift_name": "(", + "shift_cmd": "(", + "fn_name": "F8", + "fn_cmd": "~~~CTRLSEQ1~~~[19~" + }, + { + "name": "9", + "cmd": "9", + "shift_name": ")", + "shift_cmd": ")", + "alt_cmd": "~~~CTRLSEQ1~~~9", + "fn_name": "F9", + "fn_cmd": "~~~CTRLSEQ1~~~[20~" + }, + { + "name": "0", + "cmd": "0", + "shift_name": "=", + "shift_cmd": "=", + "alt_cmd": "~~~CTRLSEQ1~~~0", + "fn_name": "F10", + "fn_cmd": "~~~CTRLSEQ1~~~[21~" + }, + { + "name": "'", + "cmd": "'", + "shift_name": "?", + "shift_cmd": "?", + "fn_name": "F11", + "fn_cmd": "~~~CTRLSEQ1~~~[23~" + }, + { + "name": "¡", + "cmd": "¡", + "shift_name": "¿", + "shift_cmd": "¿", + "fn_name": "F12", + "fn_cmd": "~~~CTRLSEQ1~~~[24~" + }, + { + "name": "BACK", + "cmd": "\b", + "shift_name": "DELETE", + "shift_cmd": "~~~CTRLSEQ1~~~[3~" + } + ], + "row_1": [ + { + "name": "TAB", + "cmd": "\t" + }, + { + "name": "Q", + "cmd": "q", + "shift_cmd": "Q", + "ctrl_cmd": "~~~CTRLSEQ6~~~" + }, + { + "name": "W", + "cmd": "w", + "shift_cmd": "W", + "ctrl_cmd": "~~~CTRLSEQ7~~~", + "alt_cmd": "~~~CTRLSEQ1~~~w" + }, + { + "name": "E", + "cmd": "e", + "shift_cmd": "E", + "alt_name": "€", + "alt_cmd": "€", + "ctrl_cmd": "\r" + }, + { + "name": "R", + "cmd": "r", + "shift_cmd": "R", + "ctrl_cmd": "~~~CTRLSEQ8~~~", + "alt_cmd": "~~~CTRLSEQ1~~~r" + }, + { + "name": "T", + "cmd": "t", + "shift_cmd": "T", + "ctrl_cmd": "~~~CTRLSEQ9~~~", + "alt_cmd": "~~~CTRLSEQ1~~~t" + }, + { + "name": "Y", + "cmd": "y", + "shift_cmd": "Y", + "ctrl_cmd": "~~~CTRLSEQ10~~~", + "alt_cmd": "~~~CTRLSEQ1~~~y" + }, + { + "name": "U", + "cmd": "u", + "shift_cmd": "U", + "ctrl_cmd": "~~~CTRLSEQ11~~~", + "alt_cmd": "~~~CTRLSEQ1~~~u" + }, + { + "name": "I", + "cmd": "i", + "shift_cmd": "I", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~i" + }, + { + "name": "O", + "cmd": "o", + "shift_cmd": "O", + "alt_cmd": "~~~CTRLSEQ1~~~o" + }, + { + "name": "P", + "cmd": "p", + "shift_cmd": "P", + "ctrl_cmd": "~~~CTRLSEQ12~~~", + "alt_cmd": "~~~CTRLSEQ1~~~p" + }, + { + "name": "`", + "cmd": "ESCAPED|-- GRAVE", + "shift_name": "^", + "shift_cmd": "ESCAPED|-- CIRCUM", + "alt_name": "[", + "alt_cmd": "[", + "ctrl_cmd": "~~~CTRLSEQ1~~~" + }, + { + "name": "+", + "cmd": "+", + "shift_name": "*", + "shift_cmd": "*", + "alt_name": "~", + "alt_cmd": "~", + "ctrl_cmd": "~~~CTRLSEQ3~~~" + }, + { + "name": "ENTER", + "cmd": "\r" + } + ], + "row_2": [ + { + "name": "CAPS", + "cmd": "ESCAPED|-- CAPSLCK: ON", + "shift_cmd": "ESCAPED|-- CAPSLCK: OFF" + }, + { + "name": "A", + "cmd": "a", + "shift_cmd": "A", + "ctrl_cmd": "~~~CTRLSEQ13~~~", + "alt_cmd": "~~~CTRLSEQ1~~~a" + }, + { + "name": "S", + "cmd": "s", + "shift_cmd": "S", + "ctrl_cmd": "~~~CTRLSEQ14~~~", + "alt_cmd": "~~~CTRLSEQ1~~~s" + }, + { + "name": "D", + "cmd": "d", + "shift_cmd": "D", + "ctrl_cmd": "~~~CTRLSEQ15~~~", + "alt_cmd": "~~~CTRLSEQ1~~~d" + }, + { + "name": "F", + "cmd": "f", + "shift_cmd": "F", + "ctrl_cmd": "~~~CTRLSEQ16~~~", + "alt_cmd": "~~~CTRLSEQ1~~~f" + }, + { + "name": "G", + "cmd": "g", + "shift_cmd": "G", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~g" + }, + { + "name": "H", + "cmd": "h", + "shift_cmd": "H", + "alt_cmd": "~~~CTRLSEQ1~~~h" + }, + { + "name": "J", + "cmd": "j", + "shift_cmd": "J", + "alt_cmd": "~~~CTRLSEQ1~~~j" + }, + { + "name": "K", + "cmd": "k", + "shift_cmd": "K", + "alt_cmd": "~~~CTRLSEQ1~~~k" + }, + { + "name": "L", + "cmd": "l", + "shift_cmd": "L", + "alt_cmd": "~~~CTRLSEQ1~~~l" + }, + { + "name": "Ñ", + "cmd": "ñ", + "shift_cmd": "Ñ", + "alt_cmd": "~~~CTRLSEQ1~~~ñ" + }, + { + "name": "´", + "cmd": "ESCAPED|-- ACUTE", + "shift_name": "¨", + "shift_cmd": "ESCAPED|-- TREMA", + "alt_name": "{", + "alt_cmd": "{" + }, + { + "name": "Ç", + "cmd": "ç", + "shift_cmd": "Ç", + "alt_name": "}", + "alt_cmd": "}", + "ctrl_cmd": "~~~CTRLSEQ2~~~" + }, + { + "name": "", + "cmd": "\r" + } + ], + "row_3": [ + { + "name": "SHIFT", + "cmd": "ESCAPED|-- SHIFT: LEFT" + }, + { + "name": "<", + "cmd": "<", + "shift_name": ">", + "shift_cmd": ">", + "ctrl_cmd": "~~~CTRLSEQ2~~~" + }, + { + "name": "Z", + "cmd": "z", + "shift_cmd": "Z", + "ctrl_cmd": "~~~CTRLSEQ17~~~", + "alt_cmd": "~~~CTRLSEQ1~~~z" + }, + { + "name": "X", + "cmd": "x", + "shift_cmd": "X", + "ctrl_cmd": "~~~CTRLSEQ18~~~", + "alt_cmd": "~~~CTRLSEQ1~~~x" + }, + { + "name": "C", + "cmd": "c", + "shift_cmd": "C", + "ctrl_cmd": "~~~CTRLSEQ19~~~", + "alt_cmd": "~~~CTRLSEQ1~~~c" + }, + { + "name": "V", + "cmd": "v", + "shift_cmd": "V", + "ctrl_cmd": "~~~CTRLSEQ20~~~", + "alt_cmd": "~~~CTRLSEQ1~~~v" + }, + { + "name": "B", + "cmd": "b", + "shift_cmd": "B", + "ctrl_cmd": "~~~CTRLSEQ21~~~", + "alt_cmd": "~~~CTRLSEQ1~~~b" + }, + { + "name": "N", + "cmd": "n", + "shift_cmd": "N", + "alt_cmd": "~~~CTRLSEQ1~~~n" + }, + { + "name": "M", + "cmd": "m", + "shift_cmd": "M", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~m" + }, + { + "name": ",", + "cmd": ",", + "shift_name": ";", + "shift_cmd": ";" + }, + { + "name": ".", + "cmd": ".", + "shift_name": ":", + "shift_cmd": ":" + }, + { + "name": "-", + "cmd": "-", + "shift_name": "_", + "shift_cmd": "_" + }, + { + "name": "SHIFT", + "cmd": "ESCAPED|-- SHIFT: RIGHT" + }, + { + "name": "ESCAPED|-- ICON: ARROW_UP", + "cmd": "~~~CTRLSEQ1~~~OA" + } + ], + "row_space": [ + { + "name": "CTRL", + "cmd": "ESCAPED|-- CTRL: LEFT" + }, + { + "name": "FN", + "cmd": "ESCAPED|-- FN: ON", + "fn_cmd": "ESCAPED|-- FN: OFF" + }, + { + "name": "", + "cmd": " " + }, + { + "name": "ALT GR", + "cmd": "ESCAPED|-- ALT: RIGHT" + }, + { + "name": "CTRL", + "cmd": "ESCAPED|-- CTRL: RIGHT" + }, + { + "name": "ESCAPED|-- ICON: ARROW_LEFT", + "cmd": "~~~CTRLSEQ1~~~OD" + }, + { + "name": "ESCAPED|-- ICON: ARROW_DOWN", + "cmd": "~~~CTRLSEQ1~~~OB" + }, + { + "name": "ESCAPED|-- ICON: ARROW_RIGHT", + "cmd": "~~~CTRLSEQ1~~~OC" + } + ] +} diff --git a/src/assets/kb_layouts/es-LAT.json b/src/assets/kb_layouts/es-LAT.json index a71cbe99a..91cf61705 100644 --- a/src/assets/kb_layouts/es-LAT.json +++ b/src/assets/kb_layouts/es-LAT.json @@ -1,402 +1,444 @@ { - "row_numbers": [ - { "name": "ESC", "cmd": "~~~CTRLSEQ1~~~" }, - { "name": "|", "cmd": "|", "shift_name": "°", "shift_cmd": "°" }, - { - "name": "1", - "cmd": "1", - "shift_name": "!", - "shift_cmd": "!", - "alt_cmd": "~~~CTRLSEQ1~~~1", - "fn_name": "F1", - "fn_cmd": "~~~CTRLSEQ1~~~OP" - }, - { - "name": "2", - "cmd": "2", - "shift_name": "\"", - "shift_cmd": "\"", - "alt_cmd": "~~~CTRLSEQ1~~~2", - "fn_name": "F2", - "fn_cmd": "~~~CTRLSEQ1~~~OQ" - }, - { - "name": "3", - "cmd": "3", - "shift_name": "#", - "shift_cmd": "#", - "ctrl_cmd": "~~~CTRLSEQ1~~~", - "alt_cmd": "~~~CTRLSEQ1~~~3", - "fn_name": "F3", - "fn_cmd": "~~~CTRLSEQ1~~~OR" - }, - { - "name": "4", - "cmd": "4", - "shift_name": "$", - "shift_cmd": "$", - "ctrl_cmd": "~~~CTRLSEQ2~~~", - "alt_cmd": "~~~CTRLSEQ1~~~4", - "fn_name": "F4", - "fn_cmd": "~~~CTRLSEQ1~~~OS" - }, - { - "name": "5", - "cmd": "5", - "shift_name": "%", - "shift_cmd": "%", - "ctrl_cmd": "~~~CTRLSEQ3~~~", - "alt_cmd": "~~~CTRLSEQ1~~~5", - "fn_name": "F5", - "fn_cmd": "~~~CTRLSEQ1~~~[15~" - }, - { - "name": "6", - "cmd": "6", - "shift_name": "&", - "shift_cmd": "&", - "ctrl_cmd": "~~~CTRLSEQ4~~~", - "alt_cmd": "~~~CTRLSEQ1~~~6", - "fn_name": "F6", - "fn_cmd": "~~~CTRLSEQ1~~~[17~" - }, - { - "name": "7", - "cmd": "7", - "shift_name": "/", - "shift_cmd": "/", - "ctrl_cmd": "~~~CTRLSEQ5~~~", - "fn_name": "F7", - "fn_cmd": "~~~CTRLSEQ1~~~[18~" - }, - { - "name": "8", - "cmd": "8", - "shift_name": "(", - "shift_cmd": "(", - "fn_name": "F8", - "fn_cmd": "~~~CTRLSEQ1~~~[19~" - }, - { - "name": "9", - "cmd": "9", - "shift_name": ")", - "shift_cmd": ")", - "alt_cmd": "~~~CTRLSEQ1~~~9", - "fn_name": "F9", - "fn_cmd": "~~~CTRLSEQ1~~~[20~" - }, - { - "name": "0", - "cmd": "0", - "shift_name": "=", - "shift_cmd": "=", - "alt_cmd": "~~~CTRLSEQ1~~~0", - "fn_name": "F10", - "fn_cmd": "~~~CTRLSEQ1~~~[21~" - }, - { - "name": "'", - "cmd": "'", - "shift_name": "?", - "shift_cmd": "?", - "alt_name": "\\", - "alt_cmd": "\\", - "fn_name": "F11", - "fn_cmd": "~~~CTRLSEQ1~~~[23~" - }, - { - "name": "¿", - "cmd": "¿", - "shift_name": "¡", - "shift_cmd": "¡", - "fn_name": "F12", - "fn_cmd": "~~~CTRLSEQ1~~~[24~" - }, - { - "name": "BACK", - "cmd": "\b", - "shift_name": "DELETE", - "shift_cmd": "~~~CTRLSEQ1~~~[3~" - } - ], - "row_1": [ - { "name": "TAB", "cmd": "\t" }, - { - "name": "Q", - "cmd": "q", - "shift_cmd": "Q", - "alt_name": "@", - "alt_cmd": "@", - "ctrl_cmd": "~~~CTRLSEQ6~~~", - "alt_cmd": "~~~CTRLSEQ1~~~q" - }, - { - "name": "W", - "cmd": "w", - "shift_cmd": "W", - "ctrl_cmd": "~~~CTRLSEQ7~~~", - "alt_cmd": "~~~CTRLSEQ1~~~w" - }, - { - "name": "E", - "cmd": "e", - "shift_cmd": "E", - "ctrl_cmd": "\r", - "alt_cmd": "~~~CTRLSEQ1~~~e" - }, - { - "name": "R", - "cmd": "r", - "shift_cmd": "R", - "ctrl_cmd": "~~~CTRLSEQ8~~~", - "alt_cmd": "~~~CTRLSEQ1~~~r" - }, - { - "name": "T", - "cmd": "t", - "shift_cmd": "T", - "ctrl_cmd": "~~~CTRLSEQ9~~~", - "alt_cmd": "~~~CTRLSEQ1~~~t" - }, - { - "name": "Y", - "cmd": "y", - "shift_cmd": "Y", - "ctrl_cmd": "~~~CTRLSEQ10~~~", - "alt_cmd": "~~~CTRLSEQ1~~~y" - }, - { - "name": "U", - "cmd": "u", - "shift_cmd": "U", - "ctrl_cmd": "~~~CTRLSEQ11~~~", - "alt_cmd": "~~~CTRLSEQ1~~~u" - }, - { - "name": "I", - "cmd": "i", - "shift_cmd": "I", - "ctrl_cmd": "\r", - "alt_cmd": "~~~CTRLSEQ1~~~i" - }, - { - "name": "O", - "cmd": "o", - "shift_cmd": "O", - "alt_cmd": "~~~CTRLSEQ1~~~o" - }, - { - "name": "P", - "cmd": "p", - "shift_cmd": "P", - "ctrl_cmd": "~~~CTRLSEQ12~~~", - "alt_cmd": "~~~CTRLSEQ1~~~p" - }, - { - "name": "´", - "cmd": "´", - "shift_name": "¨", - "shift_cmd": "¨", - "ctrl_cmd": "~~~CTRLSEQ1~~~" - }, - { - "name": "+", - "cmd": "+", - "shift_name": "*", - "shift_cmd": "*", - "alt_name": "~", - "alt_cmd": "~", - "ctrl_cmd": "~~~CTRLSEQ3~~~" - }, - { "name": "ENTER", "cmd": "\r" } - ], - "row_2": [ - { - "name": "CAPS", - "cmd": "ESCAPED|-- CAPSLCK: ON", - "shift_cmd": "ESCAPED|-- CAPSLCK: OFF" - }, - { - "name": "A", - "cmd": "a", - "shift_cmd": "A", - "ctrl_cmd": "~~~CTRLSEQ13~~~", - "alt_cmd": "~~~CTRLSEQ1~~~a" - }, - { - "name": "S", - "cmd": "s", - "shift_cmd": "S", - "ctrl_cmd": "~~~CTRLSEQ14~~~", - "alt_cmd": "~~~CTRLSEQ1~~~s" - }, - { - "name": "D", - "cmd": "d", - "shift_cmd": "D", - "ctrl_cmd": "~~~CTRLSEQ15~~~", - "alt_cmd": "~~~CTRLSEQ1~~~d" - }, - { - "name": "F", - "cmd": "f", - "shift_cmd": "F", - "ctrl_cmd": "~~~CTRLSEQ16~~~", - "alt_cmd": "~~~CTRLSEQ1~~~f" - }, - { - "name": "G", - "cmd": "g", - "shift_cmd": "G", - "ctrl_cmd": "\r", - "alt_cmd": "~~~CTRLSEQ1~~~g" - }, - { - "name": "H", - "cmd": "h", - "shift_cmd": "H", - "alt_cmd": "~~~CTRLSEQ1~~~h" - }, - { - "name": "J", - "cmd": "j", - "shift_cmd": "J", - "alt_cmd": "~~~CTRLSEQ1~~~j" - }, - { - "name": "K", - "cmd": "k", - "shift_cmd": "K", - "alt_cmd": "~~~CTRLSEQ1~~~k" - }, - { - "name": "L", - "cmd": "l", - "shift_cmd": "L", - "alt_cmd": "~~~CTRLSEQ1~~~l" - }, - { - "name": "Ñ", - "cmd": "ñ", - "shift_cmd": "Ñ", - "alt_cmd": "~~~CTRLSEQ1~~~ñ" - }, - { - "name": "{", - "cmd": "{", - "shift_name": "[", - "shift_cmd": "[", - "alt_name": "^", - "alt_cmd": "^" - }, - { - "name": "}", - "cmd": "}", - "shift_name": "]", - "shift_cmd": "]", - "alt_name": "`", - "alt_cmd": "`", - "ctrl_cmd": "~~~CTRLSEQ2~~~" - }, - { "name": "", "cmd": "\r" } - ], - "row_3": [ - { "name": "SHIFT", "cmd": "ESCAPED|-- SHIFT: LEFT" }, - { - "name": "<", - "cmd": "<", - "shift_name": ">", - "shift_cmd": ">", - "ctrl_cmd": "~~~CTRLSEQ2~~~" - }, - { - "name": "Z", - "cmd": "z", - "shift_cmd": "Z", - "ctrl_cmd": "~~~CTRLSEQ17~~~", - "alt_cmd": "~~~CTRLSEQ1~~~z" - }, - { - "name": "X", - "cmd": "x", - "shift_cmd": "X", - "ctrl_cmd": "~~~CTRLSEQ18~~~", - "alt_cmd": "~~~CTRLSEQ1~~~x" - }, - { - "name": "C", - "cmd": "c", - "shift_cmd": "C", - "ctrl_cmd": "~~~CTRLSEQ19~~~", - "alt_cmd": "~~~CTRLSEQ1~~~c" - }, - { - "name": "V", - "cmd": "v", - "shift_cmd": "V", - "ctrl_cmd": "~~~CTRLSEQ20~~~", - "alt_cmd": "~~~CTRLSEQ1~~~v" - }, - { - "name": "B", - "cmd": "b", - "shift_cmd": "B", - "ctrl_cmd": "~~~CTRLSEQ21~~~", - "alt_cmd": "~~~CTRLSEQ1~~~b" - }, - { - "name": "N", - "cmd": "n", - "shift_cmd": "N", - "alt_cmd": "~~~CTRLSEQ1~~~n" - }, - { - "name": "M", - "cmd": "m", - "shift_cmd": "M", - "ctrl_cmd": "\r", - "alt_cmd": "~~~CTRLSEQ1~~~m" - }, - { - "name": ",", - "cmd": ",", - "shift_name": ";", - "shift_cmd": ";" - }, - { - "name": ".", - "cmd": ".", - "shift_name": ":", - "shift_cmd": ":" - }, - { - "name": "-", - "cmd": "-", - "shift_name": "_", - "shift_cmd": "_" - }, - { - "name": "SHIFT", - "cmd": "ESCAPED|-- SHIFT: RIGHT" - }, - { - "name": "⬆", - "cmd": "~~~CTRLSEQ1~~~OA" - } - ], - "row_space": [ - { "name": "CTRL", "cmd": "ESCAPED|-- CTRL: LEFT" }, - { - "name": "FN", - "cmd": "ESCAPED|-- FN: ON", - "fn_cmd": "ESCAPED|-- FN: OFF" - }, - { "name": "", "cmd": " " }, - { "name": "ALT GR", "cmd": "ESCAPED|-- ALT: RIGHT" }, - { "name": "CTRL", "cmd": "ESCAPED|-- CTRL: RIGHT" }, - { "name": "⬅", "cmd": "~~~CTRLSEQ1~~~OD" }, - { "name": "⬇", "cmd": "~~~CTRLSEQ1~~~OB" }, - { "name": "➡", "cmd": "~~~CTRLSEQ1~~~OC" } - ] + "row_numbers": [ + { + "name": "ESC", + "cmd": "~~~CTRLSEQ1~~~" + }, + { + "name": "|", + "cmd": "|", + "shift_name": "°", + "shift_cmd": "°", + "alt_name": "¬", + "alt_cmd": "¬" + }, + { + "name": "1", + "cmd": "1", + "shift_name": "!", + "shift_cmd": "!", + "alt_cmd": "~~~CTRLSEQ1~~~1", + "fn_name": "F1", + "fn_cmd": "~~~CTRLSEQ1~~~OP" + }, + { + "name": "2", + "cmd": "2", + "shift_name": "\"", + "shift_cmd": "\"", + "alt_cmd": "~~~CTRLSEQ1~~~2", + "fn_name": "F2", + "fn_cmd": "~~~CTRLSEQ1~~~OQ" + }, + { + "name": "3", + "cmd": "3", + "shift_name": "#", + "shift_cmd": "#", + "ctrl_cmd": "~~~CTRLSEQ1~~~", + "alt_cmd": "~~~CTRLSEQ1~~~3", + "fn_name": "F3", + "fn_cmd": "~~~CTRLSEQ1~~~OR" + }, + { + "name": "4", + "cmd": "4", + "shift_name": "$", + "shift_cmd": "$", + "ctrl_cmd": "~~~CTRLSEQ2~~~", + "alt_cmd": "~~~CTRLSEQ1~~~4", + "fn_name": "F4", + "fn_cmd": "~~~CTRLSEQ1~~~OS" + }, + { + "name": "5", + "cmd": "5", + "shift_name": "%", + "shift_cmd": "%", + "ctrl_cmd": "~~~CTRLSEQ3~~~", + "alt_cmd": "~~~CTRLSEQ1~~~5", + "fn_name": "F5", + "fn_cmd": "~~~CTRLSEQ1~~~[15~" + }, + { + "name": "6", + "cmd": "6", + "shift_name": "&", + "shift_cmd": "&", + "ctrl_cmd": "~~~CTRLSEQ4~~~", + "alt_cmd": "~~~CTRLSEQ1~~~6", + "fn_name": "F6", + "fn_cmd": "~~~CTRLSEQ1~~~[17~" + }, + { + "name": "7", + "cmd": "7", + "shift_name": "/", + "shift_cmd": "/", + "ctrl_cmd": "~~~CTRLSEQ5~~~", + "fn_name": "F7", + "fn_cmd": "~~~CTRLSEQ1~~~[18~" + }, + { + "name": "8", + "cmd": "8", + "shift_name": "(", + "shift_cmd": "(", + "fn_name": "F8", + "fn_cmd": "~~~CTRLSEQ1~~~[19~" + }, + { + "name": "9", + "cmd": "9", + "shift_name": ")", + "shift_cmd": ")", + "alt_cmd": "~~~CTRLSEQ1~~~9", + "fn_name": "F9", + "fn_cmd": "~~~CTRLSEQ1~~~[20~" + }, + { + "name": "0", + "cmd": "0", + "shift_name": "=", + "shift_cmd": "=", + "alt_cmd": "~~~CTRLSEQ1~~~0", + "fn_name": "F10", + "fn_cmd": "~~~CTRLSEQ1~~~[21~" + }, + { + "name": "'", + "cmd": "'", + "shift_name": "?", + "shift_cmd": "?", + "alt_name": "\\", + "alt_cmd": "\\", + "fn_name": "F11", + "fn_cmd": "~~~CTRLSEQ1~~~[23~" + }, + { + "name": "¿", + "cmd": "¿", + "shift_name": "¡", + "shift_cmd": "¡", + "fn_name": "F12", + "fn_cmd": "~~~CTRLSEQ1~~~[24~" + }, + { + "name": "BACK", + "cmd": "\b", + "shift_name": "DELETE", + "shift_cmd": "~~~CTRLSEQ1~~~[3~" + } + ], + "row_1": [ + { + "name": "TAB", + "cmd": "\t" + }, + { + "name": "Q", + "cmd": "q", + "shift_cmd": "Q", + "alt_name": "@", + "alt_cmd": "@", + "ctrl_cmd": "~~~CTRLSEQ6~~~" + }, + { + "name": "W", + "cmd": "w", + "shift_cmd": "W", + "ctrl_cmd": "~~~CTRLSEQ7~~~", + "alt_cmd": "~~~CTRLSEQ1~~~w" + }, + { + "name": "E", + "cmd": "e", + "shift_cmd": "E", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~e" + }, + { + "name": "R", + "cmd": "r", + "shift_cmd": "R", + "ctrl_cmd": "~~~CTRLSEQ8~~~", + "alt_cmd": "~~~CTRLSEQ1~~~r" + }, + { + "name": "T", + "cmd": "t", + "shift_cmd": "T", + "ctrl_cmd": "~~~CTRLSEQ9~~~", + "alt_cmd": "~~~CTRLSEQ1~~~t" + }, + { + "name": "Y", + "cmd": "y", + "shift_cmd": "Y", + "ctrl_cmd": "~~~CTRLSEQ10~~~", + "alt_cmd": "~~~CTRLSEQ1~~~y" + }, + { + "name": "U", + "cmd": "u", + "shift_cmd": "U", + "ctrl_cmd": "~~~CTRLSEQ11~~~", + "alt_cmd": "~~~CTRLSEQ1~~~u" + }, + { + "name": "I", + "cmd": "i", + "shift_cmd": "I", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~i" + }, + { + "name": "O", + "cmd": "o", + "shift_cmd": "O", + "alt_cmd": "~~~CTRLSEQ1~~~o" + }, + { + "name": "P", + "cmd": "p", + "shift_cmd": "P", + "ctrl_cmd": "~~~CTRLSEQ12~~~", + "alt_cmd": "~~~CTRLSEQ1~~~p" + }, + { + "name": "´", + "cmd": "ESCAPED|-- ACUTE", + "shift_name": "¨", + "shift_cmd": "ESCAPED|-- TREMA", + "ctrl_cmd": "~~~CTRLSEQ1~~~" + }, + { + "name": "+", + "cmd": "+", + "shift_name": "*", + "shift_cmd": "*", + "alt_name": "~", + "alt_cmd": "~", + "ctrl_cmd": "~~~CTRLSEQ3~~~" + }, + { + "name": "ENTER", + "cmd": "\r" + } + ], + "row_2": [ + { + "name": "CAPS", + "cmd": "ESCAPED|-- CAPSLCK: ON", + "shift_cmd": "ESCAPED|-- CAPSLCK: OFF" + }, + { + "name": "A", + "cmd": "a", + "shift_cmd": "A", + "ctrl_cmd": "~~~CTRLSEQ13~~~", + "alt_cmd": "~~~CTRLSEQ1~~~a" + }, + { + "name": "S", + "cmd": "s", + "shift_cmd": "S", + "ctrl_cmd": "~~~CTRLSEQ14~~~", + "alt_cmd": "~~~CTRLSEQ1~~~s" + }, + { + "name": "D", + "cmd": "d", + "shift_cmd": "D", + "ctrl_cmd": "~~~CTRLSEQ15~~~", + "alt_cmd": "~~~CTRLSEQ1~~~d" + }, + { + "name": "F", + "cmd": "f", + "shift_cmd": "F", + "ctrl_cmd": "~~~CTRLSEQ16~~~", + "alt_cmd": "~~~CTRLSEQ1~~~f" + }, + { + "name": "G", + "cmd": "g", + "shift_cmd": "G", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~g" + }, + { + "name": "H", + "cmd": "h", + "shift_cmd": "H", + "alt_cmd": "~~~CTRLSEQ1~~~h" + }, + { + "name": "J", + "cmd": "j", + "shift_cmd": "J", + "alt_cmd": "~~~CTRLSEQ1~~~j" + }, + { + "name": "K", + "cmd": "k", + "shift_cmd": "K", + "alt_cmd": "~~~CTRLSEQ1~~~k" + }, + { + "name": "L", + "cmd": "l", + "shift_cmd": "L", + "alt_cmd": "~~~CTRLSEQ1~~~l" + }, + { + "name": "Ñ", + "cmd": "ñ", + "shift_cmd": "Ñ", + "alt_cmd": "~~~CTRLSEQ1~~~ñ" + }, + { + "name": "{", + "cmd": "{", + "shift_name": "[", + "shift_cmd": "[", + "alt_name": "^", + "alt_cmd": "ESCAPED|-- CIRCUM" + }, + { + "name": "}", + "cmd": "}", + "shift_name": "]", + "shift_cmd": "]", + "alt_name": "`", + "alt_cmd": "ESCAPED|-- GRAVE", + "ctrl_cmd": "~~~CTRLSEQ2~~~" + }, + { + "name": "", + "cmd": "\r" + } + ], + "row_3": [ + { + "name": "SHIFT", + "cmd": "ESCAPED|-- SHIFT: LEFT" + }, + { + "name": "<", + "cmd": "<", + "shift_name": ">", + "shift_cmd": ">", + "ctrl_cmd": "~~~CTRLSEQ2~~~" + }, + { + "name": "Z", + "cmd": "z", + "shift_cmd": "Z", + "ctrl_cmd": "~~~CTRLSEQ17~~~", + "alt_cmd": "~~~CTRLSEQ1~~~z" + }, + { + "name": "X", + "cmd": "x", + "shift_cmd": "X", + "ctrl_cmd": "~~~CTRLSEQ18~~~", + "alt_cmd": "~~~CTRLSEQ1~~~x" + }, + { + "name": "C", + "cmd": "c", + "shift_cmd": "C", + "ctrl_cmd": "~~~CTRLSEQ19~~~", + "alt_cmd": "~~~CTRLSEQ1~~~c" + }, + { + "name": "V", + "cmd": "v", + "shift_cmd": "V", + "ctrl_cmd": "~~~CTRLSEQ20~~~", + "alt_cmd": "~~~CTRLSEQ1~~~v" + }, + { + "name": "B", + "cmd": "b", + "shift_cmd": "B", + "ctrl_cmd": "~~~CTRLSEQ21~~~", + "alt_cmd": "~~~CTRLSEQ1~~~b" + }, + { + "name": "N", + "cmd": "n", + "shift_cmd": "N", + "alt_cmd": "~~~CTRLSEQ1~~~n" + }, + { + "name": "M", + "cmd": "m", + "shift_cmd": "M", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~m" + }, + { + "name": ",", + "cmd": ",", + "shift_name": ";", + "shift_cmd": ";" + }, + { + "name": ".", + "cmd": ".", + "shift_name": ":", + "shift_cmd": ":" + }, + { + "name": "-", + "cmd": "-", + "shift_name": "_", + "shift_cmd": "_" + }, + { + "name": "SHIFT", + "cmd": "ESCAPED|-- SHIFT: RIGHT" + }, + { + "name": "ESCAPED|-- ICON: ARROW_UP", + "cmd": "~~~CTRLSEQ1~~~OA" + } + ], + "row_space": [ + { + "name": "CTRL", + "cmd": "ESCAPED|-- CTRL: LEFT" + }, + { + "name": "FN", + "cmd": "ESCAPED|-- FN: ON", + "fn_cmd": "ESCAPED|-- FN: OFF" + }, + { + "name": "", + "cmd": " " + }, + { + "name": "ALT GR", + "cmd": "ESCAPED|-- ALT: RIGHT" + }, + { + "name": "CTRL", + "cmd": "ESCAPED|-- CTRL: RIGHT" + }, + { + "name": "ESCAPED|-- ICON: ARROW_LEFT", + "cmd": "~~~CTRLSEQ1~~~OD" + }, + { + "name": "ESCAPED|-- ICON: ARROW_DOWN", + "cmd": "~~~CTRLSEQ1~~~OB" + }, + { + "name": "ESCAPED|-- ICON: ARROW_RIGHT", + "cmd": "~~~CTRLSEQ1~~~OC" + } + ] } diff --git a/src/assets/kb_layouts/fr-BEPO.json b/src/assets/kb_layouts/fr-BEPO.json index 11551b183..8f9ba476d 100644 --- a/src/assets/kb_layouts/fr-BEPO.json +++ b/src/assets/kb_layouts/fr-BEPO.json @@ -9,14 +9,20 @@ "cmd": "$", "shift_name": "#", "shift_cmd": "#", - "alt_cmd": "–" + "alt_name": "–", + "alt_cmd": "–", + "altshift_name": "¶", + "altshift_cmd": "¶" }, { "name": "\"", "cmd": "\"", "shift_name": "1", "shift_cmd": "1", + "alt_name": "––", "alt_cmd": "—", + "altshift_name": "„", + "altshift_cmd": "„", "fn_name": "F1", "fn_cmd": "~~~CTRLSEQ1~~~OP" }, @@ -27,6 +33,8 @@ "shift_cmd": "2", "alt_name": "<", "alt_cmd": "<", + "altshift_name": "“", + "altshift_cmd": "“", "fn_name": "F2", "fn_cmd": "~~~CTRLSEQ1~~~OQ" }, @@ -38,6 +46,8 @@ "ctrl_cmd": "~~~CTRLSEQ1~~~", "alt_name": ">", "alt_cmd": ">", + "altshift_name": "”", + "altshift_cmd": "”", "fn_name": "F3", "fn_cmd": "~~~CTRLSEQ1~~~OR" }, @@ -49,6 +59,8 @@ "ctrl_cmd": "~~~CTRLSEQ2~~~", "alt_name": "[", "alt_cmd": "[", + "altshift_name": "≤", + "altshift_cmd": "≤", "fn_name": "F4", "fn_cmd": "~~~CTRLSEQ1~~~OS" }, @@ -60,6 +72,8 @@ "ctrl_cmd": "~~~CTRLSEQ3~~~", "alt_name": "]", "alt_cmd": "]", + "altshift_name": "≥", + "altshift_cmd": "≥", "fn_name": "F5", "fn_cmd": "~~~CTRLSEQ1~~~[15~" }, @@ -82,6 +96,8 @@ "ctrl_cmd": "~~~CTRLSEQ5~~~", "alt_name": "±", "alt_cmd": "±", + "altshift_name": "¬", + "altshift_cmd": "¬", "fn_name": "F7", "fn_cmd": "~~~CTRLSEQ1~~~[18~" }, @@ -91,8 +107,10 @@ "shift_name": "8", "shift_cmd": "8", "ctrl_cmd": "\r", - "alt_name": "÷", - "alt_cmd": "÷", + "alt_name": "−", + "alt_cmd": "−", + "altshift_name": "¼", + "altshift_cmd": "¼", "fn_name": "F8", "fn_cmd": "~~~CTRLSEQ1~~~[19~" }, @@ -103,6 +121,8 @@ "shift_cmd": "9", "alt_name": "÷", "alt_cmd": "÷", + "altshift_name": "½", + "altshift_cmd": "½", "fn_name": "F9", "fn_cmd": "~~~CTRLSEQ1~~~[20~" }, @@ -113,6 +133,8 @@ "shift_cmd": "0", "alt_name": "×", "alt_cmd": "×", + "altshift_name": "¾", + "altshift_cmd": "¾", "fn_name": "F10", "fn_cmd": "~~~CTRLSEQ1~~~[21~" }, @@ -123,6 +145,8 @@ "shift_cmd": "°", "alt_name": "≠", "alt_cmd": "≠", + "altshift_name": "′", + "altshift_cmd": "′", "fn_name": "F11", "fn_cmd": "~~~CTRLSEQ1~~~[23~" }, @@ -131,7 +155,10 @@ "cmd": "%", "shift_name": "`", "shift_cmd": "`", + "alt_name": "‰", "alt_cmd": "‰", + "altshift_name": "″", + "altshift_cmd": "″", "fn_name": "F12", "fn_cmd": "~~~CTRLSEQ1~~~[24~" }, @@ -153,6 +180,8 @@ "shift_cmd": "B", "alt_name": "|", "alt_cmd": "|", + "altshift_name": "¦", + "altshift_cmd": "¦", "ctrl_cmd": "~~~CTRLSEQ21~~~" }, { @@ -168,6 +197,8 @@ "shift_cmd": "P", "alt_name": "&", "alt_cmd": "&", + "altshift_name": "§", + "altshift_cmd": "§", "ctrl_cmd": "~~~CTRLSEQ12~~~" }, { @@ -176,6 +207,8 @@ "shift_cmd": "O", "alt_name": "œ", "alt_cmd": "œ", + "altshift_name": "Œ", + "altshift_cmd": "Œ", "ctrl_cmd": "~~~CTRLSEQ8~~~" }, { @@ -184,7 +217,9 @@ "shift_cmd": "È", "ctrl_cmd": "~~~CTRLSEQ9~~~", "alt_name": "`", - "alt_cmd": "ESCAPED|-- GRAVE" + "alt_cmd": "ESCAPED|-- GRAVE", + "altshift_name": "`", + "altshift_cmd": "`" }, { "name": "^", @@ -202,7 +237,7 @@ "shift_cmd": "V", "ctrl_cmd": "~~~CTRLSEQ20~~~", "alt_name": "ˇ", - "alt_cmd": "ESCAPE|-- CARON" + "alt_cmd": "ESCAPED|-- CARON" }, { "name": "D", @@ -210,7 +245,9 @@ "shift_cmd": "D", "ctrl_cmd": "~~~CTRLSEQ15~~~", "alt_name": "ð", - "alt_cmd": "ð" + "alt_cmd": "ð", + "altshift_name": "Ð", + "altshift_cmd": "Ð" }, { "name": "L", @@ -224,7 +261,9 @@ "cmd": "j", "shift_cmd": "J", "alt_name": "ij", - "alt_cmd": "ij" + "alt_cmd": "ij", + "altshift_name": "IJ", + "altshift_cmd": "IJ" }, { "name": "Z", @@ -232,6 +271,8 @@ "shift_cmd": "Z", "alt_name": "ə", "alt_cmd": "ə", + "altshift_name": "Ə", + "altshift_cmd": "Ə", "ctrl_cmd": "~~~CTRLSEQ17~~~" }, { @@ -259,7 +300,19 @@ "shift_cmd": "A", "ctrl_cmd": "~~~CTRLSEQ13~~~", "alt_name": "æ", - "alt_cmd": "æ" + "alt_cmd": "æ", + "altshift_name": "Æ", + "altshift_cmd": "Æ" + }, + { + "name": "U", + "cmd": "u", + "shift_cmd": "U", + "ctrl_cmd": "~~~CTRLSEQ11~~~", + "alt_name": "ù", + "alt_cmd": "ù", + "altshift_name": "Ù", + "altshift_cmd": "Ù" }, { "name": "I", @@ -269,14 +322,6 @@ "alt_name": "¨", "alt_cmd": "ESCAPED|-- TREMA" }, - { - "name": "U", - "cmd": "u", - "shift_cmd": "U", - "ctrl_cmd": "~~~CTRLSEQ11~~~", - "alt_name": "ù", - "alt_cmd": "ù" - }, { "name": "E", "cmd": "e", @@ -300,7 +345,9 @@ "shift_cmd": "C", "ctrl_cmd": "~~~CTRLSEQ19~~~", "alt_name": "©", - "alt_cmd": "©" + "alt_cmd": "©", + "altshift_name": "ſ", + "altshift_cmd": "ſ" }, { "name": "T", @@ -308,7 +355,9 @@ "shift_cmd": "T", "ctrl_cmd": "~~~CTRLSEQ9~~~", "alt_name": "þ", - "alt_cmd": "þ" + "alt_cmd": "þ", + "altshift_name": "Þ", + "altshift_cmd": "Þ" }, { "name": "S", @@ -324,7 +373,9 @@ "shift_cmd": "R", "ctrl_cmd": "~~~CTRLSEQ8~~~", "alt_name": "®", - "alt_cmd": "®" + "alt_cmd": "®", + "altshift_name": "™", + "altshift_cmd": "™" }, { "name": "N", @@ -339,14 +390,18 @@ "shift_cmd": "M", "alt_name": "¯", "ctrl_cmd": "\r", - "alt_cmd": "ESCAPED|-- MACRON" + "alt_cmd": "ESCAPED|-- MACRON", + "altshift_name": "º", + "altshift_cmd": "º" }, { "name": "Ç", "cmd": "ç", "shift_cmd": "Ç", "alt_name": "¸", - "alt_cmd": "ESCAPED|-- CEDILLA" + "alt_cmd": "ESCAPED|-- CEDILLA", + "altshift_name": ",", + "altshift_cmd": "ESCAPED|-- IOTASUB" }, { "name": "", @@ -378,7 +433,9 @@ "shift_cmd": "Y", "ctrl_cmd": "~~~CTRLSEQ10~~~", "alt_name": "{", - "alt_cmd": "{" + "alt_cmd": "{", + "altshift_name": "‘", + "altshift_cmd": "‘" }, { "name": "X", @@ -386,7 +443,9 @@ "shift_cmd": "X", "ctrl_cmd": "~~~CTRLSEQ18~~~", "alt_name": "}", - "alt_cmd": "}" + "alt_cmd": "}", + "altshift_name": "’", + "altshift_cmd": "’" }, { "name": ".", @@ -395,7 +454,9 @@ "shift_name": ":", "shift_cmd": ":", "alt_name": "…", - "alt_cmd": "…" + "alt_cmd": "…", + "altshift_name": "·", + "altshift_cmd": "·" }, { "name": "K", @@ -435,7 +496,9 @@ "cmd": "h", "shift_cmd": "H", "alt_name": "†", - "alt_cmd": "†" + "alt_cmd": "†", + "altshift_name": "‡", + "altshift_cmd": "‡" }, { "name": "F", @@ -443,14 +506,16 @@ "shift_cmd": "F", "ctrl_cmd": "~~~CTRLSEQ16~~~", "alt_name": "˛", - "alt_cmd": "ESCAPED|-- IOTASUB" + "alt_cmd": "ESCAPED|-- IOTASUB", + "altshift_name": "ª", + "altshift_cmd": "ª" }, { "name": "SHIFT", "cmd": "ESCAPED|-- SHIFT: RIGHT" }, { - "name": "⬆", + "name": "ESCAPED|-- ICON: ARROW_UP", "cmd": "~~~CTRLSEQ1~~~OA" } ], @@ -467,7 +532,7 @@ { "name": "", "cmd": " ", - "shift_cmd": " ", + "shift_cmd": "\u00A0", "alt_cmd": "_" }, { @@ -479,15 +544,15 @@ "cmd": "ESCAPED|-- CTRL: RIGHT" }, { - "name": "⬅", + "name": "ESCAPED|-- ICON: ARROW_LEFT", "cmd": "~~~CTRLSEQ1~~~OD" }, { - "name": "⬇", + "name": "ESCAPED|-- ICON: ARROW_DOWN", "cmd": "~~~CTRLSEQ1~~~OB" }, { - "name": "➡", + "name": "ESCAPED|-- ICON: ARROW_RIGHT", "cmd": "~~~CTRLSEQ1~~~OC" } ] diff --git a/src/assets/kb_layouts/fr-FR.json b/src/assets/kb_layouts/fr-FR.json index d5383ede3..e9186c47e 100644 --- a/src/assets/kb_layouts/fr-FR.json +++ b/src/assets/kb_layouts/fr-FR.json @@ -414,7 +414,7 @@ "cmd": "ESCAPED|-- SHIFT: RIGHT" }, { - "name": "⬆", + "name": "ESCAPED|-- ICON: ARROW_UP", "cmd": "~~~CTRLSEQ1~~~OA" } ], @@ -441,15 +441,15 @@ "cmd": "ESCAPED|-- CTRL: RIGHT" }, { - "name": "⬅", + "name": "ESCAPED|-- ICON: ARROW_LEFT", "cmd": "~~~CTRLSEQ1~~~OD" }, { - "name": "⬇", + "name": "ESCAPED|-- ICON: ARROW_DOWN", "cmd": "~~~CTRLSEQ1~~~OB" }, { - "name": "➡", + "name": "ESCAPED|-- ICON: ARROW_RIGHT", "cmd": "~~~CTRLSEQ1~~~OC" } ] diff --git a/src/assets/kb_layouts/hu-HU.json b/src/assets/kb_layouts/hu-HU.json index 1953a4643..5db07efb1 100644 --- a/src/assets/kb_layouts/hu-HU.json +++ b/src/assets/kb_layouts/hu-HU.json @@ -399,7 +399,7 @@ "cmd": "ESCAPED|-- SHIFT: RIGHT" }, { - "name": "⬆", + "name": "ESCAPED|-- ICON: ARROW_UP", "cmd": "~~~CTRLSEQ1~~~OA" } ], @@ -426,15 +426,15 @@ "cmd": "ESCAPED|-- CTRL: RIGHT" }, { - "name": "⬅", + "name": "ESCAPED|-- ICON: ARROW_LEFT", "cmd": "~~~CTRLSEQ1~~~OD" }, { - "name": "⬇", + "name": "ESCAPED|-- ICON: ARROW_DOWN", "cmd": "~~~CTRLSEQ1~~~OB" }, { - "name": "➡", + "name": "ESCAPED|-- ICON: ARROW_RIGHT", "cmd": "~~~CTRLSEQ1~~~OC" } ] diff --git a/src/assets/kb_layouts/it-IT.json b/src/assets/kb_layouts/it-IT.json new file mode 100644 index 000000000..0ca9e2513 --- /dev/null +++ b/src/assets/kb_layouts/it-IT.json @@ -0,0 +1,447 @@ +{ + "row_numbers": [ + { + "name": "ESC", + "cmd": "~~~CTRLSEQ1~~~" + }, + { + "name": "\\", + "cmd": "\\", + "shift_name": "|", + "shift_cmd": "|" + }, + { + "name": "1", + "cmd": "1", + "shift_name": "!", + "shift_cmd": "!", + "alt_cmd": "~~~CTRLSEQ1~~~1", + "fn_name": "F1", + "fn_cmd": "~~~CTRLSEQ1~~~OP" + }, + { + "name": "2", + "cmd": "2", + "shift_name": "\"", + "shift_cmd": "\"", + "alt_cmd": "~~~CTRLSEQ1~~~2", + "fn_name": "F2", + "fn_cmd": "~~~CTRLSEQ1~~~OQ" + }, + { + "name": "3", + "cmd": "3", + "shift_name": "£", + "shift_cmd": "£", + "ctrl_cmd": "~~~CTRLSEQ1~~~", + "alt_cmd": "~~~CTRLSEQ1~~~3", + "fn_name": "F3", + "fn_cmd": "~~~CTRLSEQ1~~~OR" + }, + { + "name": "4", + "cmd": "4", + "shift_name": "$", + "shift_cmd": "$", + "ctrl_cmd": "~~~CTRLSEQ2~~~", + "alt_cmd": "~~~CTRLSEQ1~~~4", + "fn_name": "F4", + "fn_cmd": "~~~CTRLSEQ1~~~OS" + }, + { + "name": "5", + "cmd": "5", + "shift_name": "%", + "shift_cmd": "%", + "ctrl_cmd": "~~~CTRLSEQ3~~~", + "alt_cmd": "~~~CTRLSEQ1~~~5", + "fn_name": "F5", + "fn_cmd": "~~~CTRLSEQ1~~~[15~" + }, + { + "name": "6", + "cmd": "6", + "shift_name": "&", + "shift_cmd": "&", + "ctrl_cmd": "~~~CTRLSEQ4~~~", + "alt_cmd": "~~~CTRLSEQ1~~~6", + "fn_name": "F6", + "fn_cmd": "~~~CTRLSEQ1~~~[17~" + }, + { + "name": "7", + "cmd": "7", + "shift_name": "/", + "shift_cmd": "/", + "ctrl_cmd": "~~~CTRLSEQ5~~~", + "fn_name": "F7", + "fn_cmd": "~~~CTRLSEQ1~~~[18~" + }, + { + "name": "8", + "cmd": "8", + "shift_name": "(", + "shift_cmd": "(", + "ctrl_cmd": "\r", + "fn_name": "F8", + "fn_cmd": "~~~CTRLSEQ1~~~[19~" + }, + { + "name": "9", + "cmd": "9", + "shift_name": ")", + "shift_cmd": ")", + "alt_cmd": "~~~CTRLSEQ1~~~9", + "fn_name": "F9", + "fn_cmd": "~~~CTRLSEQ1~~~[20~" + }, + { + "name": "0", + "cmd": "0", + "shift_name": "=", + "shift_cmd": "=", + "alt_cmd": "~~~CTRLSEQ1~~~0", + "fn_name": "F10", + "fn_cmd": "~~~CTRLSEQ1~~~[21~" + }, + { + "name": "?", + "cmd": "?", + "shift_name": "'", + "shift_cmd": "'", + "fn_name": "F11", + "fn_cmd": "~~~CTRLSEQ1~~~[22~", + "ctrl_cmd": "~~~CTRLSEQ1~~~" + }, + { + "name": "ì", + "cmd": "ì", + "shift_name": "^", + "shift_cmd": "^", + "fn_name": "F12", + "fn_cmd": "~~~CTRLSEQ1~~~[23~", + "alt_name": "~", + "alt_cmd": "~", + "ctrl_cmd": "~~~CTRLSEQ3~~~" + }, + { + "name": "BACK", + "cmd": "\b", + "shift_name": "DELETE", + "shift_cmd": "~~~CTRLSEQ1~~~[3~" + } + ], + "row_1": [ + { + "name": "TAB", + "cmd": "\t" + }, + { + "name": "Q", + "cmd": "q", + "shift_cmd": "Q", + "ctrl_cmd": "~~~CTRLSEQ6~~~", + "alt_cmd": "~~~CTRLSEQ1~~~q" + }, + { + "name": "W", + "cmd": "w", + "shift_cmd": "W", + "ctrl_cmd": "~~~CTRLSEQ7~~~", + "alt_cmd": "~~~CTRLSEQ1~~~w" + }, + { + "name": "E", + "cmd": "e", + "shift_cmd": "E", + "ctrl_cmd": "\r", + "alt_name": "€", + "alt_cmd": "~~~CTRLSEQ1~~~e" + }, + { + "name": "R", + "cmd": "r", + "shift_cmd": "R", + "ctrl_cmd": "~~~CTRLSEQ8~~~", + "alt_cmd": "~~~CTRLSEQ1~~~r" + }, + { + "name": "T", + "cmd": "t", + "shift_cmd": "T", + "ctrl_cmd": "~~~CTRLSEQ9~~~", + "alt_cmd": "~~~CTRLSEQ1~~~t" + }, + { + "name": "Y", + "cmd": "y", + "shift_cmd": "Y", + "ctrl_cmd": "~~~CTRLSEQ10~~~", + "alt_cmd": "~~~CTRLSEQ1~~~y" + }, + { + "name": "U", + "cmd": "u", + "shift_cmd": "U", + "ctrl_cmd": "~~~CTRLSEQ11~~~", + "alt_cmd": "~~~CTRLSEQ1~~~u" + }, + { + "name": "I", + "cmd": "i", + "shift_cmd": "I", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~i" + }, + { + "name": "O", + "cmd": "o", + "shift_cmd": "O", + "alt_cmd": "~~~CTRLSEQ1~~~o" + }, + { + "name": "P", + "cmd": "p", + "shift_cmd": "P", + "ctrl_cmd": "~~~CTRLSEQ12~~~", + "alt_cmd": "~~~CTRLSEQ1~~~p" + }, + { + "name": "è", + "cmd": "è", + "shift_name": "é", + "shift_cmd": "é", + "alt_name": "[", + "alt_cmd": "[", + "ctrl_cmd": "~~~CTRLSEQ1~~~" + }, + { + "name": "+", + "cmd": "+", + "shift_name": "*", + "shift_cmd": "*", + "alt_name": "]", + "alt_cmd": "]", + "ctrl_cmd": "~~~CTRLSEQ3~~~" + }, + { + "name": "ENTER", + "cmd": "\r" + } + ], + "row_2": [ + { + "name": "CAPS", + "cmd": "ESCAPED|-- CAPSLCK: ON", + "shift_cmd": "ESCAPED|-- CAPSLCK: OFF" + }, + { + "name": "A", + "cmd": "a", + "shift_cmd": "A", + "ctrl_cmd": "~~~CTRLSEQ13~~~", + "alt_cmd": "~~~CTRLSEQ1~~~a" + }, + { + "name": "S", + "cmd": "s", + "shift_cmd": "S", + "ctrl_cmd": "~~~CTRLSEQ14~~~", + "alt_cmd": "~~~CTRLSEQ1~~~s" + }, + { + "name": "D", + "cmd": "d", + "shift_cmd": "D", + "ctrl_cmd": "~~~CTRLSEQ15~~~", + "alt_cmd": "~~~CTRLSEQ1~~~d" + }, + { + "name": "F", + "cmd": "f", + "shift_cmd": "F", + "ctrl_cmd": "~~~CTRLSEQ16~~~", + "alt_cmd": "~~~CTRLSEQ1~~~f" + }, + { + "name": "G", + "cmd": "g", + "shift_cmd": "G", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~g" + }, + { + "name": "H", + "cmd": "h", + "shift_cmd": "H", + "alt_cmd": "~~~CTRLSEQ1~~~h" + }, + { + "name": "J", + "cmd": "j", + "shift_cmd": "J", + "alt_cmd": "~~~CTRLSEQ1~~~j" + }, + { + "name": "K", + "cmd": "k", + "shift_cmd": "K", + "alt_cmd": "~~~CTRLSEQ1~~~k" + }, + { + "name": "L", + "cmd": "l", + "shift_cmd": "L", + "alt_cmd": "~~~CTRLSEQ1~~~l" + }, + { + "name": "ò", + "cmd": "ò", + "shift_name": "ç", + "shift_cmd": "ç", + "alt_name": "@", + "alt_cmd": "@" + }, + { + "name": "à", + "cmd": "à", + "shift_name": "°", + "shift_cmd": "°", + "alt_name": "#", + "alt_cmd": "#" + }, + { + "name": "ù", + "cmd": "ù", + "shift_name": "§", + "shift_cmd": "§", + "ctrl_cmd": "~~~CTRLSEQ2~~~" + }, + { + "name": "", + "cmd": "\r" + } + ], + "row_3": [ + { + "name": "SHIFT", + "cmd": "ESCAPED|-- SHIFT: LEFT" + }, + { + "name": "<", + "cmd": "<", + "shift_name": ">", + "shift_cmd": ">", + "ctrl_cmd": "~~~CTRLSEQ2~~~" + }, + { + "name": "Z", + "cmd": "z", + "shift_cmd": "Z", + "ctrl_cmd": "~~~CTRLSEQ17~~~", + "alt_cmd": "~~~CTRLSEQ1~~~z" + }, + { + "name": "X", + "cmd": "x", + "shift_cmd": "X", + "ctrl_cmd": "~~~CTRLSEQ18~~~", + "alt_cmd": "~~~CTRLSEQ1~~~x" + }, + { + "name": "C", + "cmd": "c", + "shift_cmd": "C", + "ctrl_cmd": "~~~CTRLSEQ19~~~", + "alt_cmd": "~~~CTRLSEQ1~~~c" + }, + { + "name": "V", + "cmd": "v", + "shift_cmd": "V", + "ctrl_cmd": "~~~CTRLSEQ20~~~", + "alt_cmd": "~~~CTRLSEQ1~~~v" + }, + { + "name": "B", + "cmd": "b", + "shift_cmd": "B", + "ctrl_cmd": "~~~CTRLSEQ21~~~", + "alt_cmd": "~~~CTRLSEQ1~~~b" + }, + { + "name": "N", + "cmd": "n", + "shift_cmd": "N", + "alt_cmd": "~~~CTRLSEQ1~~~n" + }, + { + "name": "M", + "cmd": "m", + "shift_cmd": "M", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~m" + }, + { + "name": ",", + "cmd": ",", + "shift_name": ";", + "shift_cmd": ";" + }, + { + "name": ".", + "cmd": ".", + "shift_name": ":", + "shift_cmd": ":" + }, + { + "name": "-", + "cmd": "-", + "shift_name": "_", + "shift_cmd": "_" + }, + { + "name": "SHIFT", + "cmd": "ESCAPED|-- SHIFT: RIGHT" + }, + { + "name": "ESCAPED|-- ICON: ARROW_UP", + "cmd": "~~~CTRLSEQ1~~~OA" + } + ], + "row_space": [ + { + "name": "CTRL", + "cmd": "ESCAPED|-- CTRL: LEFT" + }, + { + "name": "FN", + "cmd": "ESCAPED|-- FN: ON", + "fn_cmd": "ESCAPED|-- FN: OFF" + }, + { + "name": "", + "cmd": " " + }, + { + "name": "ALT GR", + "cmd": "ESCAPED|-- ALT: RIGHT" + }, + { + "name": "CTRL", + "cmd": "ESCAPED|-- CTRL: RIGHT" + }, + { + "name": "ESCAPED|-- ICON: ARROW_LEFT", + "cmd": "~~~CTRLSEQ1~~~OD" + }, + { + "name": "ESCAPED|-- ICON: ARROW_DOWN", + "cmd": "~~~CTRLSEQ1~~~OB" + }, + { + "name": "ESCAPED|-- ICON: ARROW_RIGHT", + "cmd": "~~~CTRLSEQ1~~~OC" + } + ] +} diff --git a/src/assets/kb_layouts/nl-BE.json b/src/assets/kb_layouts/nl-BE.json new file mode 100644 index 000000000..5170e185a --- /dev/null +++ b/src/assets/kb_layouts/nl-BE.json @@ -0,0 +1,458 @@ +{ + "row_numbers": [ + { + "name": "ESC", + "cmd": "~~~CTRLSEQ1~~~" + }, + { + "name": "²", + "cmd": "²", + "shift_name": "³", + "shift_cmd": "³", + "alt_cmd": "¬" + }, + { + "name": "&", + "cmd": "&", + "shift_name": "1", + "shift_cmd": "1", + "alt_name": "|", + "alt_cmd": "|", + "fn_name": "F1", + "fn_cmd": "~~~CTRLSEQ1~~~OP" + }, + { + "name": "é", + "cmd": "é", + "shift_name": "2", + "shift_cmd": "2", + "capslck_cmd": "É", + "alt_name": "@", + "alt_cmd": "@", + "fn_name": "F2", + "fn_cmd": "~~~CTRLSEQ1~~~OQ" + }, + { + "name": "\"", + "cmd": "\"", + "shift_name": "3", + "shift_cmd": "3", + "ctrl_cmd": "~~~CTRLSEQ1~~~", + "alt_name": "#", + "alt_cmd": "#", + "fn_name": "F3", + "fn_cmd": "~~~CTRLSEQ1~~~OR" + }, + { + "name": "'", + "cmd": "'", + "shift_name": "4", + "shift_cmd": "4", + "ctrl_cmd": "~~~CTRLSEQ2~~~", + "fn_name": "F4", + "fn_cmd": "~~~CTRLSEQ1~~~OS" + }, + { + "name": "(", + "cmd": "(", + "shift_name": "5", + "shift_cmd": "5", + "ctrl_cmd": "~~~CTRLSEQ3~~~", + "fn_name": "F5", + "fn_cmd": "~~~CTRLSEQ1~~~[15~" + }, + { + "name": "§", + "cmd": "§", + "shift_name": "6", + "shift_cmd": "6", + "ctrl_cmd": "~~~CTRLSEQ4~~~", + "alt_name": "^", + "alt_cmd": "|^", + "fn_name": "F6", + "fn_cmd": "~~~CTRLSEQ1~~~[17~" + }, + { + "name": "è", + "cmd": "è", + "shift_name": "7", + "shift_cmd": "7", + "capslck_cmd": "È", + "ctrl_cmd": "~~~CTRLSEQ5~~~", + "fn_name": "F7", + "fn_cmd": "~~~CTRLSEQ1~~~[18~" + }, + { + "name": "!", + "cmd": "!", + "shift_name": "8", + "shift_cmd": "8", + "ctrl_cmd": "\r", + "alt_name": "\\", + "alt_cmd": "\\", + "fn_name": "F8", + "fn_cmd": "~~~CTRLSEQ1~~~[19~" + }, + { + "name": "ç", + "cmd": "ç", + "shift_name": "9", + "shift_cmd": "9", + "capslck_cmd": "Ç", + "alt_name": "{", + "alt_cmd": "{", + "fn_name": "F9", + "fn_cmd": "~~~CTRLSEQ1~~~[20~" + }, + { + "name": "à", + "cmd": "à", + "shift_name": "0", + "shift_cmd": "0", + "capslck_cmd": "À", + "alt_name": "}", + "alt_cmd": "@}", + "fn_name": "F10", + "fn_cmd": "~~~CTRLSEQ1~~~[21~" + }, + { + "name": ")", + "cmd": ")", + "shift_name": "°", + "shift_cmd": "°", + "fn_name": "F11", + "fn_cmd": "~~~CTRLSEQ1~~~[23~" + }, + { + "name": "-", + "cmd": "-", + "shift_name": "_", + "shift_cmd": "_", + "fn_name": "F12", + "fn_cmd": "~~~CTRLSEQ1~~~[24~" + }, + { + "name": "BACK", + "cmd": "\b", + "shift_name": "DELETE", + "shift_cmd": "~~~CTRLSEQ1~~~[3~" + } + ], + "row_1": [ + { + "name": "TAB", + "cmd": "\t" + }, + { + "name": "A", + "cmd": "a", + "shift_cmd": "A", + "ctrl_cmd": "~~~CTRLSEQ13~~~", + "alt_cmd": "~~~CTRLSEQ1~~~a" + }, + { + "name": "Z", + "cmd": "z", + "shift_cmd": "Z", + "ctrl_cmd": "~~~CTRLSEQ17~~~", + "alt_cmd": "~~~CTRLSEQ1~~~z" + }, + { + "name": "E", + "cmd": "e", + "shift_cmd": "E", + "alt_name": "€", + "alt_cmd": "€", + "ctrl_cmd": "\r" + }, + { + "name": "R", + "cmd": "r", + "shift_cmd": "R", + "ctrl_cmd": "~~~CTRLSEQ8~~~", + "alt_cmd": "~~~CTRLSEQ1~~~r" + }, + { + "name": "T", + "cmd": "t", + "shift_cmd": "T", + "ctrl_cmd": "~~~CTRLSEQ9~~~", + "alt_cmd": "~~~CTRLSEQ1~~~t" + }, + { + "name": "Y", + "cmd": "y", + "shift_cmd": "Y", + "ctrl_cmd": "~~~CTRLSEQ10~~~", + "alt_cmd": "~~~CTRLSEQ1~~~y" + }, + { + "name": "U", + "cmd": "u", + "shift_cmd": "U", + "ctrl_cmd": "~~~CTRLSEQ11~~~", + "alt_cmd": "~~~CTRLSEQ1~~~u" + }, + { + "name": "I", + "cmd": "i", + "shift_cmd": "I", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~i" + }, + { + "name": "O", + "cmd": "o", + "shift_cmd": "O", + "alt_cmd": "~~~CTRLSEQ1~~~o" + }, + { + "name": "P", + "cmd": "p", + "shift_cmd": "P", + "ctrl_cmd": "~~~CTRLSEQ12~~~", + "alt_cmd": "~~~CTRLSEQ1~~~p" + }, + { + "name": "^", + "cmd": "ESCAPED|-- CIRCUM", + "shift_name": "¨", + "shift_cmd": "ESCAPED|-- TREMA", + "alt_name": "[", + "alt_cmd": "[", + "ctrl_cmd": "~~~CTRLSEQ1~~~" + }, + { + "name": "$", + "cmd": "$", + "shift_name": "*", + "shift_cmd": "*", + "alt_name": "]", + "alt_cmd": "]", + "ctrl_cmd": "~~~CTRLSEQ3~~~" + }, + { + "name": "ENTER", + "cmd": "\r" + } + ], + "row_2": [ + { + "name": "CAPS", + "cmd": "ESCAPED|-- CAPSLCK: ON", + "shift_cmd": "ESCAPED|-- CAPSLCK: OFF" + }, + { + "name": "Q", + "cmd": "q", + "shift_cmd": "Q", + "ctrl_cmd": "~~~CTRLSEQ6~~~", + "alt_cmd": "~~~CTRLSEQ1~~~q" + }, + { + "name": "S", + "cmd": "s", + "shift_cmd": "S", + "ctrl_cmd": "~~~CTRLSEQ14~~~", + "alt_cmd": "~~~CTRLSEQ1~~~s" + }, + { + "name": "D", + "cmd": "d", + "shift_cmd": "D", + "ctrl_cmd": "~~~CTRLSEQ15~~~", + "alt_cmd": "~~~CTRLSEQ1~~~d" + }, + { + "name": "F", + "cmd": "f", + "shift_cmd": "F", + "ctrl_cmd": "~~~CTRLSEQ16~~~", + "alt_cmd": "~~~CTRLSEQ1~~~f" + }, + { + "name": "G", + "cmd": "g", + "shift_cmd": "G", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~g" + }, + { + "name": "H", + "cmd": "h", + "shift_cmd": "H", + "alt_cmd": "~~~CTRLSEQ1~~~h" + }, + { + "name": "J", + "cmd": "j", + "shift_cmd": "J", + "alt_cmd": "~~~CTRLSEQ1~~~j" + }, + { + "name": "K", + "cmd": "k", + "shift_cmd": "K", + "alt_cmd": "~~~CTRLSEQ1~~~k" + }, + { + "name": "L", + "cmd": "l", + "shift_cmd": "L", + "alt_cmd": "~~~CTRLSEQ1~~~l" + }, + { + "name": "M", + "cmd": "m", + "shift_cmd": "M", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~m" + }, + { + "name": "ù", + "cmd": "ù", + "shift_name": "%", + "shift_cmd": "%", + "alt_name": "'", + "alt_cmd": "'", + "capslck_cmd": "Ù" + }, + { + "name": "µ", + "cmd": "µ", + "shift_name": "£", + "shift_cmd": "£", + "alt_name": "`", + "alt_cmd": "`" + }, + { + "name": "", + "cmd": "\r" + } + ], + "row_3": [ + { + "name": "SHIFT", + "cmd": "ESCAPED|-- SHIFT: LEFT" + }, + { + "name": "<", + "cmd": "<", + "shift_name": ">", + "shift_cmd": ">", + "alt_name": "\\", + "alt_cmd": "\\", + "ctrl_cmd": "~~~CTRLSEQ2~~~" + }, + { + "name": "W", + "cmd": "w", + "shift_cmd": "W", + "ctrl_cmd": "~~~CTRLSEQ7~~~", + "alt_cmd": "~~~CTRLSEQ1~~~w" + }, + { + "name": "X", + "cmd": "x", + "shift_cmd": "X", + "ctrl_cmd": "~~~CTRLSEQ18~~~", + "alt_cmd": "~~~CTRLSEQ1~~~x" + }, + { + "name": "C", + "cmd": "c", + "shift_cmd": "C", + "ctrl_cmd": "~~~CTRLSEQ19~~~", + "alt_cmd": "~~~CTRLSEQ1~~~c" + }, + { + "name": "V", + "cmd": "v", + "shift_cmd": "V", + "ctrl_cmd": "~~~CTRLSEQ20~~~", + "alt_cmd": "~~~CTRLSEQ1~~~v" + }, + { + "name": "B", + "cmd": "b", + "shift_cmd": "B", + "ctrl_cmd": "~~~CTRLSEQ21~~~", + "alt_cmd": "~~~CTRLSEQ1~~~b" + }, + { + "name": "N", + "cmd": "n", + "shift_cmd": "N", + "alt_cmd": "~~~CTRLSEQ1~~~n" + }, + { + "name": ",", + "cmd": ",", + "shift_name": "?", + "shift_cmd": "?" + }, + { + "name": ";", + "cmd": ";", + "shift_name": ".", + "shift_cmd": "." + }, + { + "name": ":", + "cmd": ":", + "shift_name": "\/", + "shift_cmd": "\/" + }, + { + "name": "=", + "cmd": "=", + "shift_name": "+", + "shift_cmd": "+", + "alt_name": "~", + "alt_cmd": "~" + }, + { + "name": "SHIFT", + "cmd": "ESCAPED|-- SHIFT: RIGHT" + }, + { + "name": "ESCAPED|-- ICON: ARROW_UP", + "cmd": "~~~CTRLSEQ1~~~OA" + } + ], + "row_space": [ + { + "name": "CTRL", + "cmd": "ESCAPED|-- CTRL: LEFT" + }, + { + "name": "FN", + "cmd": "ESCAPED|-- FN: ON", + "fn_cmd": "ESCAPED|-- FN: OFF" + }, + { + "name": "", + "cmd": " " + }, + { + "name": "ALT GR", + "cmd": "ESCAPED|-- ALT: RIGHT" + }, + { + "name": "CTRL", + "cmd": "ESCAPED|-- CTRL: RIGHT" + }, + { + "name": "ESCAPED|-- ICON: ARROW_LEFT", + "cmd": "~~~CTRLSEQ1~~~OD" + }, + { + "name": "ESCAPED|-- ICON: ARROW_DOWN", + "cmd": "~~~CTRLSEQ1~~~OB" + }, + { + "name": "ESCAPED|-- ICON: ARROW_RIGHT", + "cmd": "~~~CTRLSEQ1~~~OC" + } + ] +} diff --git a/src/assets/kb_layouts/pt-BR.json b/src/assets/kb_layouts/pt-BR.json new file mode 100644 index 000000000..3d3f2862a --- /dev/null +++ b/src/assets/kb_layouts/pt-BR.json @@ -0,0 +1,368 @@ +{ + "row_numbers": [{ + "name": "ESC", + "cmd": "~~~CTRLSEQ1~~~" + }, { + "name": "'", + "cmd": "'", + "shift_name": "\"", + "shift_cmd": "\"" + }, { + "name": "1", + "cmd": "1", + "shift_name": "!", + "shift_cmd": "!", + "alt_cmd": "~~~CTRLSEQ1~~~1", + "fn_name": "F1", + "fn_cmd": "~~~CTRLSEQ1~~~OP" + }, { + "name": "2", + "cmd": "2", + "shift_name": "@", + "shift_cmd": "@", + "alt_cmd": "~~~CTRLSEQ1~~~2", + "fn_name": "F2", + "fn_cmd": "~~~CTRLSEQ1~~~OQ" + }, { + "name": "3", + "cmd": "3", + "shift_name": "#", + "shift_cmd": "#", + "ctrl_cmd": "~~~CTRLSEQ1~~~", + "alt_cmd": "~~~CTRLSEQ1~~~3", + "fn_name": "F3", + "fn_cmd": "~~~CTRLSEQ1~~~OR" + }, { + "name": "4", + "cmd": "4", + "shift_name": "$", + "shift_cmd": "$", + "ctrl_cmd": "~~~CTRLSEQ2~~~", + "alt_cmd": "~~~CTRLSEQ1~~~4", + "fn_name": "F4", + "fn_cmd": "~~~CTRLSEQ1~~~OS" + }, { + "name": "5", + "cmd": "5", + "shift_name": "%", + "shift_cmd": "%", + "ctrl_cmd": "~~~CTRLSEQ3~~~", + "alt_cmd": "~~~CTRLSEQ1~~~5", + "fn_name": "F5", + "fn_cmd": "~~~CTRLSEQ1~~~[15~" + }, { + "name": "6", + "cmd": "6", + "shift_name": "¨", + "shift_cmd": "¨", + "ctrl_cmd": "~~~CTRLSEQ4~~~", + "alt_cmd": "~~~CTRLSEQ1~~~6", + "fn_name": "F6", + "fn_cmd": "~~~CTRLSEQ1~~~[17~" + }, { + "name": "7", + "cmd": "7", + "shift_name": "&", + "shift_cmd": "&", + "ctrl_cmd": "~~~CTRLSEQ5~~~", + "fn_name": "F7", + "fn_cmd": "~~~CTRLSEQ1~~~[18~" + }, { + "name": "8", + "cmd": "8", + "shift_name": "*", + "shift_cmd": "*", + "ctrl_cmd": "\r", + "fn_name": "F8", + "fn_cmd": "~~~CTRLSEQ1~~~[19~" + }, { + "name": "9", + "cmd": "9", + "shift_name": "(", + "shift_cmd": "(", + "alt_cmd": "~~~CTRLSEQ1~~~9", + "fn_name": "F9", + "fn_cmd": "~~~CTRLSEQ1~~~[20~" + }, { + "name": "0", + "cmd": "0", + "shift_name": ")", + "shift_cmd": ")", + "alt_cmd": "~~~CTRLSEQ1~~~0", + "fn_name": "F10", + "fn_cmd": "~~~CTRLSEQ1~~~[21~" + }, { + "name": "-", + "cmd": "-", + "shift_name": "_", + "shift_cmd": "_", + "fn_name": "F11", + "fn_cmd": "~~~CTRLSEQ1~~~[23~" + }, { + "name": "=", + "cmd": "=", + "shift_name": "+", + "shift_cmd": "+", + "fn_name": "F12", + "fn_cmd": "~~~CTRLSEQ1~~~[24~" + }, { + "name": "BACK", + "cmd": "\b", + "shift_name": "BACKSPACE", + "shift_cmd": "~~~CTRLSEQ1~~~[3~" + }], + "row_1": [{ + "name": "TAB", + "cmd": "\t" + }, { + "name": "Q", + "cmd": "q", + "shift_cmd": "Q", + "ctrl_cmd": "~~~CTRLSEQ6~~~", + "alt_cmd": "~~~CTRLSEQ1~~~q" + }, { + "name": "W", + "cmd": "w", + "shift_cmd": "W", + "ctrl_cmd": "~~~CTRLSEQ7~~~", + "alt_cmd": "~~~CTRLSEQ1~~~w" + }, { + "name": "E", + "cmd": "e", + "shift_cmd": "E", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~e" + }, { + "name": "R", + "cmd": "r", + "shift_cmd": "R", + "ctrl_cmd": "~~~CTRLSEQ8~~~", + "alt_cmd": "~~~CTRLSEQ1~~~r" + }, { + "name": "T", + "cmd": "t", + "shift_cmd": "T", + "ctrl_cmd": "~~~CTRLSEQ9~~~", + "alt_cmd": "~~~CTRLSEQ1~~~t" + }, { + "name": "Y", + "cmd": "y", + "shift_cmd": "Y", + "ctrl_cmd": "~~~CTRLSEQ10~~~", + "alt_cmd": "~~~CTRLSEQ1~~~y" + }, { + "name": "U", + "cmd": "u", + "shift_cmd": "U", + "ctrl_cmd": "~~~CTRLSEQ11~~~", + "alt_cmd": "~~~CTRLSEQ1~~~u" + }, { + "name": "I", + "cmd": "i", + "shift_cmd": "I", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~i" + }, { + "name": "O", + "cmd": "o", + "shift_cmd": "O", + "alt_cmd": "~~~CTRLSEQ1~~~o" + }, { + "name": "P", + "cmd": "p", + "shift_cmd": "P", + "ctrl_cmd": "~~~CTRLSEQ12~~~", + "alt_cmd": "~~~CTRLSEQ1~~~p" + }, { + "name": "`", + "cmd": "`", + "shift_name": "´", + "shift_cmd": "´", + "ctrl_cmd": "~~~CTRLSEQ1~~~" + }, { + "name": "{", + "cmd": "{", + "shift_name": "[", + "shift_cmd": "[", + "ctrl_cmd": "~~~CTRLSEQ3~~~" + }, { + "name": "ENTER", + "cmd": "\r" + }], + "row_2": [{ + "name": "CAPS", + "cmd": "ESCAPED|-- CAPSLCK: ON", + "shift_cmd": "ESCAPED|-- CAPSLCK: OFF" + }, { + "name": "A", + "cmd": "a", + "shift_cmd": "A", + "ctrl_cmd": "~~~CTRLSEQ13~~~", + "alt_cmd": "~~~CTRLSEQ1~~~a" + }, { + "name": "S", + "cmd": "s", + "shift_cmd": "S", + "ctrl_cmd": "~~~CTRLSEQ14~~~", + "alt_cmd": "~~~CTRLSEQ1~~~s" + }, { + "name": "D", + "cmd": "d", + "shift_cmd": "D", + "ctrl_cmd": "~~~CTRLSEQ15~~~", + "alt_cmd": "~~~CTRLSEQ1~~~d" + }, { + "name": "F", + "cmd": "f", + "shift_cmd": "F", + "ctrl_cmd": "~~~CTRLSEQ16~~~", + "alt_cmd": "~~~CTRLSEQ1~~~f" + }, { + "name": "G", + "cmd": "g", + "shift_cmd": "G", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~g" + }, { + "name": "H", + "cmd": "h", + "shift_cmd": "H", + "alt_cmd": "~~~CTRLSEQ1~~~h" + }, { + "name": "J", + "cmd": "j", + "shift_cmd": "J", + "alt_cmd": "~~~CTRLSEQ1~~~j" + }, { + "name": "K", + "cmd": "k", + "shift_cmd": "K", + "alt_cmd": "~~~CTRLSEQ1~~~k" + }, { + "name": "L", + "cmd": "l", + "shift_cmd": "L", + "alt_cmd": "~~~CTRLSEQ1~~~l" + }, { + "name": "Ç", + "cmd": "ç", + "shift_cmd": "Ç", + "alt_cmd": "~~~CTRLSEQ1~~~ç" + }, { + "name": "^", + "cmd": "^", + "shift_name": "~", + "shift_cmd": "~" + }, { + "name": "}", + "cmd": "}", + "shift_name": "]", + "shift_cmd": "]" + }, { + "name": "", + "cmd": "\r" + }], + "row_3": [{ + "name": "SHIFT", + "cmd": "ESCAPED|-- SHIFT: LEFT" + }, { + "name": "\\", + "cmd": "\\", + "shift_name": "|", + "shift_cmd": "|", + "ctrl_cmd": "~~~CTRLSEQ2~~~" + }, { + "name": "Z", + "cmd": "z", + "shift_cmd": "Z", + "ctrl_cmd": "~~~CTRLSEQ17~~~", + "alt_cmd": "~~~CTRLSEQ1~~~z" + }, { + "name": "X", + "cmd": "x", + "shift_cmd": "X", + "ctrl_cmd": "~~~CTRLSEQ18~~~", + "alt_cmd": "~~~CTRLSEQ1~~~x" + }, { + "name": "C", + "cmd": "c", + "shift_cmd": "C", + "ctrl_cmd": "~~~CTRLSEQ19~~~", + "alt_cmd": "~~~CTRLSEQ1~~~c" + }, { + "name": "V", + "cmd": "v", + "shift_cmd": "V", + "ctrl_cmd": "~~~CTRLSEQ20~~~", + "alt_cmd": "~~~CTRLSEQ1~~~v" + }, { + "name": "B", + "cmd": "b", + "shift_cmd": "B", + "ctrl_cmd": "~~~CTRLSEQ21~~~", + "alt_cmd": "~~~CTRLSEQ1~~~b" + }, { + "name": "N", + "cmd": "n", + "shift_cmd": "N", + "alt_cmd": "~~~CTRLSEQ1~~~n" + }, { + "name": "M", + "cmd": "m", + "shift_cmd": "M", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~m" + }, { + "name": "<", + "cmd": "<", + "shift_name": ",", + "shift_cmd": "," + }, { + "name": ">", + "cmd": ">", + "shift_name": ".", + "shift_cmd": "." + }, { + "name": ":", + "cmd": ":", + "shift_name": ";", + "shift_cmd": ";" + }, { + "name": "?", + "cmd": "?", + "shift_name": "\/", + "shift_cmd": "\/" + }, { + "name": "SHIFT", + "cmd": "ESCAPED|-- SHIFT: RIGHT" + }, { + "name": "ESCAPED|-- ICON: ARROW_UP", + "cmd": "~~~CTRLSEQ1~~~OA" + }], + "row_space": [{ + "name": "CTRL", + "cmd": "ESCAPED|-- CTRL: LEFT" + }, { + "name": "FN", + "cmd": "ESCAPED|-- FN: ON", + "fn_cmd": "ESCAPED|-- FN: OFF" + }, { + "name": "", + "cmd": " " + }, { + "name": "ALT GR", + "cmd": "ESCAPED|-- ALT: RIGHT" + }, { + "name": "CTRL", + "cmd": "ESCAPED|-- CTRL: RIGHT" + }, { + "name": "ESCAPED|-- ICON: ARROW_LEFT", + "cmd": "~~~CTRLSEQ1~~~OD" + }, { + "name": "ESCAPED|-- ICON: ARROW_DOWN", + "cmd": "~~~CTRLSEQ1~~~OB" + }, { + "name": "ESCAPED|-- ICON: ARROW_RIGHT", + "cmd": "~~~CTRLSEQ1~~~OC" + }] +} diff --git a/src/assets/kb_layouts/sv-SE.json b/src/assets/kb_layouts/sv-SE.json new file mode 100644 index 000000000..7b4edf5e8 --- /dev/null +++ b/src/assets/kb_layouts/sv-SE.json @@ -0,0 +1,448 @@ +{ + "row_numbers": [ + { + "name": "ESC", + "cmd": "~~~CTRLSEQ1~~~" + }, + { + "name": "½", + "cmd": "½", + "shift_name": "§", + "shift_cmd": "§" + }, + { + "name": "1", + "cmd": "1", + "shift_name": "!", + "shift_cmd": "!", + "alt_cmd": "~~~CTRLSEQ1~~~1", + "fn_name": "F1", + "fn_cmd": "~~~CTRLSEQ1~~~OP" + }, + { + "name": "2", + "cmd": "2", + "shift_name": "\"", + "shift_cmd": "\"", + "alt_cmd": "@", + "alt_name": "@", + "fn_name": "F2", + "fn_cmd": "~~~CTRLSEQ1~~~OQ" + }, + { + "name": "3", + "cmd": "3", + "shift_name": "#", + "shift_cmd": "#", + "ctrl_cmd": "~~~CTRLSEQ1~~~", + "alt_name": "£", + "alt_cmd": "£", + "fn_name": "F3", + "fn_cmd": "~~~CTRLSEQ1~~~OR" + }, + { + "name": "4", + "cmd": "4", + "shift_name": "¤", + "shift_cmd": "¤", + "ctrl_cmd": "~~~CTRLSEQ2~~~", + "alt_name": "$", + "alt_cmd": "$", + "fn_name": "F4", + "fn_cmd": "~~~CTRLSEQ1~~~OS" + }, + { + "name": "5", + "cmd": "5", + "shift_name": "%", + "shift_cmd": "%", + "ctrl_cmd": "~~~CTRLSEQ3~~~", + "alt_cmd": "~~~CTRLSEQ1~~~5", + "fn_name": "F5", + "fn_cmd": "~~~CTRLSEQ1~~~[15~" + }, + { + "name": "6", + "cmd": "6", + "shift_name": "&", + "shift_cmd": "&", + "ctrl_cmd": "~~~CTRLSEQ4~~~", + "alt_cmd": "~~~CTRLSEQ1~~~6", + "fn_name": "F6", + "fn_cmd": "~~~CTRLSEQ1~~~[17~" + }, + { + "name": "7", + "cmd": "7", + "shift_name": "/", + "shift_cmd": "/", + "alt_name": "{", + "alt_cmd": "{", + "ctrl_cmd": "~~~CTRLSEQ5~~~", + "fn_name": "F7", + "fn_cmd": "~~~CTRLSEQ1~~~[18~" + }, + { + "name": "8", + "cmd": "8", + "shift_name": "(", + "shift_cmd": "(", + "alt_name": "[", + "alt_cmd": "[", + "ctrl_cmd": "\r", + "fn_name": "F8", + "fn_cmd": "~~~CTRLSEQ1~~~[19~" + }, + { + "name": "9", + "cmd": "9", + "shift_name": ")", + "shift_cmd": ")", + "alt_name": "]", + "alt_cmd": "]", + "fn_name": "F9", + "fn_cmd": "~~~CTRLSEQ1~~~[20~" + }, + { + "name": "0", + "cmd": "0", + "shift_name": "=", + "shift_cmd": "=", + "alt_name": "}", + "alt_cmd": "}", + "fn_name": "F10", + "fn_cmd": "~~~CTRLSEQ1~~~[21~" + }, + { + "name": "+", + "cmd": "+", + "shift_name": "?", + "shift_cmd": "?", + "fn_name": "F11", + "fn_cmd": "~~~CTRLSEQ1~~~[23~" + }, + { + "name": "´", + "cmd": "´", + "shift_name": "`", + "shift_cmd": "`", + "alt_cmd": "|", + "alt_name": "|", + "fn_name": "F12", + "fn_cmd": "~~~CTRLSEQ1~~~[24~" + }, + { + "name": "BACK", + "cmd": "\b", + "shift_name": "DELETE", + "shift_cmd": "~~~CTRLSEQ1~~~[3~" + } + ], + "row_1": [ + { + "name": "TAB", + "cmd": "\t" + }, + { + "name": "Q", + "cmd": "q", + "shift_cmd": "Q", + "ctrl_cmd": "~~~CTRLSEQ6~~~", + "alt_cmd": "~~~CTRLSEQ1~~~q" + }, + { + "name": "W", + "cmd": "w", + "shift_cmd": "W", + "ctrl_cmd": "~~~CTRLSEQ7~~~", + "alt_cmd": "~~~CTRLSEQ1~~~w" + }, + { + "name": "E", + "cmd": "e", + "shift_cmd": "E", + "alt_name": "€", + "alt_cmd": "€", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~e" + }, + { + "name": "R", + "cmd": "r", + "shift_cmd": "R", + "ctrl_cmd": "~~~CTRLSEQ8~~~", + "alt_cmd": "~~~CTRLSEQ1~~~r" + }, + { + "name": "T", + "cmd": "t", + "shift_cmd": "T", + "ctrl_cmd": "~~~CTRLSEQ9~~~", + "alt_cmd": "~~~CTRLSEQ1~~~t" + }, + { + "name": "Y", + "cmd": "y", + "shift_cmd": "Y", + "ctrl_cmd": "~~~CTRLSEQ10~~~", + "alt_cmd": "~~~CTRLSEQ1~~~y" + }, + { + "name": "U", + "cmd": "u", + "shift_cmd": "U", + "ctrl_cmd": "~~~CTRLSEQ11~~~", + "alt_cmd": "~~~CTRLSEQ1~~~u" + }, + { + "name": "I", + "cmd": "i", + "shift_cmd": "I", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~i" + }, + { + "name": "O", + "cmd": "o", + "shift_cmd": "O", + "alt_cmd": "~~~CTRLSEQ1~~~o" + }, + { + "name": "P", + "cmd": "p", + "shift_cmd": "P", + "ctrl_cmd": "~~~CTRLSEQ12~~~", + "alt_cmd": "~~~CTRLSEQ1~~~p" + }, + { + "name": "Å", + "cmd": "å", + "shift_cmd": "Å", + "ctrl_cmd": "~~~CTRLSEQ1~~~" + }, + { + "name": "¨", + "cmd": "¨", + "shift_name": "^", + "shift_cmd": "^", + "alt_name": "~", + "alt_cmd": "~", + "ctrl_cmd": "~~~CTRLSEQ3~~~" + }, + { + "name": "ENTER", + "cmd": "\r" + } + ], + "row_2": [ + { + "name": "CAPS", + "cmd": "ESCAPED|-- CAPSLCK: ON", + "shift_cmd": "ESCAPED|-- CAPSLCK: OFF" + }, + { + "name": "A", + "cmd": "a", + "shift_cmd": "A", + "ctrl_cmd": "~~~CTRLSEQ13~~~", + "alt_cmd": "~~~CTRLSEQ1~~~a" + }, + { + "name": "S", + "cmd": "s", + "shift_cmd": "S", + "ctrl_cmd": "~~~CTRLSEQ14~~~", + "alt_cmd": "~~~CTRLSEQ1~~~s" + }, + { + "name": "D", + "cmd": "d", + "shift_cmd": "D", + "ctrl_cmd": "~~~CTRLSEQ15~~~", + "alt_cmd": "~~~CTRLSEQ1~~~d" + }, + { + "name": "F", + "cmd": "f", + "shift_cmd": "F", + "ctrl_cmd": "~~~CTRLSEQ16~~~", + "alt_cmd": "~~~CTRLSEQ1~~~f" + }, + { + "name": "G", + "cmd": "g", + "shift_cmd": "G", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~g" + }, + { + "name": "H", + "cmd": "h", + "shift_cmd": "H", + "alt_cmd": "~~~CTRLSEQ1~~~h" + }, + { + "name": "J", + "cmd": "j", + "shift_cmd": "J", + "alt_cmd": "~~~CTRLSEQ1~~~j" + }, + { + "name": "K", + "cmd": "k", + "shift_cmd": "K", + "alt_cmd": "~~~CTRLSEQ1~~~k" + }, + { + "name": "L", + "cmd": "l", + "shift_cmd": "L", + "alt_cmd": "~~~CTRLSEQ1~~~l" + }, + { + "name": "Ä", + "cmd": "ä", + "shift_cmd": "Ä" + }, + { + "name": "Ö", + "cmd": "ö", + "shift_cmd": "Ö" + }, + { + "name": "'", + "cmd": "'", + "shift_name": "*", + "shift_cmd": "*", + "ctrl_cmd": "~~~CTRLSEQ2~~~" + }, + { + "name": "", + "cmd": "\r" + } + ], + "row_3": [ + { + "name": "SHIFT", + "cmd": "ESCAPED|-- SHIFT: LEFT" + }, + { + "name": "<", + "cmd": "<", + "shift_name": ">", + "shift_cmd": ">", + "alt_name": "\\", + "alt_cmd": "\\", + "ctrl_cmd": "~~~CTRLSEQ2~~~" + }, + { + "name": "Z", + "cmd": "z", + "shift_cmd": "Y", + "ctrl_cmd": "~~~CTRLSEQ17~~~", + "alt_cmd": "~~~CTRLSEQ1~~~z" + }, + { + "name": "X", + "cmd": "x", + "shift_cmd": "X", + "ctrl_cmd": "~~~CTRLSEQ18~~~", + "alt_cmd": "~~~CTRLSEQ1~~~x" + }, + { + "name": "C", + "cmd": "c", + "shift_cmd": "C", + "ctrl_cmd": "~~~CTRLSEQ19~~~", + "alt_cmd": "~~~CTRLSEQ1~~~c" + }, + { + "name": "V", + "cmd": "v", + "shift_cmd": "V", + "ctrl_cmd": "~~~CTRLSEQ20~~~", + "alt_cmd": "~~~CTRLSEQ1~~~v" + }, + { + "name": "B", + "cmd": "b", + "shift_cmd": "B", + "ctrl_cmd": "~~~CTRLSEQ21~~~", + "alt_cmd": "~~~CTRLSEQ1~~~b" + }, + { + "name": "N", + "cmd": "n", + "shift_cmd": "N", + "alt_cmd": "~~~CTRLSEQ1~~~n" + }, + { + "name": "M", + "cmd": "m", + "shift_cmd": "M", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~m" + }, + { + "name": ",", + "cmd": ",", + "shift_name": ";", + "shift_cmd": ";" + }, + { + "name": ".", + "cmd": ".", + "shift_name": ":", + "shift_cmd": ":" + }, + { + "name": "-", + "cmd": "-", + "shift_name": "_", + "shift_cmd": "_" + }, + { + "name": "SHIFT", + "cmd": "ESCAPED|-- SHIFT: RIGHT" + }, + { + "name": "ESCAPED|-- ICON: ARROW_UP", + "cmd": "~~~CTRLSEQ1~~~OA" + } + ], + "row_space": [ + { + "name": "CTRL", + "cmd": "ESCAPED|-- CTRL: LEFT" + }, + { + "name": "FN", + "cmd": "ESCAPED|-- FN: ON", + "fn_cmd": "ESCAPED|-- FN: OFF" + }, + { + "name": "", + "cmd": " " + }, + { + "name": "ALT GR", + "cmd": "ESCAPED|-- ALT: RIGHT" + }, + { + "name": "CTRL", + "cmd": "ESCAPED|-- CTRL: RIGHT" + }, + { + "name": "ESCAPED|-- ICON: ARROW_LEFT", + "cmd": "~~~CTRLSEQ1~~~OD" + }, + { + "name": "ESCAPED|-- ICON: ARROW_DOWN", + "cmd": "~~~CTRLSEQ1~~~OB" + }, + { + "name": "ESCAPED|-- ICON: ARROW_RIGHT", + "cmd": "~~~CTRLSEQ1~~~OC" + } + ] +} diff --git a/src/assets/kb_layouts/tr-TR-F.json b/src/assets/kb_layouts/tr-TR-F.json new file mode 100644 index 000000000..beb4e3a31 --- /dev/null +++ b/src/assets/kb_layouts/tr-TR-F.json @@ -0,0 +1,446 @@ +{ + "row_numbers": [ + { + "name": "ESC", + "cmd": "~~~CTRLSEQ1~~~" + }, + { + "name": "+", + "cmd": "+", + "shift_name": "*", + "shift_cmd": "*" + }, + { + "name": "1", + "cmd": "1", + "shift_name": "!", + "shift_cmd": "!", + "alt_cmd": "~~~CTRLSEQ1~~~1", + "fn_name": "F1", + "fn_cmd": "~~~CTRLSEQ1~~~OP" + }, + { + "name": "2", + "cmd": "2", + "shift_name": "\"", + "shift_cmd": "\"", + "alt_cmd": "~~~CTRLSEQ1~~~2", + "fn_name": "F2", + "fn_cmd": "~~~CTRLSEQ1~~~OQ" + }, + { + "name": "3", + "cmd": "3", + "shift_name": "^", + "shift_cmd": "^", + "ctrl_cmd": "~~~CTRLSEQ1~~~", + "alt_name": "#", + "alt_cmd": "#", + "fn_name": "F3", + "fn_cmd": "~~~CTRLSEQ1~~~OR" + }, + { + "name": "4", + "cmd": "4", + "shift_name": "$", + "shift_cmd": "$", + "ctrl_cmd": "~~~CTRLSEQ2~~~", + "alt_cmd": "~~~CTRLSEQ1~~~4", + "fn_name": "F4", + "fn_cmd": "~~~CTRLSEQ1~~~OS" + }, + { + "name": "5", + "cmd": "5", + "shift_name": "%", + "shift_cmd": "%", + "ctrl_cmd": "~~~CTRLSEQ3~~~", + "alt_cmd": "~~~CTRLSEQ1~~~5", + "fn_name": "F5", + "fn_cmd": "~~~CTRLSEQ1~~~[15~" + }, + { + "name": "6", + "cmd": "6", + "shift_name": "&", + "shift_cmd": "&", + "ctrl_cmd": "~~~CTRLSEQ4~~~", + "alt_cmd": "~~~CTRLSEQ1~~~6", + "fn_name": "F6", + "fn_cmd": "~~~CTRLSEQ1~~~[17~" + }, + { + "name": "7", + "cmd": "7", + "shift_name": "'", + "shift_cmd": "'", + "alt_name": "{", + "alt_cmd": "{", + "ctrl_cmd": "~~~CTRLSEQ5~~~", + "fn_name": "F7", + "fn_cmd": "~~~CTRLSEQ1~~~[18~" + }, + { + "name": "8", + "cmd": "8", + "shift_name": "(", + "shift_cmd": "(", + "alt_name": "[", + "alt_cmd": "[", + "ctrl_cmd": "\r", + "fn_name": "F8", + "fn_cmd": "~~~CTRLSEQ1~~~[19~" + }, + { + "name": "9", + "cmd": "9", + "shift_name": ")", + "shift_cmd": ")", + "alt_name": "]", + "alt_cmd": "]", + "fn_name": "F9", + "fn_cmd": "~~~CTRLSEQ1~~~[20~" + }, + { + "name": "0", + "cmd": "0", + "shift_name": "=", + "shift_cmd": "=", + "alt_name": "}", + "alt_cmd": "}", + "fn_name": "F10", + "fn_cmd": "~~~CTRLSEQ1~~~[21~" + }, + { + "name": "/", + "cmd": "/", + "shift_name": "?", + "shift_cmd": "?", + "alt_name": "\\", + "alt_cmd": "\\", + "fn_name": "F11", + "fn_cmd": "~~~CTRLSEQ1~~~[23~" + }, + { + "name": "-", + "cmd": "-", + "shift_name": "_", + "shift_cmd": "_", + "alt_name": "|", + "alt_cmd": "|", + "fn_name": "F12", + "fn_cmd": "~~~CTRLSEQ1~~~[24~" + }, + { + "name": "BACK", + "cmd": "\b", + "shift_name": "DELETE", + "shift_cmd": "~~~CTRLSEQ1~~~[3~" + } + ], + "row_1": [ + { + "name": "TAB", + "cmd": "\t" + }, + { + "name": "F", + "cmd": "f", + "shift_cmd": "F", + "ctrl_cmd": "~~~CTRLSEQ6~~~", + "alt_name": "@", + "alt_cmd": "@" + }, + { + "name": "G", + "cmd": "g", + "shift_cmd": "G", + "ctrl_cmd": "~~~CTRLSEQ7~~~", + "alt_cmd": "~~~CTRLSEQ1~~~w" + }, + { + "name": "Ğ", + "cmd": "ğ", + "shift_cmd": "Ğ", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~e" + }, + { + "name": "I", + "cmd": "ı", + "shift_cmd": "I", + "ctrl_cmd": "~~~CTRLSEQ8~~~", + "alt_cmd": "~~~CTRLSEQ1~~~r" + }, + { + "name": "O", + "cmd": "o", + "shift_cmd": "O", + "ctrl_cmd": "~~~CTRLSEQ9~~~", + "alt_cmd": "~~~CTRLSEQ1~~~t" + }, + { + "name": "D", + "cmd": "d", + "shift_cmd": "D", + "ctrl_cmd": "~~~CTRLSEQ10~~~", + "alt_cmd": "~~~CTRLSEQ1~~~y" + }, + { + "name": "R", + "cmd": "r", + "shift_cmd": "R", + "ctrl_cmd": "~~~CTRLSEQ11~~~", + "alt_cmd": "~~~CTRLSEQ1~~~u" + }, + { + "name": "N", + "cmd": "n", + "shift_cmd": "N", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~i" + }, + { + "name": "H", + "cmd": "h", + "shift_cmd": "H", + "alt_cmd": "~~~CTRLSEQ1~~~o" + }, + { + "name": "P", + "cmd": "p", + "shift_cmd": "P", + "ctrl_cmd": "~~~CTRLSEQ12~~~", + "alt_cmd": "~~~CTRLSEQ1~~~p" + }, + { + "name": "Q", + "cmd": "q", + "shift_cmd": "Q", + "ctrl_cmd": "~~~CTRLSEQ1~~~" + }, + { + "name": "W", + "cmd": "w", + "shift_cmd": "W", + "ctrl_cmd": "~~~CTRLSEQ3~~~", + "alt_name": "~", + "alt_cmd":"~" + }, + { + "name": "ENTER", + "cmd": "\r" + } + ], + "row_2": [ + { + "name": "CAPS", + "cmd": "ESCAPED|-- CAPSLCK: ON", + "shift_cmd": "ESCAPED|-- CAPSLCK: OFF" + }, + { + "name": "U", + "cmd": "u", + "shift_cmd": "U", + "ctrl_cmd": "~~~CTRLSEQ13~~~", + "alt_cmd": "~~~CTRLSEQ1~~~a" + }, + { + "name": "İ", + "cmd": "i", + "shift_cmd": "İ", + "ctrl_cmd": "~~~CTRLSEQ14~~~", + "alt_cmd": "~~~CTRLSEQ1~~~s" + }, + { + "name": "E", + "cmd": "e", + "shift_cmd": "E", + "ctrl_cmd": "~~~CTRLSEQ15~~~", + "alt_name": "€", + "alt_cmd": "€" + }, + { + "name": "A", + "cmd": "a", + "shift_cmd": "A", + "ctrl_cmd": "~~~CTRLSEQ16~~~", + "alt_cmd": "~~~CTRLSEQ1~~~f" + }, + { + "name": "Ü", + "cmd": "ü", + "shift_cmd": "Ü", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~g" + }, + { + "name": "T", + "cmd": "t", + "shift_cmd": "T", + "alt_name": "₺", + "alt_cmd": "₺" + }, + { + "name": "K", + "cmd": "k", + "shift_cmd": "K", + "alt_cmd": "~~~CTRLSEQ1~~~j" + }, + { + "name": "M", + "cmd": "m", + "shift_cmd": "M", + "alt_cmd": "~~~CTRLSEQ1~~~k" + }, + { + "name": "L", + "cmd": "l", + "shift_cmd": "L", + "alt_cmd": "~~~CTRLSEQ1~~~l" + }, + { + "name": "Y", + "cmd": "y", + "shift_cmd": "Y" + }, + { + "name": "Ş", + "cmd": "ş", + "shift_cmd": "Ş" + }, + { + "name": "X", + "cmd": "x", + "shift_cmd": "X", + "ctrl_cmd": "~~~CTRLSEQ2~~~", + "alt_name": "`", + "alt_cmd": "`" + }, + { + "name": "", + "cmd": "\r" + } + ], + "row_3": [ + { + "name": "SHIFT", + "cmd": "ESCAPED|-- SHIFT: LEFT" + }, + { + "name": "<", + "cmd": "<", + "shift_name": ">", + "shift_cmd": ">", + "ctrl_cmd": "~~~CTRLSEQ2~~~" + }, + { + "name": "J", + "cmd": "j", + "shift_cmd": "J", + "ctrl_cmd": "~~~CTRLSEQ17~~~", + "alt_cmd": "~~~CTRLSEQ1~~~z" + }, + { + "name": "Ö", + "cmd": "ö", + "shift_cmd": "Ö", + "ctrl_cmd": "~~~CTRLSEQ18~~~", + "alt_cmd": "~~~CTRLSEQ1~~~x" + }, + { + "name": "V", + "cmd": "v", + "shift_cmd": "V", + "ctrl_cmd": "~~~CTRLSEQ19~~~", + "alt_cmd": "~~~CTRLSEQ1~~~c" + }, + { + "name": "C", + "cmd": "c", + "shift_cmd": "C", + "ctrl_cmd": "~~~CTRLSEQ20~~~", + "alt_cmd": "~~~CTRLSEQ1~~~v" + }, + { + "name": "Ç", + "cmd": "ç", + "shift_cmd": "Ç", + "ctrl_cmd": "~~~CTRLSEQ21~~~", + "alt_cmd": "~~~CTRLSEQ1~~~b" + }, + { + "name": "Z", + "cmd": "z", + "shift_cmd": "Z", + "alt_cmd": "~~~CTRLSEQ1~~~n" + }, + { + "name": "S", + "cmd": "s", + "shift_cmd": "S", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~m" + }, + { + "name": "B", + "cmd": "b", + "shift_cmd": "B" + }, + { + "name": ".", + "cmd": ".", + "shift_name": ":", + "shift_cmd": ":" + }, + { + "name": ",", + "cmd": ",", + "shift_name": ";", + "shift_cmd": ";" + }, + { + "name": "SHIFT", + "cmd": "ESCAPED|-- SHIFT: RIGHT" + }, + { + "name": "ESCAPED|-- ICON: ARROW_UP", + "cmd": "~~~CTRLSEQ1~~~OA" + } + ], + "row_space": [ + { + "name": "CTRL", + "cmd": "ESCAPED|-- CTRL: LEFT" + }, + { + "name": "FN", + "cmd": "ESCAPED|-- FN: ON", + "fn_cmd": "ESCAPED|-- FN: OFF" + }, + { + "name": "", + "cmd": " " + }, + { + "name": "ALT GR", + "cmd": "ESCAPED|-- ALT: RIGHT" + }, + { + "name": "CTRL", + "cmd": "ESCAPED|-- CTRL: RIGHT" + }, + { + "name": "ESCAPED|-- ICON: ARROW_LEFT", + "cmd": "~~~CTRLSEQ1~~~OD" + }, + { + "name": "ESCAPED|-- ICON: ARROW_DOWN", + "cmd": "~~~CTRLSEQ1~~~OB" + }, + { + "name": "ESCAPED|-- ICON: ARROW_RIGHT", + "cmd": "~~~CTRLSEQ1~~~OC" + } + ] +} diff --git a/src/assets/kb_layouts/tr-TR-Q.json b/src/assets/kb_layouts/tr-TR-Q.json new file mode 100644 index 000000000..984a113d4 --- /dev/null +++ b/src/assets/kb_layouts/tr-TR-Q.json @@ -0,0 +1,452 @@ +{ + "row_numbers": [ + { + "name": "ESC", + "cmd": "~~~CTRLSEQ1~~~" + }, + { + "name": "\"", + "cmd": "\"", + "shift_name": "é", + "shift_cmd": "é" + }, + { + "name": "1", + "cmd": "1", + "shift_name": "!", + "shift_cmd": "!", + "alt_cmd": "~~~CTRLSEQ1~~~1", + "fn_name": "F1", + "fn_cmd": "~~~CTRLSEQ1~~~OP" + }, + { + "name": "2", + "cmd": "2", + "shift_name": "'", + "shift_cmd": "'", + "alt_name": "£", + "alt_cmd": "£", + "fn_name": "F2", + "fn_cmd": "~~~CTRLSEQ1~~~OQ" + }, + { + "name": "3", + "cmd": "3", + "shift_name": "^", + "shift_cmd": "^", + "ctrl_cmd": "~~~CTRLSEQ1~~~", + "alt_name": "#", + "alt_cmd": "#", + "fn_name": "F3", + "fn_cmd": "~~~CTRLSEQ1~~~OR" + }, + { + "name": "4", + "cmd": "4", + "shift_name": "+", + "shift_cmd": "+", + "ctrl_cmd": "~~~CTRLSEQ2~~~", + "alt_name": "$", + "alt_cmd": "$", + "fn_name": "F4", + "fn_cmd": "~~~CTRLSEQ1~~~OS" + }, + { + "name": "5", + "cmd": "5", + "shift_name": "%", + "shift_cmd": "%", + "ctrl_cmd": "~~~CTRLSEQ3~~~", + "alt_name": "½", + "alt_cmd": "½", + "fn_name": "F5", + "fn_cmd": "~~~CTRLSEQ1~~~[15~" + }, + { + "name": "6", + "cmd": "6", + "shift_name": "&", + "shift_cmd": "&", + "ctrl_cmd": "~~~CTRLSEQ4~~~", + "alt_name": "§", + "alt_cmd": "§", + "fn_name": "F6", + "fn_cmd": "~~~CTRLSEQ1~~~[17~" + }, + { + "name": "7", + "cmd": "7", + "shift_name": "/", + "shift_cmd": "/", + "ctrl_cmd": "~~~CTRLSEQ5~~~", + "alt_name": "{", + "alt_cmd": "{", + "fn_name": "F7", + "fn_cmd": "~~~CTRLSEQ1~~~[18~" + }, + { + "name": "8", + "cmd": "8", + "shift_name": "(", + "shift_cmd": "(", + "ctrl_cmd": "\r", + "alt_name": "[", + "alt_cmd": "[", + "fn_name": "F8", + "fn_cmd": "~~~CTRLSEQ1~~~[19~" + }, + { + "name": "9", + "cmd": "9", + "shift_name": ")", + "shift_cmd": ")", + "alt_name": "]", + "alt_cmd": "]", + "fn_name": "F9", + "fn_cmd": "~~~CTRLSEQ1~~~[20~" + }, + { + "name": "0", + "cmd": "0", + "shift_name": "=", + "shift_cmd": "=", + "alt_name": "}", + "alt_cmd": "}", + "fn_name": "F10", + "fn_cmd": "~~~CTRLSEQ1~~~[21~" + }, + { + "name": "*", + "cmd": "*", + "shift_name": "?", + "shift_cmd": "?", + "alt_name": "\\", + "alt_cmd": "\\", + "fn_name": "F11", + "fn_cmd": "~~~CTRLSEQ1~~~[23~" + }, + { + "name": "-", + "cmd": "-", + "shift_name": "_", + "shift_cmd": "_", + "alt_name": "|", + "alt_cmd": "|", + "fn_name": "F12", + "fn_cmd": "~~~CTRLSEQ1~~~[24~" + }, + { + "name": "BACK", + "cmd": "\b", + "shift_name": "DELETE", + "shift_cmd": "~~~CTRLSEQ1~~~[3~" + } + ], + "row_1": [ + { + "name": "TAB", + "cmd": "\t" + }, + { + "name": "Q", + "cmd": "q", + "shift_cmd": "Q", + "ctrl_cmd": "~~~CTRLSEQ6~~~", + "alt_name": "@", + "alt_cmd": "@" + }, + { + "name": "W", + "cmd": "w", + "shift_cmd": "W", + "ctrl_cmd": "~~~CTRLSEQ7~~~", + "alt_cmd": "~~~CTRLSEQ1~~~w" + }, + { + "name": "E", + "cmd": "e", + "shift_cmd": "E", + "ctrl_cmd": "\r", + "alt_name": "€", + "alt_cmd": "€" + }, + { + "name": "R", + "cmd": "r", + "shift_cmd": "R", + "ctrl_cmd": "~~~CTRLSEQ8~~~", + "alt_cmd": "~~~CTRLSEQ1~~~r" + }, + { + "name": "T", + "cmd": "t", + "shift_cmd": "T", + "ctrl_cmd": "~~~CTRLSEQ9~~~", + "alt_name": "₺", + "alt_cmd": "₺" + }, + { + "name": "Y", + "cmd": "y", + "shift_cmd": "Y", + "ctrl_cmd": "~~~CTRLSEQ10~~~", + "alt_cmd": "~~~CTRLSEQ1~~~y" + }, + { + "name": "U", + "cmd": "u", + "shift_cmd": "U", + "ctrl_cmd": "~~~CTRLSEQ11~~~", + "alt_cmd": "~~~CTRLSEQ1~~~u" + }, + { + "name": "I", + "cmd": "i", + "shift_cmd": "I", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~i" + }, + { + "name": "O", + "cmd": "o", + "shift_cmd": "O", + "alt_cmd": "~~~CTRLSEQ1~~~o" + }, + { + "name": "P", + "cmd": "p", + "shift_cmd": "P", + "ctrl_cmd": "~~~CTRLSEQ12~~~", + "alt_cmd": "~~~CTRLSEQ1~~~p" + }, + { + "name": "Ğ", + "cmd": "ğ", + "shift_cmd": "Ğ", + "ctrl_cmd": "~~~CTRLSEQ1~~~" + }, + { + "name": "Ü", + "cmd": "ü", + "shift_cmd": "Ü", + "alt_name": "~", + "alt_cmd": "~", + "ctrl_cmd": "~~~CTRLSEQ3~~~" + }, + { + "name": "ENTER", + "cmd": "\r" + } + ], + "row_2": [ + { + "name": "CAPS", + "cmd": "ESCAPED|-- CAPSLCK: ON", + "shift_cmd": "ESCAPED|-- CAPSLCK: OFF" + }, + { + "name": "A", + "cmd": "a", + "shift_cmd": "A", + "ctrl_cmd": "~~~CTRLSEQ13~~~", + "alt_cmd": "~~~CTRLSEQ1~~~a" + }, + { + "name": "S", + "cmd": "s", + "shift_cmd": "S", + "ctrl_cmd": "~~~CTRLSEQ14~~~", + "alt_cmd": "~~~CTRLSEQ1~~~s" + }, + { + "name": "D", + "cmd": "d", + "shift_cmd": "D", + "ctrl_cmd": "~~~CTRLSEQ15~~~", + "alt_cmd": "~~~CTRLSEQ1~~~d" + }, + { + "name": "F", + "cmd": "f", + "shift_cmd": "F", + "ctrl_cmd": "~~~CTRLSEQ16~~~", + "alt_cmd": "~~~CTRLSEQ1~~~f" + }, + { + "name": "G", + "cmd": "g", + "shift_cmd": "G", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~g" + }, + { + "name": "H", + "cmd": "h", + "shift_cmd": "H", + "alt_cmd": "~~~CTRLSEQ1~~~h" + }, + { + "name": "J", + "cmd": "j", + "shift_cmd": "J", + "alt_cmd": "~~~CTRLSEQ1~~~j" + }, + { + "name": "K", + "cmd": "k", + "shift_cmd": "K", + "alt_cmd": "~~~CTRLSEQ1~~~k" + }, + { + "name": "L", + "cmd": "l", + "shift_cmd": "L", + "alt_cmd": "~~~CTRLSEQ1~~~l" + }, + { + "name": "Ş", + "cmd": "ş", + "shift_cmd": "Ş" + }, + { + "name": "İ", + "cmd": "i", + "shift_cmd": "İ" + }, + { + "name": ",", + "cmd": ",", + "shift_name": ";", + "shift_cmd": ";", + "alt_name": "`", + "alt_cmd": "`", + "ctrl_cmd": "~~~CTRLSEQ2~~~" + }, + { + "name": "", + "cmd": "\r" + } + ], + "row_3": [ + { + "name": "SHIFT", + "cmd": "ESCAPED|-- SHIFT: LEFT" + }, + { + "name": "<", + "cmd": "<", + "shift_name": ">", + "shift_cmd": ">", + "alt_name": "|", + "alt_cmd": "|", + "ctrl_cmd": "~~~CTRLSEQ2~~~" + }, + { + "name": "Z", + "cmd": "z", + "shift_cmd": "Z", + "ctrl_cmd": "~~~CTRLSEQ17~~~", + "alt_cmd": "~~~CTRLSEQ1~~~z" + }, + { + "name": "X", + "cmd": "x", + "shift_cmd": "X", + "ctrl_cmd": "~~~CTRLSEQ18~~~", + "alt_cmd": "~~~CTRLSEQ1~~~x" + }, + { + "name": "C", + "cmd": "c", + "shift_cmd": "C", + "ctrl_cmd": "~~~CTRLSEQ19~~~", + "alt_cmd": "~~~CTRLSEQ1~~~c" + }, + { + "name": "V", + "cmd": "v", + "shift_cmd": "V", + "ctrl_cmd": "~~~CTRLSEQ20~~~", + "alt_cmd": "~~~CTRLSEQ1~~~v" + }, + { + "name": "B", + "cmd": "b", + "shift_cmd": "B", + "ctrl_cmd": "~~~CTRLSEQ21~~~", + "alt_cmd": "~~~CTRLSEQ1~~~b" + }, + { + "name": "N", + "cmd": "n", + "shift_cmd": "N", + "alt_cmd": "~~~CTRLSEQ1~~~n" + }, + { + "name": "M", + "cmd": "m", + "shift_cmd": "M", + "ctrl_cmd": "\r", + "alt_cmd": "~~~CTRLSEQ1~~~m" + }, + { + "name": "Ö", + "cmd": "ö", + "shift_cmd": "Ö" + }, + { + "name": "Ç", + "cmd": "ç", + "shift_cmd": "Ç" + }, + { + "name": ".", + "cmd": ".", + "shift_name": ":", + "shift_cmd": ":" + }, + { + "name": "SHIFT", + "cmd": "ESCAPED|-- SHIFT: RIGHT" + }, + { + "name": "ESCAPED|-- ICON: ARROW_UP", + "cmd": "~~~CTRLSEQ1~~~OA" + } + ], + "row_space": [ + { + "name": "CTRL", + "cmd": "ESCAPED|-- CTRL: LEFT" + }, + { + "name": "FN", + "cmd": "ESCAPED|-- FN: ON", + "fn_cmd": "ESCAPED|-- FN: OFF" + }, + { + "name": "", + "cmd": " " + }, + { + "name": "ALT GR", + "cmd": "ESCAPED|-- ALT: RIGHT" + }, + { + "name": "CTRL", + "cmd": "ESCAPED|-- CTRL: RIGHT" + }, + { + "name": "ESCAPED|-- ICON: ARROW_LEFT", + "cmd": "~~~CTRLSEQ1~~~OD" + }, + { + "name": "ESCAPED|-- ICON: ARROW_DOWN", + "cmd": "~~~CTRLSEQ1~~~OB" + }, + { + "name": "ESCAPED|-- ICON: ARROW_RIGHT", + "cmd": "~~~CTRLSEQ1~~~OC" + } + ] +} diff --git a/src/assets/misc/file-icons-match.js b/src/assets/misc/file-icons-match.js new file mode 100644 index 000000000..03d342c6a --- /dev/null +++ b/src/assets/misc/file-icons-match.js @@ -0,0 +1,2416 @@ +/* + * Thanks everyone for pointing out this is probably on of the ugliest source code files on GitHub + * This is script-generated code, however, so it might disqualify + * See file-icons-generator.js at root dir of git tree +*/ +function matchIcon(filename) { + if (/^APLSource$/.test(filename)) { return "acre"; } + if (/^\.acre$/.test(filename)) { return "acre"; } + if (/^\.agda$/i.test(filename)) { return "agda"; } + if (/\/\.config\/alacritty$/i.test(filename)) { return "alacritty-alt"; } + if (/\.(app|xcodeproj|xcworkspace)$/i.test(filename)) { return "appstore"; } + if (/\.artx$/i.test(filename)) { return "arttext"; } + if (/\.art4$/i.test(filename)) { return "arttext4"; } + if (/^\.atom(-ci)?$/.test(filename)) { return "atom"; } + if (/[^\s.]\.(c?action|definition|workflow)$/i.test(filename)) { return "automator"; } + if (/^\.azure-pipelines$/i.test(filename)) { return "azurepipelines"; } + if (/^\.bzr$/.test(filename)) { return "bazaar"; } + if (/^\.bitcoin$/i.test(filename)) { return "bitcoin"; } + if (/^bloc$/i.test(filename)) { return "bloc"; } + if (/^bower[-_]components$/.test(filename)) { return "bower"; } + if (/^\.buildkite$/.test(filename)) { return "buildkite"; } + if (/^\.cabal$/i.test(filename)) { return "cabal"; } + if (/\.chef$/.test(filename)) { return "chef"; } + if (/^\.circleci$/.test(filename)) { return "circleci"; } + if (/^cnab$/i.test(filename)) { return "cnab"; } + if (/^\.cpan$/i.test(filename)) { return "cpan"; } + if (/^\.cpanplus$/i.test(filename)) { return "cpan"; } + if (/^cubits?$/i.test(filename)) { return "cubit"; } + if (/^CVS$/.test(filename)) { return "cvs"; } + if (/\.deno$/i.test(filename)) { return "deno"; } + if (/\.dependabot$/i.test(filename)) { return "dependabot"; } + if (/^\.devcontainer$/i.test(filename)) { return "devcontainer"; } + if (/^\.docker$/.test(filename)) { return "docker"; } + if (/^(Dropbox|\.dropbox\.cache)$/.test(filename)) { return "dropbox"; } + if (/^\.dub$/.test(filename)) { return "dub"; } + if (/^\.dvc$/.test(filename)) { return "dvc"; } + if (/^\.emacs\.d$/.test(filename)) { return "emacs"; } + if (/^\.expo(-shared)?$/i.test(filename)) { return "expo"; } + if (/^\.fossil-settings$/i.test(filename)) { return "fossil"; } + if (/\.git$/.test(filename)) { return "git"; } + if (/^\.github$/.test(filename)) { return "github"; } + if (/^\.gitlab$/.test(filename)) { return "gitlab"; } + if (/^\.nyc[-_]output$/.test(filename)) { return "istanbul"; } + if (/.\.(appex|bundle|ccl|component|framework|framework|ideplugin|kext|mdimporter|osax|(osirix)?plugin|qlgenerator)$/i.test(filename)) { return "dylib"; } + if (/^\.meteor$/.test(filename)) { return "meteor"; } + if (/^\.hg$/.test(filename)) { return "hg"; } + if (/^node_modules$/.test(filename)) { return "node"; } + if (/^\.node-gyp$/.test(filename)) { return "node"; } + if (/^\.(bundle|paket)$/i.test(filename)) { return "package"; } + if (/^\.svn$/i.test(filename)) { return "svn"; } + if (/\.tmBundle$/i.test(filename)) { return "textmate"; } + if (/\.ufo\d?$/i.test(filename)) { return "ufo"; } + if (/\.vagrant$/i.test(filename)) { return "vagrant"; } + if (/\.vagrant\.d$/i.test(filename)) { return "vagrant"; } + if (/^\.vim$/i.test(filename)) { return "vim"; } + if (/^\.vscode$/i.test(filename)) { return "vs"; } + if (/^\.wine$/i.test(filename)) { return "wine"; } + if (/^\.yarn$/i.test(filename)) { return "yarn"; } + if (/\.bsl$/i.test(filename)) { return "1c"; } + if (/\.sdbl$/i.test(filename)) { return "1c"; } + if (/\.os$/i.test(filename)) { return "1c"; } + if (/\.mdo$/i.test(filename)) { return "1c-alt"; } + if (/\.4dm$/i.test(filename)) { return "4d"; } + if (/\.a?\+$/i.test(filename)) { return "a-plus"; } + if (/\.abap$/i.test(filename)) { return "abap"; } + if (/\.abif$/i.test(filename)) { return "abif"; } + if (/\.ab1$/i.test(filename)) { return "abif"; } + if (/\.fsa$/i.test(filename)) { return "abif"; } + if (/^acre\.config$/i.test(filename)) { return "acre"; } + if (/\.swf$/i.test(filename)) { return "as"; } + if (/\.as$/i.test(filename)) { return "as"; } + if (/\.jsfl$/i.test(filename)) { return "as"; } + if (/\.swc$/i.test(filename)) { return "as"; } + if (/\.(ada|adb|ads)$/i.test(filename)) { return "ada"; } + if (/^(ada95|ada2005)$/i.test(filename)) { return "ada"; } + if (/\.aep$/i.test(filename)) { return "ae"; } + if (/\.aet$/i.test(filename)) { return "ae"; } + if (/\.fla$/i.test(filename)) { return "animate"; } + if (/\.ai$/i.test(filename)) { return "ai"; } + if (/\.ait$/i.test(filename)) { return "ai"; } + if (/\.indd$/i.test(filename)) { return "indesign"; } + if (/\.indl$/i.test(filename)) { return "indesign"; } + if (/\.indt$/i.test(filename)) { return "indesign"; } + if (/\.indb$/i.test(filename)) { return "indesign"; } + if (/\.idml$/i.test(filename)) { return "indesign"; } + if (/\.psd$/i.test(filename)) { return "psd"; } + if (/\.psb$/i.test(filename)) { return "psd"; } + if (/\.prproj$/i.test(filename)) { return "premiere"; } + if (/\.prel$/i.test(filename)) { return "premiere"; } + if (/\.psq$/i.test(filename)) { return "premiere"; } + if (/\.prw$/i.test(filename)) { return "totvs"; } + if (/\.ahu$/i.test(filename)) { return "totvs"; } + if (/\.aph$/i.test(filename)) { return "totvs"; } + if (/\.tlpp$/i.test(filename)) { return "totvs"; } + if (/\.affect$/i.test(filename)) { return "affectscript"; } + if (/\.afdesign$/i.test(filename)) { return "affinity"; } + if (/\.afphoto$/i.test(filename)) { return "affinity"; } + if (/\.afpub$/i.test(filename)) { return "affinity"; } + if (/\.agda$/i.test(filename)) { return "agda"; } + if (/\.lagda$/i.test(filename)) { return "agda"; } + if (/^\.?alacritty\.ya?ml$/i.test(filename)) { return "alacritty"; } + if (/\.alexrc$/i.test(filename)) { return "alex"; } + if (/\.alexignore$/i.test(filename)) { return "alex"; } + if (/\.als$/i.test(filename)) { return "alloy"; } + if (/(\.|^)APKBUILD$/.test(filename)) { return "alpine"; } + if (/\.ampl$/i.test(filename)) { return "ampl"; } + if (/\.muse$/i.test(filename)) { return "amusewiki"; } + if (/Muse$/i.test(filename)) { return "amusewiki"; } + if (/\.ana$/i.test(filename)) { return "analytica"; } + if (/\.smali$/i.test(filename)) { return "android"; } + if (/\.rsh$/i.test(filename)) { return "android"; } + if (/\.webarchivexml$/i.test(filename)) { return "android"; } + if (/\.(acs|angelscript)$/i.test(filename)) { return "angelscript"; } + if (/AngelCode$/i.test(filename)) { return "angelscript"; } + if (/^angular[^.]*\.[cm]?js$/i.test(filename)) { return "angular"; } + if (/\.anme$/i.test(filename)) { return "animestudio"; } + if (/\.anime$/i.test(filename)) { return "animestudio"; } + if (/\.animeaction$/i.test(filename)) { return "animestudio"; } + if (/\.animebrush$/i.test(filename)) { return "animestudio"; } + if (/\.animeexport$/i.test(filename)) { return "animestudio"; } + if (/\.animeproj$/i.test(filename)) { return "animestudio"; } + if (/\.animestyle$/i.test(filename)) { return "animestudio"; } + if (/(^|\.)ansible(\.ya?ml)?$/i.test(filename)) { return "ansible"; } + if (/([\\\/])roles\1[^\\\/]+\1(?:tasks|handlers|tests)\1.*\.ya?ml$/i.test(filename)) { return "ansible"; } + if (/([\\\/])roles\1[^\\\/]+\1(?:defaults|vars|meta)\1.*\.ya?ml$/i.test(filename)) { return "ansible"; } + if (/([\\\/])(?:group_vars|host_vars)\1.*\.ya?ml$/i.test(filename)) { return "ansible"; } + if (/(^|.*(\.|-|\/))vault\.ya?ml$$/i.test(filename)) { return "lock"; } + if (/\.ansiweatherrc$/i.test(filename)) { return "sun"; } + if (/^ant\.xml$|\.ant$/i.test(filename)) { return "ant"; } + if (/\.g$/i.test(filename)) { return "antlr"; } + if (/\.g4$/i.test(filename)) { return "antlr"; } + if (/^\.?antwar\.conf(ig)?\.[cm]?js$/i.test(filename)) { return "antwar"; } + if (/\.any$/i.test(filename)) { return "anyscript"; } + if (/^(apache2?|httpd)(\.[-\w]+)*\.conf$/i.test(filename)) { return "apache"; } + if (/\.apacheconf$/i.test(filename)) { return "apache"; } + if (/^httpd\.conf/i.test(filename)) { return "apache"; } + if (/apache2\/magic$/i.test(filename)) { return "apache"; } + if (/\.vhost$/i.test(filename)) { return "apache"; } + if (/\.thrift$/i.test(filename)) { return "apache"; } + if (/\.apib$/i.test(filename)) { return "api"; } + if (/^api-extractor(-base)?\.json$/i.test(filename)) { return "apiextractor"; } + if (/\.apl[acfino]?$/i.test(filename)) { return "apl"; } + if (/\.apl\.history$/i.test(filename)) { return "apl"; } + if (/^apollo\.config\.js$/i.test(filename)) { return "apollo"; } + if (/^appcelerator\.[cm]?js$/i.test(filename)) { return "appcelerator"; } + if (/\.(applescript|scpt)$/i.test(filename)) { return "apple"; } + if (/^com\.apple\./.test(filename)) { return "apple"; } + if (/^\.?appveyor\.yml$/i.test(filename)) { return "appveyor"; } + if (/\.arc$/i.test(filename)) { return "arc"; } + if (/^\.install$/.test(filename)) { return "archlinux"; } + if (/^\.SRCINFO$/.test(filename)) { return "archlinux"; } + if (/^pacman\.conf$/.test(filename)) { return "archlinux"; } + if (/^pamac\.conf$/.test(filename)) { return "archlinux"; } + if (/^PKGBUILD$/.test(filename)) { return "archlinux"; } + if (/yaourtrc$/i.test(filename)) { return "archlinux"; } + if (/\.ino$/i.test(filename)) { return "arduino"; } + if (/\.(ad|adoc|asc|asciidoc)$/i.test(filename)) { return "asciidoctor"; } + if (/\.asp$/i.test(filename)) { return "asp"; } + if (/\.asax$/i.test(filename)) { return "asp"; } + if (/\.ascx$/i.test(filename)) { return "asp"; } + if (/\.ashx$/i.test(filename)) { return "asp"; } + if (/\.asmx$/i.test(filename)) { return "asp"; } + if (/\.aspx$/i.test(filename)) { return "asp"; } + if (/\.axd$/i.test(filename)) { return "asp"; } + if (/\.aj$/i.test(filename)) { return "eclipse"; } + if (/\.a$/i.test(filename)) { return "asm"; } + if (/\.i$/i.test(filename)) { return "asm"; } + if (/\.s$/i.test(filename)) { return "asm"; } + if (/\.asm$/i.test(filename)) { return "asm"; } + if (/\.a51$/i.test(filename)) { return "asm"; } + if (/\.agc$/i.test(filename)) { return "asm-agc"; } + if (/^(Virtual\s*)?AGC$|^Apollo([-_\s]*11)?\s*Guidance\s*Computer$/i.test(filename)) { return "asm-agc"; } + if (/\.arm$/i.test(filename)) { return "asm-arm"; } + if (/\.avr$/i.test(filename)) { return "asm-avr"; } + if (/\.h8(SX?|\d{3})?$/i.test(filename)) { return "asm-hitachi"; } + if (/^(h8(SX?|\/?\d{3})?)$/i.test(filename)) { return "asm-hitachi"; } + if (/\.((x|i(a[-_]?))(32|86|64)(asm)?|i386|80386)$/i.test(filename)) { return "asm-intel"; } + if (/^(x86|x64|x86[-_]?64|i(a[-_]?)?(32|64)|i386|80386|Intel|Itanium|[ftm]asm)$/i.test(filename)) { return "asm-intel"; } + if (/\.m68k$/i.test(filename)) { return "asm-m68k"; } + if (/\.lst$/i.test(filename)) { return "asm-m68k"; } + if (/\.v(ax|masm)$/i.test(filename)) { return "asm-vax"; } + if (/^(Macro[-_\s]?32|VAX\s+Macro|vmasm)$/i.test(filename)) { return "asm-vax"; } + if (/\.z80$/i.test(filename)) { return "asm-zilog"; } + if (/\.PLX(COPY)?$/.test(filename)) { return "asm-zilog"; } + if (/\.asy$/i.test(filename)) { return "asymptote"; } + if (/\.atomproject\.[jc]son$/i.test(filename)) { return "atom"; } + if (/^\.?apmrc$/i.test(filename)) { return "atom"; } + if (/^\.?atoum(\.[^.]+)*\.php/i.test(filename)) { return "atoum"; } + if (/\.dats$/i.test(filename)) { return "ats"; } + if (/\.hats$/i.test(filename)) { return "ats"; } + if (/\.sats$/i.test(filename)) { return "ats"; } + if (/\.aup$/i.test(filename)) { return "audacity"; } + if (/\.mp3$/i.test(filename)) { return "audio"; } + if (/\.wav$/i.test(filename)) { return "audio"; } + if (/\.(aac|ac3|m4p)$/i.test(filename)) { return "audio"; } + if (/\.aif[fc]?$/i.test(filename)) { return "audio"; } + if (/\.au$/i.test(filename)) { return "audio"; } + if (/\.flac$/i.test(filename)) { return "audio"; } + if (/\.f4[ab]$/i.test(filename)) { return "audio"; } + if (/\.it$/i.test(filename)) { return "audio"; } + if (/\.m4a$/i.test(filename)) { return "audio"; } + if (/\.mka$/i.test(filename)) { return "audio"; } + if (/\.(mpc|mp\+)$/i.test(filename)) { return "audio"; } + if (/\.oga$/i.test(filename)) { return "audio"; } + if (/\.opus$/i.test(filename)) { return "audio"; } + if (/\.r[am]$/i.test(filename)) { return "audio"; } + if (/\.s3m$/i.test(filename)) { return "audio"; } + if (/\.sndh$/i.test(filename)) { return "audio"; } + if (/\.wma$/i.test(filename)) { return "audio"; } + if (/\.aug$/i.test(filename)) { return "augeas"; } + if (/^aurelia\.json$/i.test(filename)) { return "aurelia"; } + if (/\.ahk$/i.test(filename)) { return "ahk"; } + if (/\.ahkl$/i.test(filename)) { return "ahk"; } + if (/\.au3$/i.test(filename)) { return "autoit"; } + if (/^(AutoIt3|AutoItScript|au3)$/i.test(filename)) { return "autoit"; } + if (/\.av(cs|sc|dl)$/i.test(filename)) { return "avro"; } + if (/\.awk$/i.test(filename)) { return "awk"; } + if (/\.gawk$/i.test(filename)) { return "awk"; } + if (/\.mawk$/i.test(filename)) { return "awk"; } + if (/\.nawk$/i.test(filename)) { return "awk"; } + if (/\.auk$/i.test(filename)) { return "awk"; } + if (/^azure-pipelines\.ya?ml$/i.test(filename)) { return "azurepipelines"; } + if (/\.(babelrc|babelrc\.[cm]?js|languagebabel|babel)$/i.test(filename)) { return "babel"; } + if (/babel(\.[\w\-]+)*\.conf(ig)?\./i.test(filename)) { return "babel"; } + if (/\.babelignore$/i.test(filename)) { return "babel"; } + if (/^backbone([-.]min|dev)?\.[cm]?js$/i.test(filename)) { return "backbone"; } + if (/\.(bak|old|orig)$/.test(filename)) { return "backup"; } + if (/\.bal$/i.test(filename)) { return "ballerina"; } + if (/\.balx$/i.test(filename)) { return "ballerina"; } + if (/\.bzrignore$/i.test(filename)) { return "bazaar"; } + if (/\.bc$/i.test(filename)) { return "calc"; } + if (/\.dc$/i.test(filename)) { return "calc"; } + if (/^bc\.library$/i.test(filename)) { return "calc"; } + if (/^\.?dcrc$/i.test(filename)) { return "calc"; } + if (/^behat(\.[^.]+)*\.ya?ml$/i.test(filename)) { return "behat"; } + if (/\.bemjson(\.[cm]?js)?$/i.test(filename)) { return "bem"; } + if (/\.cbx$/i.test(filename)) { return "bibtex"; } + if (/\.bbl$/i.test(filename)) { return "bibtex"; } + if (/\.bbx$/i.test(filename)) { return "bibtex"; } + if (/\.bib(tex)?$/i.test(filename)) { return "bibtex"; } + if (/\.bst$/i.test(filename)) { return "bibtex"; } + if (/\.bs$/i.test(filename)) { return "bikeshed"; } + if (/\.biml$/i.test(filename)) { return "biml"; } + if (/\.([ls]?o|out)$/i.test(filename)) { return "binary"; } + if (/\.axf$/i.test(filename)) { return "binary"; } + if (/\.elf$/i.test(filename)) { return "binary"; } + if (/\.la$/i.test(filename)) { return "binary"; } + if (/\.ko$/i.test(filename)) { return "binary"; } + if (/\.((c([+px]{2}?)?-?)?objdump|bsdiff|bin|dat|pak|pdb)$/i.test(filename)) { return "binary"; } + if (/\.d-objdump$/i.test(filename)) { return "binary"; } + if (/\.(gco?|gcode|[cdhk]nc)$/i.test(filename)) { return "binary"; } + if (/\.rpy[bc]$/i.test(filename)) { return "binary"; } + if (/\.py[cdo]$/i.test(filename)) { return "binary"; } + if (/\.prx$/i.test(filename)) { return "binary"; } + if (/\.puff$/i.test(filename)) { return "binary"; } + if (/\.swp$/i.test(filename)) { return "binary"; } + if (/^\.rnd$/i.test(filename)) { return "binary"; } + if (/^binder[-_]requirements\.(in|txt)$/i.test(filename)) { return "binder"; } + if (/^\.bintray\.json$/i.test(filename)) { return "bintray"; } + if (/\.bison$/i.test(filename)) { return "bison"; } + if (/\.y$/i.test(filename)) { return "bison"; } + if (/\.yacc$/i.test(filename)) { return "bison"; } + if (/\.yy$/i.test(filename)) { return "bison"; } + if (/^bitbucket-pipelines\.ya?ml$/i.test(filename)) { return "bitbucket"; } + if (/^bitcoin\.conf$/i.test(filename)) { return "bitcoin"; } + if (/\.bithoundrc$/i.test(filename)) { return "bithound"; } + if (/\.blend$/i.test(filename)) { return "blender"; } + if (/\.blend\d+$/i.test(filename)) { return "blender"; } + if (/\.bphys$/i.test(filename)) { return "blender"; } + if (/\.bb$/i.test(filename)) { return "blitzbasic"; } + if (/\.decls$/i.test(filename)) { return "blitzbasic"; } + if (/\.bsv$/i.test(filename)) { return "bluespec"; } + if (/\.boo$/i.test(filename)) { return "boo"; } + if (/\.boot$/i.test(filename)) { return "boot"; } + if (/^Makefile\.boot$/i.test(filename)) { return "boot"; } + if (/^bors\.toml$/i.test(filename)) { return "bors"; } + if (/^(custom\.)?bootstrap\S*\.js$/i.test(filename)) { return "bootstrap"; } + if (/^(custom\.)?bootstrap\S*\.cjs$/i.test(filename)) { return "bootstrap"; } + if (/^(custom\.)?bootstrap\S*\.mjs$/i.test(filename)) { return "bootstrap"; } + if (/^(custom\.)?bootstrap\S*\.css$/i.test(filename)) { return "bootstrap"; } + if (/^(custom\.)?bootstrap\S*\.less$/i.test(filename)) { return "bootstrap"; } + if (/^(custom\.)?bootstrap\S*\.scss$/i.test(filename)) { return "bootstrap"; } + if (/^(custom\.)?bootstrap\S*\.styl$/i.test(filename)) { return "bootstrap"; } + if (/\.bootstraprc$/i.test(filename)) { return "bootstrap"; } + if (/\.bsq$/i.test(filename)) { return "bosque"; } + if (/^(\.bowerrc|bower\.json|Bowerfile)$/i.test(filename)) { return "bower"; } + if (/\.bf?$/i.test(filename)) { return "brain"; } + if (/^(bf|Brainf\**ck)$/i.test(filename)) { return "brain"; } + if (/brakeman\.yml$/i.test(filename)) { return "brakeman"; } + if (/^brakeman\.ignore$/i.test(filename)) { return "brakeman"; } + if (/\.bro$/i.test(filename)) { return "bro"; } + if (/^Brocfile\./i.test(filename)) { return "broccoli"; } + if (/\.br$/i.test(filename)) { return "brotli"; } + if (/^(browserslist|\.browserslistrc)$/i.test(filename)) { return "browserslist"; } + if (/^(bs-config|browser-sync)\.([cm]?js|json)$/i.test(filename)) { return "browsersync"; } + if (/^brunch-config\.([cm]?js|coffee|ts)$/i.test(filename)) { return "brunch"; } + if (/\.buckconfig$/i.test(filename)) { return "buck"; } + if (/^BUCK$/.test(filename)) { return "buck"; } + if (/^Gemfile(\.lock)?$/i.test(filename)) { return "bundler"; } + if (/\.gemfile$/i.test(filename)) { return "bundler"; } + if (/gemfile/i.test(filename)) { return "bundler"; } + if (/\.dm$/i.test(filename)) { return "byond"; } + if (/^(DM|Dream\s*Maker(\s*Script)?)$/i.test(filename)) { return "byond"; } + if (/\.c$/i.test(filename)) { return "c"; } + if (/\.h$/i.test(filename)) { return "c"; } + if (/\.cats$/i.test(filename)) { return "c"; } + if (/\.idc$/i.test(filename)) { return "c"; } + if (/\.w$/i.test(filename)) { return "c"; } + if (/\.nc$/i.test(filename)) { return "c"; } + if (/\.upc$/i.test(filename)) { return "c"; } + if (/\.xbm$/i.test(filename)) { return "c"; } + if (/\.xpm$/i.test(filename)) { return "c"; } + if (/(\\|\/)share(?:\1misc)?\1getopts?\d?$/.test(filename)) { return "c"; } + if (/\.c[+px]{2}$|\.cc$/i.test(filename)) { return "cpp"; } + if (/\.h[+px]{2}$/i.test(filename)) { return "cpp"; } + if (/\.[it]pp$/i.test(filename)) { return "cpp"; } + if (/\.(tcc|inl)$/i.test(filename)) { return "cpp"; } + if (/\.cs$/i.test(filename)) { return "csharp"; } + if (/^c\s*sharp$/i.test(filename)) { return "csharp"; } + if (/\.csx$/i.test(filename)) { return "csscript"; } + if (/\.cabal$/i.test(filename)) { return "cabal"; } + if (/^cabal\.(config|project)$/i.test(filename)) { return "cabal"; } + if (/^cabal-ghcjs\.project$/i.test(filename)) { return "cabal"; } + if (/^cabal\../i.test(filename)) { return "cabal"; } + if (/^Caddyfile($|[-.])/i.test(filename)) { return "caddy"; } + if (/\.caffemodel$/i.test(filename)) { return "caffe"; } + if (/\.solverstate$/i.test(filename)) { return "caffe"; } + if (/\.caffe2model$/i.test(filename)) { return "caffe2"; } + if (/^(init|predict)_net\.pb$/i.test(filename)) { return "caffe2"; } + if (/^(deploy|solver|train_val)\.prototxt$/i.test(filename)) { return "caffe2"; } + if (/\.cake$/i.test(filename)) { return "cake"; } + if (/^Cakefile$/.test(filename)) { return "cakefile"; } + if (/\.ctp$/i.test(filename)) { return "cakephp"; } + if (/\.calva-repl$/i.test(filename)) { return "calva"; } + if (/^Cartfile(\.|$)/.test(filename)) { return "carthage"; } + if (/\.casc?$/i.test(filename)) { return "casc"; } + if (/\.ceylon$/i.test(filename)) { return "ceylon"; } + if (/^chai\.([jt]sx?|es6?|coffee)$/i.test(filename)) { return "chai"; } + if (/\.chpl$/i.test(filename)) { return "chapel"; } + if (/chpl$/i.test(filename)) { return "chapel"; } + if (/^Chart(\.bundle)?(\.min)?\.[cm]?js$/i.test(filename)) { return "chartjs"; } + if (/TODO/.test(filename)) { return "checklist"; } + if (/^todo\.txt$/i.test(filename)) { return "checklist"; } + if (/\.(todo|taskpaper)$/i.test(filename)) { return "checklist"; } + if (/\.jas$/i.test(filename)) { return "cheetah3d"; } + if (/^chefignore$|^(Berks|Policy)file(\.lock)?$/i.test(filename)) { return "chef"; } + if (/^chocolatey.*\.ps1$/i.test(filename)) { return "chocolatey"; } + if (/\.ck$/i.test(filename)) { return "chuck"; } + if (/\.crx$/i.test(filename)) { return "chrome"; } + if (/^circle\.yml$/i.test(filename)) { return "circleci"; } + if (/\.brd$/i.test(filename)) { return "icon-circuit-board"; } + if (/\.sch$/i.test(filename)) { return "icon-circuit-board"; } + if (/\.pcb$/i.test(filename)) { return "icon-circuit-board"; } + if (/\.gbr$/i.test(filename)) { return "icon-circuit-board"; } + if (/\.gtl$/i.test(filename)) { return "icon-circuit-board"; } + if (/\.gbl$/i.test(filename)) { return "icon-circuit-board"; } + if (/\.gbs$/i.test(filename)) { return "icon-circuit-board"; } + if (/\.gto$/i.test(filename)) { return "icon-circuit-board"; } + if (/\.gts$/i.test(filename)) { return "icon-circuit-board"; } + if (/\.gtp$/i.test(filename)) { return "icon-circuit-board"; } + if (/\.gbo$/i.test(filename)) { return "icon-circuit-board"; } + if (/\.gbp$/i.test(filename)) { return "icon-circuit-board"; } + if (/\.drl$/i.test(filename)) { return "icon-circuit-board"; } + if (/\.dsn$/i.test(filename)) { return "icon-circuit-board"; } + if (/\.gko$/i.test(filename)) { return "icon-circuit-board"; } + if (/\.gpt$/i.test(filename)) { return "icon-circuit-board"; } + if (/\.gpb$/i.test(filename)) { return "icon-circuit-board"; } + if (/\.gm\d+$/i.test(filename)) { return "icon-circuit-board"; } + if (/\.g[0-9]+$/i.test(filename)) { return "icon-circuit-board"; } + if (/^PCB\.[0-9]+(\.backup~?)?$/.test(filename)) { return "icon-circuit-board"; } + if (/\.(cir|ckt|struct|tech)$/i.test(filename)) { return "icon-circuit-board"; } + if (/\.fab$/i.test(filename)) { return "icon-circuit-board"; } + if (/\.net$/i.test(filename)) { return "icon-circuit-board"; } + if (/\.pho$/i.test(filename)) { return "icon-circuit-board"; } + if (/\.cirru$/i.test(filename)) { return "cirru"; } + if (/\.clw$/i.test(filename)) { return "clarion"; } + if (/\.icl$/i.test(filename)) { return "clean"; } + if (/\.dcl$/i.test(filename)) { return "clean"; } + if (/\.abc$/i.test(filename)) { return "clean"; } + if (/\.click$/i.test(filename)) { return "click"; } + if (/Click!$/i.test(filename)) { return "click"; } + if (/\.clp$/i.test(filename)) { return "clips"; } + if (/\.clj$/i.test(filename)) { return "clojure"; } + if (/\.cl2$/i.test(filename)) { return "clojure"; } + if (/\.cljc$/i.test(filename)) { return "clojure"; } + if (/\.cljx$/i.test(filename)) { return "clojure"; } + if (/\.hic$/i.test(filename)) { return "clojure"; } + if (/\.cljs(cm)?$/i.test(filename)) { return "cljs"; } + if (/\.soy$/i.test(filename)) { return "closure-tpl"; } + if (/\.cfignore$/i.test(filename)) { return "cloudfoundry"; } + if (/\.cmake$/i.test(filename)) { return "cmake"; } + if (/^CMakeLists\.txt$/.test(filename)) { return "cmake"; } + if (/\.(cob|ccp|cbl|cobol|cpy)$/i.test(filename)) { return "cobol"; } + if (/\.podspec$/i.test(filename)) { return "cocoapods"; } + if (/\.codacy\.ya?ml$/i.test(filename)) { return "codacy"; } + if (/\.codeclimate\.yml$/i.test(filename)) { return "cc"; } + if (/^\.?codecov\.ya?ml$/i.test(filename)) { return "codecov"; } + if (/(^config)?\.codekit\d*$/i.test(filename)) { return "codekit"; } + if (/^codemeta\.json(ld)?$/i.test(filename)) { return "codemeta"; } + if (/^codeship-[\w.-]+\.ya?ml$/i.test(filename)) { return "codeship"; } + if (/\.coffee$/i.test(filename)) { return "coffee"; } + if (/\.cjsx$/i.test(filename)) { return "coffee"; } + if (/\.coffee\.ecr$/i.test(filename)) { return "coffee"; } + if (/\.coffee\.erb$/i.test(filename)) { return "coffee"; } + if (/\.coffee\.md$/i.test(filename)) { return "coffee"; } + if (/\.litcoffee$/i.test(filename)) { return "coffee"; } + if (/\.iced$/i.test(filename)) { return "coffee"; } + if (/\.cfc$/i.test(filename)) { return "cf"; } + if (/\.cfml?$/i.test(filename)) { return "cf"; } + if (/\.(dae|collada)$/i.test(filename)) { return "khronos"; } + if (/^commitlint\.config\.js$|^\.commitlintrc\.(json|js|ya?ml)$/i.test(filename)) { return "commitlint"; } + if (/^\.?cz\.(json|toml|ya?ml)$/i.test(filename)) { return "commitizen"; } + if (/\.cl$/i.test(filename)) { return "cl"; } + if (/^c?lisp$/i.test(filename)) { return "cl"; } + if (/^_?(compass|lemonade)\.scss$/i.test(filename)) { return "compass"; } + if (/\.cp$/i.test(filename)) { return "cp"; } + if (/\.cps$/i.test(filename)) { return "cp"; } + if (/^composer\.(json|lock)$/i.test(filename)) { return "composer"; } + if (/^composer\.phar$/i.test(filename)) { return "composer"; } + if (/\.(zip|z|xz)$/i.test(filename)) { return "zip"; } + if (/\.rar$/i.test(filename)) { return "zip"; } + if (/\.t?gz$/i.test(filename)) { return "zip"; } + if (/\.(lzo?|lzma|tlz|tar\.lzma)$/i.test(filename)) { return "zip"; } + if (/\.7z$/i.test(filename)) { return "zip"; } + if (/\.apk$/i.test(filename)) { return "zip"; } + if (/\.tar$/i.test(filename)) { return "zip"; } + if (/\.bz2$/i.test(filename)) { return "zip"; } + if (/\.maff$/i.test(filename)) { return "zip"; } + if (/\.iso$/i.test(filename)) { return "zip"; } + if (/\.hqx$/i.test(filename)) { return "zip"; } + if (/\.xpi$/i.test(filename)) { return "zip"; } + if (/\.gem$/i.test(filename)) { return "zip"; } + if (/\.whl$/i.test(filename)) { return "zip"; } + if (/\.epub$/i.test(filename)) { return "zip"; } + if (/\.jar$/i.test(filename)) { return "zip"; } + if (/\.war$/i.test(filename)) { return "zip"; } + if (/\.wgt$/i.test(filename)) { return "zip"; } + if (/\.xar$/i.test(filename)) { return "zip"; } + if (/\.dsk$/i.test(filename)) { return "zip"; } + if (/\.ear$/i.test(filename)) { return "zip"; } + if (/\.egg$/i.test(filename)) { return "zip"; } + if (/\.sit$/i.test(filename)) { return "zip"; } + if (/\.hak$/i.test(filename)) { return "zip"; } + if (/\.cdf$/i.test(filename)) { return "cdf"; } + if (/^(conanfile\.(txt|py)|conan\.conf)$/i.test(filename)) { return "conan"; } + if (/^\.?condarc$/i.test(filename)) { return "conda"; } + if (/\.(ini|desktop|directory|cfg|co?nf|prefs)$/i.test(filename)) { return "config"; } + if (/\.properties$/i.test(filename)) { return "config"; } + if (/\.ld$/i.test(filename)) { return "config"; } + if (/\.ldif$/i.test(filename)) { return "config"; } + if (/\.lds$/i.test(filename)) { return "config"; } + if (/\.mcf$/i.test(filename)) { return "config"; } + if (/\.opts$/i.test(filename)) { return "config"; } + if (/^pf\.os$/i.test(filename)) { return "config"; } + if (/\.sdl(ang)?$/i.test(filename)) { return "config"; } + if (/^mimeapps\.list$/i.test(filename)) { return "config"; } + if (/(\.|^)terminal(rc)?$/i.test(filename)) { return "config"; } + if (/^ld\.script$/i.test(filename)) { return "config"; } + if (/^(shells|rpc)$/i.test(filename)) { return "config"; } + if (/^\.?XCompose$/.test(filename)) { return "config"; } + if (/^buildozer\.spec$/i.test(filename)) { return "config"; } + if (/^settings\.bsp$/i.test(filename)) { return "config"; } + if (/config|settings|option|pref/i.test(filename)) { return "config"; } + if (/\.flc$/i.test(filename)) { return "config"; } + if (/\.kys$/i.test(filename)) { return "config"; } + if (/\/(dev[-\w]+|troff)\/([^\/]+\/)*(DESC|Foundry|download|symbolmap)(\.(in|proto|8400))?$/i.test(filename)) { return "config"; } + if (/[\/\\]fontforge[\/\\]hotkeys[\/\\][^\/\\]+/i.test(filename)) { return "config"; } + if (/\.git[\/\\](config|info[\/\\][-\w]+)$/.test(filename)) { return "config"; } + if (/(^|[\/\\])\.fossil-settings\1(?:[^\/\/]+)/.test(filename)) { return "config"; } + if (/(^|[\/\\])\.ssh[\/\\]config$/.test(filename)) { return "config"; } + if (/^\/(private\/)?etc\/([^\/]+\/)*[^\/]*\.(cf|conf|ini)(\.default)?$/i.test(filename)) { return "config"; } + if (/^\/(private\/)?etc\/(aliases|auto_(home|master)|ftpusers|group|gettytab|hosts(\.equiv)?|manpaths|networks|paths|protocols|services|shells|sudoers|ttys)$/i.test(filename)) { return "config"; } + if (/^coffeelint\.json$/i.test(filename)) { return "config-coffee"; } + if (/\.coffeelintignore$/i.test(filename)) { return "config-coffee"; } + if (/^go\.mod$/i.test(filename)) { return "config-go"; } + if (/^go\.sum$/i.test(filename)) { return "config-go"; } + if (/^haskellconfig\.json$/i.test(filename)) { return "config-hs"; } + if (/\.js(beautify|cs|hint)rc$|^(jsconfig(\..+)?|\.?eshost(-config)?)\.json$/i.test(filename)) { return "config-js"; } + if (/^perl[56]?-?config\.json$/i.test(filename)) { return "config-perl"; } + if (/^python-?config\.json$/i.test(filename)) { return "config-python"; } + if (/^pyproject\.toml$/i.test(filename)) { return "config-python"; } + if (/^poetry\.lock$/i.test(filename)) { return "config-python"; } + if (/^\.coveragerc$/i.test(filename)) { return "config-python"; } + if (/^MANIFEST\.in$/i.test(filename)) { return "config-python"; } + if (/\.python-version$/i.test(filename)) { return "config-python"; } + if (/^jsxconfig\.json$/i.test(filename)) { return "config-react"; } + if (/^rubyconfig\.json$|\.(autotest|cross_rubies|gemtest|hoerc|kick|simplecov|yardopts)$/i.test(filename)) { return "config-ruby"; } + if (/^\.yardopts/i.test(filename)) { return "config-ruby"; } + if (/^rustconfig\.json$/i.test(filename)) { return "config-rust"; } + if (/^rust-toolchain$/i.test(filename)) { return "config-rust"; } + if (/^tsconfig(\..+)?\.json$/i.test(filename)) { return "config-ts"; } + if (/^tslint\.json$/i.test(filename)) { return "config-ts"; } + if (/\.conll$/i.test(filename)) { return "conll"; } + if (/\.conllu$/i.test(filename)) { return "conll"; } + if (/\.coq$/i.test(filename)) { return "coq"; } + if (/^cordova([^.]*\.|-(\d\.)+)[cm]?js$/i.test(filename)) { return "cordova"; } + if (/\.(cmx|ccx)$/i.test(filename)) { return "corel"; } + if (/\.(cdrx?|cdt)$/i.test(filename)) { return "coreldraw"; } + if (/^\.coveralls\.ya?ml$/i.test(filename)) { return "coveralls"; } + if (/^cpanfile$/i.test(filename)) { return "cpan"; } + if (/^META\.yml$/.test(filename)) { return "cpan"; } + if (/^META\.json$/.test(filename)) { return "cpan"; } + if (/^MANIFEST\.SKIP$/.test(filename)) { return "cpan"; } + if (/\.cpc$/i.test(filename)) { return "cpcdosc"; } + if (/\.creole$/i.test(filename)) { return "creole"; } + if (/^crowdin\.ya?ml$/i.test(filename)) { return "crowdin"; } + if (/\.e?cr$/i.test(filename)) { return "crystal"; } + if (/\.orc$/i.test(filename)) { return "csound"; } + if (/\.udo$/i.test(filename)) { return "csound"; } + if (/\.csd$/i.test(filename)) { return "csound"; } + if (/\.sco$/i.test(filename)) { return "csound"; } + if (/\.css$/i.test(filename)) { return "css3"; } + if (/\.less$/i.test(filename)) { return "css3"; } + if (/\.tss$/i.test(filename)) { return "css3"; } + if (/\.feature$/i.test(filename)) { return "cucumber"; } + if (/gherkin$/i.test(filename)) { return "cucumber"; } + if (/\.cu$/i.test(filename)) { return "nvidia"; } + if (/\.cuh$/i.test(filename)) { return "nvidia"; } + if (/\.cfl$/i.test(filename)) { return "cuneiform"; } + if (/(^|\.)curlrc$|^_curlrc$/i.test(filename)) { return "curl"; } + if (/\.curry$/i.test(filename)) { return "curry"; } + if (/\.cvsignore$/i.test(filename)) { return "cvs"; } + if (/\.cwl$/i.test(filename)) { return "cwl"; } + if (/Common Workflow Language$/i.test(filename)) { return "cwl"; } + if (/\.pyx$/i.test(filename)) { return "cython"; } + if (/\.pxd$/i.test(filename)) { return "cython"; } + if (/\.pxi$/i.test(filename)) { return "cython"; } + if (/\.di?$/i.test(filename)) { return "dlang"; } + if (/^d3(\.v\d+)?[^.]*\.[cm]?js$/i.test(filename)) { return "d3"; } + if (/\.(dfy|dafny)$/i.test(filename)) { return "dafny"; } + if (/\.dnh$/i.test(filename)) { return "yang"; } + if (/\.d(arcs)?patch$/i.test(filename)) { return "darcs"; } + if (/^\.boringignore$/i.test(filename)) { return "darcs"; } + if (/\.dart$/i.test(filename)) { return "dart"; } + if (/\.s[kl]im$/i.test(filename)) { return "dashboard"; } + if (/\.cpuprofile$/i.test(filename)) { return "dashboard"; } + if (/\.cloc$/i.test(filename)) { return "dashboard"; } + if (/\.aff$/i.test(filename)) { return "database"; } + if (/\.cson$/i.test(filename)) { return "database"; } + if (/\.dict?$/i.test(filename)) { return "database"; } + if (/\.hson$/i.test(filename)) { return "database"; } + if (/\.http$/i.test(filename)) { return "database"; } + if (/\.ndjson$/i.test(filename)) { return "database"; } + if (/\.fea$/i.test(filename)) { return "database"; } + if (/\.json\.eex$/i.test(filename)) { return "database"; } + if (/\.cbor$/i.test(filename)) { return "database"; } + if (/\.(proto|protote?xt|pbte?xt)$/i.test(filename)) { return "database"; } + if (/\.pytb$/i.test(filename)) { return "database"; } + if (/\.pydeps$/i.test(filename)) { return "database"; } + if (/\.pot?$/i.test(filename)) { return "database"; } + if (/\.ejson$/i.test(filename)) { return "database"; } + if (/\.edn$/i.test(filename)) { return "database"; } + if (/\.eam\.fs$/i.test(filename)) { return "database"; } + if (/\.son$/i.test(filename)) { return "database"; } + if (/\.ston$/i.test(filename)) { return "database"; } + if (/\.ttl$/i.test(filename)) { return "database"; } + if (/\.schema$/i.test(filename)) { return "database"; } + if (/\.sy$/i.test(filename)) { return "database"; } + if (/\.syntax$/i.test(filename)) { return "database"; } + if (/\.webmanifest$/i.test(filename)) { return "database"; } + if (/\.tgn$/i.test(filename)) { return "database"; } + if (/\.2da$/i.test(filename)) { return "database"; } + if (/\.(od|onlydata)$/i.test(filename)) { return "database"; } + if (/\.dbi$/i.test(filename)) { return "database"; } + if (/\.snip(pets?)?$/i.test(filename)) { return "database"; } + if (/\.yas(nippet)?$/i.test(filename)) { return "database"; } + if (/(^|\.)fonts\.(dir|scale|alias)$/i.test(filename)) { return "database"; } + if (/(^|\.)encodings\.dir$/i.test(filename)) { return "database"; } + if (/^pkginfo$/i.test(filename)) { return "database"; } + if (/^term(cap|info)/i.test(filename)) { return "database"; } + if (/^eign$/.test(filename)) { return "database"; } + if (/^(birthtoken|flowers)$/.test(filename)) { return "database"; } + if (/(\\|\/)share(?:\1misc)?\1(?:ascii|trace\.codes)$/.test(filename)) { return "database"; } + if (/^(mime\.types|fstab)$/i.test(filename)) { return "database"; } + if (/^METADATA\.pb$/.test(filename)) { return "database"; } + if (/\.(ldj|ldjson|jsonl)$/.test(filename)) { return "database"; } + if (/\.(irb-history|lesshst)$/i.test(filename)) { return "database"; } + if (/^(magic\.mgc|figmagic)$/i.test(filename)) { return "database"; } + if (/[\/\\](?:magic[\/\\]Magdir|file[\/\\]magic)[\/\\][-.\w]+$/i.test(filename)) { return "database"; } + if (/(\\|\/)dev[-\w]+\1(?:[^\\\/]+\1)*(?!DESC|NOTES)(?:[A-Z][-A-Z]*)(?:\.in)?$/.test(filename)) { return "database"; } + if (/term\/O?tab\.[^\/]+$|\/dev[-\w]+\/(APL\.bug|[A-Z][-A-Za-z0-9]*)(\.fd)?$/i.test(filename)) { return "database"; } + if (/(^|\/)n?term\/O?tab\.(X|lpr)$/i.test(filename)) { return "database"; } + if (/\.ssh[\/\\](authorized_keys|known_hosts)$/.test(filename)) { return "database"; } + if (/^\.icondb\.js$/.test(filename)) { return "database"; } + if (/^index\.(bt|db|dir|pag)$/i.test(filename)) { return "database"; } + if (/^whatis$/i.test(filename)) { return "database"; } + if (/^(language-subtag-registry(\.txt)?|nametable)$/.test(filename)) { return "database"; } + if (/\.git[\/\\](.*[\/\\])?(HEAD|ORIG_HEAD|packed-refs|logs[\/\\](.+[\/\\])?[^\/\\]+)$/.test(filename)) { return "database"; } + if (/\.dwl$/i.test(filename)) { return "dataweave"; } + if (/\.dbf$/i.test(filename)) { return "dbase"; } + if (/\.deb$/i.test(filename)) { return "debian"; } + if (/(^|\.)(control|dsc)$/.test(filename)) { return "debian"; } + if (/^rules$/.test(filename)) { return "debian"; } + if (/\.dfm$/i.test(filename)) { return "delphi"; } + if (/\.dof$/i.test(filename)) { return "delphi"; } + if (/\.dpr$/i.test(filename)) { return "delphi"; } + if (/\.dmark$/i.test(filename)) { return "icon-star"; } + if (/^d[_\W]?mark$/i.test(filename)) { return "icon-star"; } + if (/^dependabot\.ya?ml$/i.test(filename)) { return "dependabot"; } + if (/^devcontainer\.json$/i.test(filename)) { return "devcontainer"; } + if (/\.dts$/i.test(filename)) { return "devicetree"; } + if (/\.dtsi$/i.test(filename)) { return "devicetree"; } + if (/\.dhall$/i.test(filename)) { return "dhall"; } + if (/\.dia$/i.test(filename)) { return "dia"; } + if (/\.diff$/i.test(filename)) { return "diff"; } + if (/\.diffs$/i.test(filename)) { return "diff"; } + if (/\.dig$/i.test(filename)) { return "digdag"; } + if (/\.dit(roff)?$/i.test(filename)) { return "binary"; } + if (/\.zone$/i.test(filename)) { return "earth"; } + if (/\.arpa$/i.test(filename)) { return "earth"; } + if (/^CNAME$/.test(filename)) { return "earth"; } + if (/\.(dbk|docbook)$/i.test(filename)) { return "docbook"; } + if (/^(Dockerfile|docker-compose)|\.docker(file|ignore)$/i.test(filename)) { return "docker"; } + if (/^docker-sync\.yml$/i.test(filename)) { return "docker"; } + if (/\.doclets\.ya?ml$/i.test(filename)) { return "doclets"; } + if (/\.eco$/i.test(filename)) { return "docpad"; } + if (/(^|\.)docz(rc)?(\.config)?\.[cm]?js$/i.test(filename)) { return "docz"; } + if (/(^|\.)docz(rc)?(\.config)?\.json$/i.test(filename)) { return "docz"; } + if (/\.djs$/i.test(filename)) { return "doge"; } + if (/^dojo\.[cm]?js$/i.test(filename)) { return "dojo"; } + if (/^dosbox(\b|_).*(\.conf|pref\w*)$/i.test(filename)) { return "dosbox"; } + if (/^\.env(\.|$)/i.test(filename)) { return "dotenv"; } + if (/\.dot$/i.test(filename)) { return "dotjs"; } + if (/\.crdownload$/i.test(filename)) { return "download"; } + if (/^\.?Doxyfile$/i.test(filename)) { return "doxygen"; } + if (/^dragula(\.min)?\.([cm]?js|css)$/i.test(filename)) { return "dragula"; } + if (/^\.drawio($|\.)|\.d(raw)?io(\.png|\.svg)?$/i.test(filename)) { return "drawio"; } + if (/\.drone\.ya?ml$/i.test(filename)) { return "drone"; } + if (/^dub(\.selections)?\.(json|sdl)$/i.test(filename)) { return "dub"; } + if (/\.dyalog$/i.test(filename)) { return "dyalog"; } + if (/\.dyapp$/i.test(filename)) { return "dyalog"; } + if (/\.mipage$/i.test(filename)) { return "dyalog"; } + if (/\.(dylib|bundle)$/i.test(filename)) { return "dylib"; } + if (/\.E$/.test(filename)) { return "e"; } + if (/\.eup$/i.test(filename)) { return "eagle"; } + if (/\.eb$/i.test(filename)) { return "easybuild"; } + if (/\.ec$/i.test(filename)) { return "ec"; } + if (/\.eh$/i.test(filename)) { return "ec"; } + if (/\.epj$/i.test(filename)) { return "ecere"; } + if (/\.c?project$/.test(filename)) { return "eclipse"; } + if (/\.classpath$/i.test(filename)) { return "eclipse"; } + if (/\.ecl(\.txt)?$/i.test(filename)) { return "eclipse-lang"; } + if (/\.editorconfig$/i.test(filename)) { return "editorconfig"; } + if (/\.ecrc$/i.test(filename)) { return "editorconfig"; } + if (/\.edge$/i.test(filename)) { return "edge"; } + if (/\.e$/.test(filename)) { return "eiffel"; } + if (/\.ejs$/i.test(filename)) { return "ejs"; } + if (/\.compilerc(\.json)?$/i.test(filename)) { return "electron"; } + if (/(^|\.)forge\.config\.js$/i.test(filename)) { return "electron"; } + if (/\.ex$/i.test(filename)) { return "elixir"; } + if (/\.(exs|l?eex)$/i.test(filename)) { return "elixir"; } + if (/^mix\.(exs?|lock)$/i.test(filename)) { return "elixir"; } + if (/\.elm$/i.test(filename)) { return "elm"; } + if (/(^|\.)(el|_?emacs|emacs\.desktop|abbrev[-_]defs)$/i.test(filename)) { return "emacs"; } + if (/(^|\.)(elc|eld)$/i.test(filename)) { return "emacs"; } + if (/\.gnus$/i.test(filename)) { return "emacs"; } + if (/\.viper$/i.test(filename)) { return "emacs"; } + if (/^Cask$/.test(filename)) { return "emacs"; } + if (/^Project\.ede$/i.test(filename)) { return "emacs"; } + if (/^(authors|(code)?owners)$/i.test(filename)) { return "at"; } + if (/^(EML|mbox|e?-?mail)$/i.test(filename)) { return "at"; } + if (/^ember(\.|(-[^.]+)?-(\d+\.)+(debug\.)?)[cm]?js$/i.test(filename)) { return "ember"; } + if (/\.emberscript$/i.test(filename)) { return "em"; } + if (/\.em(blem)?$/i.test(filename)) { return "mustache"; } + if (/\.ensime$/i.test(filename)) { return "ensime"; } + if (/\.eq$/i.test(filename)) { return "eq"; } + if (/\.erl$/i.test(filename)) { return "erlang"; } + if (/\.beam$/i.test(filename)) { return "erlang"; } + if (/\.hrl$/i.test(filename)) { return "erlang"; } + if (/\.xrl$/i.test(filename)) { return "erlang"; } + if (/\.yrl$/i.test(filename)) { return "erlang"; } + if (/\.app\.src$/i.test(filename)) { return "erlang"; } + if (/^Emakefile$/.test(filename)) { return "erlang"; } + if (/^rebar(\.config)?\.lock$/i.test(filename)) { return "erlang"; } + if (/^\.?esdoc\.([cm]?js|json)$/i.test(filename)) { return "esdoc"; } + if (/\.eslint(cache|ignore)$/i.test(filename)) { return "eslint"; } + if (/\.eslintrc($|\.)/i.test(filename)) { return "eslint"; } + if (/\bExtjs(-ext)?\.[cm]?js$/i.test(filename)) { return "extjs"; } + if (/^fabric\.mod\.json$/i.test(filename)) { return "fabric"; } + if (/^fabfile\.py$/i.test(filename)) { return "fabfile"; } + if (/\.factor$/i.test(filename)) { return "factor"; } + if (/\.factor-rc$/i.test(filename)) { return "factor"; } + if (/\.factor-boot-rc$/i.test(filename)) { return "factor"; } + if (/\.fal(con)?$/i.test(filename)) { return "falcon"; } + if (/\.fy$/i.test(filename)) { return "fancy"; } + if (/\.fancypack$/i.test(filename)) { return "fancy"; } + if (/^Fakefile$/.test(filename)) { return "fancy"; } + if (/\.fan$/i.test(filename)) { return "fantom"; } + if (/\.(fasta|fas?|seq|fsa)$/i.test(filename)) { return "dna"; } + if (/\.(fastq|fq)$/i.test(filename)) { return "dna"; } + if (/\.(faa|mpfa)$/i.test(filename)) { return "dna"; } + if (/\.fna$/i.test(filename)) { return "dna"; } + if (/\.ffn$/i.test(filename)) { return "dna"; } + if (/\.frn$/i.test(filename)) { return "dna"; } + if (/\.sam$/i.test(filename)) { return "dna"; } + if (/\.fql$/i.test(filename)) { return "fauna"; } + if (/\.faunarc$/i.test(filename)) { return "fauna"; } + if (/\.dsp$/i.test(filename)) { return "faust"; } + if (/\.fbx$/i.test(filename)) { return "fbx"; } + if (/\.fxl$/i.test(filename)) { return "fexl"; } + if (/\.figma$/i.test(filename)) { return "figma"; } + if (/\.fdx$/i.test(filename)) { return "finaldraft"; } + if (/^Icon\r$/.test(filename)) { return "finder"; } + if (/\.rsrc$/i.test(filename)) { return "finder"; } + if (/^\._./.test(filename)) { return "finder"; } + if (/\.DS_Store$/i.test(filename)) { return "finder"; } + if (/^firebase\.json$/i.test(filename)) { return "firebase"; } + if (/^firestore\.indexes\.json$/i.test(filename)) { return "firebase"; } + if (/^firestore\.rules?$/i.test(filename)) { return "firebase"; } + if (/\.firebaserc$/i.test(filename)) { return "firebase"; } + if (/\.bolt$/i.test(filename)) { return "firebase-bolt"; } + if (/\.webapp$/i.test(filename)) { return "firefox"; } + if (/^flask([-_.].*)\.py$/i.test(filename)) { return "flask"; } + if (/\.flooignore$/i.test(filename)) { return "floobits"; } + if (/\.(flowconfig|js\.flow|flow)$/i.test(filename)) { return "flow"; } + if (/\.fx$/i.test(filename)) { return "flux"; } + if (/\.flux$/i.test(filename)) { return "flux"; } + if (/\.flutter-plugins$/i.test(filename)) { return "flutter"; } + if (/\.woff2$/i.test(filename)) { return "font"; } + if (/\.woff$/i.test(filename)) { return "font"; } + if (/\.eot$/i.test(filename)) { return "font"; } + if (/\.ttc$/i.test(filename)) { return "font"; } + if (/\.ttf$/i.test(filename)) { return "font"; } + if (/\.otf$/i.test(filename)) { return "font"; } + if (/\.pfb$/i.test(filename)) { return "font"; } + if (/\.pfm$/i.test(filename)) { return "font"; } + if (/\.tfm$/i.test(filename)) { return "font"; } + if (/\.dfont$/i.test(filename)) { return "font"; } + if (/\.psfu?$/i.test(filename)) { return "font-bitmap"; } + if (/\.pcf$/i.test(filename)) { return "font-bitmap"; } + if (/\.psftx$/i.test(filename)) { return "font-bitmap"; } + if (/\.bdf$/i.test(filename)) { return "font-bitmap"; } + if (/\.fnt$/i.test(filename)) { return "font-bitmap"; } + if (/\.fon$/i.test(filename)) { return "font-bitmap"; } + if (/\.snf$/i.test(filename)) { return "font-bitmap"; } + if (/\.flf$/i.test(filename)) { return "font-bitmap"; } + if (/\.tlf$/i.test(filename)) { return "font-bitmap"; } + if (/\.(ff|pe)$/i.test(filename)) { return "ff"; } + if (/\.sfd$/i.test(filename)) { return "ff"; } + if (/^\.issuetracker$/i.test(filename)) { return "fork"; } + if (/\.trm$/i.test(filename)) { return "ftr"; } + if (/\.f$/i.test(filename)) { return "fortran"; } + if (/\.f90$/i.test(filename)) { return "fortran"; } + if (/\.f03$/i.test(filename)) { return "fortran"; } + if (/\.f08$/i.test(filename)) { return "fortran"; } + if (/\.f77$/i.test(filename)) { return "fortran"; } + if (/\.f95$/i.test(filename)) { return "fortran"; } + if (/\.for$/i.test(filename)) { return "fortran"; } + if (/\.fpp$/i.test(filename)) { return "fortran"; } + if (/\.pfo$/i.test(filename)) { return "fortran"; } + if (/\.fossa\.ya?ml$/i.test(filename)) { return "fossa"; } + if (/\.fossaignore$/i.test(filename)) { return "fossa"; } + if (/\.fountain$/i.test(filename)) { return "fountain"; } + if (/\.fi?dl$/i.test(filename)) { return "franca"; } + if (/\.fdepl$/i.test(filename)) { return "franca"; } + if (/\.ftl$/i.test(filename)) { return "freemarker"; } + if (/ftl$/i.test(filename)) { return "freemarker"; } + if (/\.fr$/i.test(filename)) { return "frege"; } + if (/\.fs[xi]?$/i.test(filename)) { return "fsharp"; } + if (/f#$/i.test(filename)) { return "fsharp"; } + if (/\.fthtml$/i.test(filename)) { return "fthtml"; } + if (/^fuelux(\.min)?\.(css|[cm]?js)$/i.test(filename)) { return "fuelux"; } + if (/^fuse\.[cm]?js$/.test(filename)) { return "fusebox"; } + if (/\.fut$/i.test(filename)) { return "futhark"; } + if (/^galaxy\.ini$/i.test(filename)) { return "galaxy"; } + if (/\.gspec$/i.test(filename)) { return "galen"; } + if (/\.gtest$/i.test(filename)) { return "galen"; } + if (/\.gml$/i.test(filename)) { return "gml"; } + if (/\.gms$/i.test(filename)) { return "gams"; } + if (/\.gap$/i.test(filename)) { return "gap"; } + if (/\.gi$/i.test(filename)) { return "gap"; } + if (/\.tst$/i.test(filename)) { return "gap"; } + if (/^gatsby-.+\.[jt]s$/i.test(filename)) { return "gatsby"; } + if (/\.gss$/i.test(filename)) { return "gauss"; } + if (/\.gdb$/i.test(filename)) { return "gdb"; } + if (/gdbinit$/i.test(filename)) { return "gdb"; } + if (/^\.htaccess$/i.test(filename)) { return "gear"; } + if (/^\.htpasswd$/i.test(filename)) { return "gear"; } + if (/^\.lesshintrc$/i.test(filename)) { return "gear"; } + if (/^\.csscomb\.json$/i.test(filename)) { return "gear"; } + if (/^text\.enc$/.test(filename)) { return "gear"; } + if (/\.csslintrc$/i.test(filename)) { return "gear"; } + if (/\.htmlhintrc$/i.test(filename)) { return "gear"; } + if (/\.module$/i.test(filename)) { return "gear"; } + if (/\.codoopts$/i.test(filename)) { return "gear"; } + if (/\.arcconfig$/i.test(filename)) { return "gear"; } + if (/\.pairs$/i.test(filename)) { return "gear"; } + if (/\.lintstagedrc$/i.test(filename)) { return "gear"; } + if (/\.indent\.pro$/i.test(filename)) { return "gear"; } + if (/^\./.test(filename)) { return "gear"; } + if (/\.dll$/i.test(filename)) { return "gears"; } + if (/\.xml$/i.test(filename)) { return "code"; } + if (/\.xmp$/i.test(filename)) { return "code"; } + if (/\.rdf$/i.test(filename)) { return "code"; } + if (/\.config$/i.test(filename)) { return "code"; } + if (/^_service$/.test(filename)) { return "code"; } + if (/^configure\.ac$/.test(filename)) { return "code"; } + if (/^Settings\.StyleCop$/.test(filename)) { return "code"; } + if (/\.4th$/i.test(filename)) { return "code"; } + if (/\.adm[lx]$/i.test(filename)) { return "code"; } + if (/\.[ad]sl$/i.test(filename)) { return "code"; } + if (/\.aepx$/i.test(filename)) { return "code"; } + if (/\.appxmanifest$/i.test(filename)) { return "code"; } + if (/\.ash$/i.test(filename)) { return "code"; } + if (/\.asn1?$/i.test(filename)) { return "code"; } + if (/\.axml$/i.test(filename)) { return "code"; } + if (/\.bc$/i.test(filename)) { return "code"; } + if (/\.befunge$/i.test(filename)) { return "code"; } + if (/\.bmx$/i.test(filename)) { return "code"; } + if (/\.brs$/i.test(filename)) { return "code"; } + if (/\.capnp$/i.test(filename)) { return "code"; } + if (/\.ccxml$/i.test(filename)) { return "code"; } + if (/\.cscfg$/i.test(filename)) { return "code"; } + if (/\.cgi$/i.test(filename)) { return "code"; } + if (/\.ch$/i.test(filename)) { return "code"; } + if (/\.clixml$/i.test(filename)) { return "code"; } + if (/\.cocci$/i.test(filename)) { return "code"; } + if (/\.ct$/i.test(filename)) { return "code"; } + if (/\.cw$/i.test(filename)) { return "code"; } + if (/\.cy$/i.test(filename)) { return "code"; } + if (/\.rdg$/i.test(filename)) { return "code"; } + if (/\.dita$/i.test(filename)) { return "code"; } + if (/\.ditamap$/i.test(filename)) { return "code"; } + if (/\.ditaval$/i.test(filename)) { return "code"; } + if (/\.dotsettings$/i.test(filename)) { return "code"; } + if (/\.dtd$/i.test(filename)) { return "code"; } + if (/\.dyl$/i.test(filename)) { return "code"; } + if (/\.dylan$/i.test(filename)) { return "code"; } + if (/\.eclxml$/i.test(filename)) { return "code"; } + if (/\.ed$/i.test(filename)) { return "code"; } + if (/\.fcgi$/i.test(filename)) { return "code"; } + if (/\.fidl$/i.test(filename)) { return "code"; } + if (/\.filters$/i.test(filename)) { return "code"; } + if (/\.fo$/i.test(filename)) { return "code"; } + if (/\.forth$/i.test(filename)) { return "code"; } + if (/\.frt$/i.test(filename)) { return "code"; } + if (/\.fsproj$/i.test(filename)) { return "code"; } + if (/\.fth$/i.test(filename)) { return "code"; } + if (/\.fun$/i.test(filename)) { return "code"; } + if (/\.fxml$/i.test(filename)) { return "code"; } + if (/\.grace$/i.test(filename)) { return "code"; } + if (/\.grxml$/i.test(filename)) { return "code"; } + if (/\.iml$/i.test(filename)) { return "code"; } + if (/\.intr$/i.test(filename)) { return "code"; } + if (/\.ivy$/i.test(filename)) { return "code"; } + if (/\.jelly$/i.test(filename)) { return "code"; } + if (/\.jf?lex$/i.test(filename)) { return "code"; } + if (/\.joy$/i.test(filename)) { return "code"; } + if (/\.jsproj$/i.test(filename)) { return "code"; } + if (/\.jspx$/i.test(filename)) { return "code"; } + if (/\.launch$/i.test(filename)) { return "code"; } + if (/\.lid$/i.test(filename)) { return "code"; } + if (/\.lp$/i.test(filename)) { return "code"; } + if (/\.m4$/i.test(filename)) { return "code"; } + if (/\.manifest$/i.test(filename)) { return "code"; } + if (/\.mask$/i.test(filename)) { return "code"; } + if (/\.mdpolicy$/i.test(filename)) { return "code"; } + if (/\.menu$/i.test(filename)) { return "code"; } + if (/\.ML$/.test(filename)) { return "code"; } + if (/\.mq[45h]$/i.test(filename)) { return "code"; } + if (/\.mtml$/i.test(filename)) { return "code"; } + if (/\.muf$/i.test(filename)) { return "code"; } + if (/\.mumps$/i.test(filename)) { return "code"; } + if (/\.mxml$/i.test(filename)) { return "code"; } + if (/\.myt$/i.test(filename)) { return "code"; } + if (/\.natvis$/i.test(filename)) { return "code"; } + if (/\.odd$/i.test(filename)) { return "code"; } + if (/\.ohm$/i.test(filename)) { return "code"; } + if (/\.omgrofl$/i.test(filename)) { return "code"; } + if (/\.osm$/i.test(filename)) { return "code"; } + if (/\.pig$/i.test(filename)) { return "code"; } + if (/\.plist$/i.test(filename)) { return "code"; } + if (/\.prg$/i.test(filename)) { return "code"; } + if (/\.proj$/i.test(filename)) { return "code"; } + if (/\.props$/i.test(filename)) { return "code"; } + if (/\.psc1$/i.test(filename)) { return "code"; } + if (/\.pt$/i.test(filename)) { return "code"; } + if (/\.qhelp$/i.test(filename)) { return "code"; } + if (/\.resx$/i.test(filename)) { return "code"; } + if (/\.rl$/i.test(filename)) { return "code"; } + if (/\.scxml$/i.test(filename)) { return "code"; } + if (/\.sed$/i.test(filename)) { return "code"; } + if (/\.sgml?$/i.test(filename)) { return "code"; } + if (/\.sig$/i.test(filename)) { return "code"; } + if (/\.sk$/i.test(filename)) { return "code"; } + if (/\.sk[12]$/i.test(filename)) { return "code"; } + if (/\.sml$/i.test(filename)) { return "code"; } + if (/\.smt$/i.test(filename)) { return "code"; } + if (/\.smt2$/i.test(filename)) { return "code"; } + if (/\.spthy$/i.test(filename)) { return "code"; } + if (/\.srdf$/i.test(filename)) { return "code"; } + if (/\.ssmssln$/i.test(filename)) { return "code"; } + if (/\.st$/i.test(filename)) { return "code"; } + if (/\.stellaris$/i.test(filename)) { return "code"; } + if (/\.storyboard$/i.test(filename)) { return "code"; } + if (/\.tagx$/i.test(filename)) { return "code"; } + if (/\.targets$/i.test(filename)) { return "code"; } + if (/\.tera$/i.test(filename)) { return "code"; } + if (/\.tml$/i.test(filename)) { return "code"; } + if (/\.ui$/i.test(filename)) { return "code"; } + if (/\.urdf$/i.test(filename)) { return "code"; } + if (/\.ux$/i.test(filename)) { return "code"; } + if (/\.vxml$/i.test(filename)) { return "code"; } + if (/\.webidl$/i.test(filename)) { return "code"; } + if (/\.wisp$/i.test(filename)) { return "code"; } + if (/\.wlp(4|ppp)$/i.test(filename)) { return "code"; } + if (/\.wsdl$/i.test(filename)) { return "code"; } + if (/\.wsf$/i.test(filename)) { return "code"; } + if (/\.x3d$/i.test(filename)) { return "code"; } + if (/\.xacro$/i.test(filename)) { return "code"; } + if (/\.xib$/i.test(filename)) { return "code"; } + if (/\.xlf$/i.test(filename)) { return "code"; } + if (/\.xliff$/i.test(filename)) { return "code"; } + if (/\.xmi$/i.test(filename)) { return "code"; } + if (/\.xproj$/i.test(filename)) { return "code"; } + if (/\.xsd$/i.test(filename)) { return "code"; } + if (/\.xsl$/i.test(filename)) { return "code"; } + if (/\.xslt$/i.test(filename)) { return "code"; } + if (/\.xul$/i.test(filename)) { return "code"; } + if (/\.zcml$/i.test(filename)) { return "code"; } + if (/\.kid$/i.test(filename)) { return "genshi"; } + if (/^xml\+(genshi|kid)$/i.test(filename)) { return "genshi"; } + if (/\.gen$/i.test(filename)) { return "genstat"; } + if (/\.gpi$/i.test(filename)) { return "genstat"; } + if (/\.ebuild$/i.test(filename)) { return "gentoo"; } + if (/\.eclass$/i.test(filename)) { return "gentoo"; } + if (/\.xcf$/i.test(filename)) { return "gimp"; } + if (/\.ggr$/i.test(filename)) { return "gimp"; } + if (/\.gih$/i.test(filename)) { return "gimp"; } + if (/\.gpl$/i.test(filename)) { return "gimp"; } + if (/\.vbr$/i.test(filename)) { return "gimp"; } + if (/^\.git|^\.keep$|\.(lfsconfig|mailmap)$/i.test(filename)) { return "git"; } + if (/\.git(ignore|config|attributes)$/i.test(filename)) { return "git"; } + if (/^(ATOM_)?COMMIT_EDITMSG$/.test(filename)) { return "git-commit"; } + if (/^MERGE_(HEAD|MODE|MSG)$/.test(filename)) { return "git-merge"; } + if (/^\.gitlab-ci\.yml$/.test(filename)) { return "gitlab"; } + if (/^\.?gitpod\.ya?ml$/i.test(filename)) { return "gitpod"; } + if (/\.glade$/i.test(filename)) { return "glade"; } + if (/^glide\.ya?ml$/i.test(filename)) { return "glide"; } + if (/\.gltf$/i.test(filename)) { return "gltf"; } + if (/\.glf$/i.test(filename)) { return "pointwise"; } + if (/\.glyphs$/i.test(filename)) { return "glyphs"; } + if (/\.gn$/i.test(filename)) { return "gn"; } + if (/\.gni$/i.test(filename)) { return "gn"; } + if (/\.(gnu|gplv[23])$/i.test(filename)) { return "gnu"; } + if (/^([AL]?GPL|GFDL)(\b|_)/.test(filename)) { return "gnu"; } + if (/\.gtk/.test(filename)) { return "gnome"; } + if (/\.(gp|plo?t|gnuplot)$/i.test(filename)) { return "gnuplot"; } + if (/\.go$/i.test(filename)) { return "go"; } + if (/\.gd$/i.test(filename)) { return "godot"; } + if (/\.godot$/i.test(filename)) { return "godot"; } + if (/\.tres$/i.test(filename)) { return "godot"; } + if (/\.tscn$/i.test(filename)) { return "godot"; } + if (/\.import$/i.test(filename)) { return "godot"; } + if (/\.golo$/i.test(filename)) { return "golo"; } + if (/^\.goreleaser\.ya?ml$/i.test(filename)) { return "goreleaser"; } + if (/\.gs$/i.test(filename)) { return "gosu"; } + if (/\.gst$/i.test(filename)) { return "gosu"; } + if (/\.gsx$/i.test(filename)) { return "gosu"; } + if (/\.vark$/i.test(filename)) { return "gosu"; } + if (/\.gradle$/i.test(filename)) { return "gradle"; } + if (/gradlew$/i.test(filename)) { return "gradle"; } + if (/\.bnf$/i.test(filename)) { return "bnf"; } + if (/\.abnf$/i.test(filename)) { return "bnf"; } + if (/\.ebnf$/i.test(filename)) { return "bnf"; } + if (/\.cddl$/i.test(filename)) { return "bnf"; } + if (/\.(cf|lbnf)$/i.test(filename)) { return "bnf"; } + if (/\.grammar$/i.test(filename)) { return "bnf"; } + if (/\.gf$/i.test(filename)) { return "gf"; } + if (/\.gcx$/i.test(filename)) { return "grapher"; } + if (/\.graphql$/i.test(filename)) { return "graphql"; } + if (/\.graphqls$/i.test(filename)) { return "graphql"; } + if (/\.gql$/i.test(filename)) { return "graphql"; } + if (/^\.graphqlrc(?:\.(?:json|js|ya?ml))?$/i.test(filename)) { return "graphql"; } + if (/^graphql\.config\.js$/.test(filename)) { return "graphql"; } + if (/^codegen\.(json|ya?ml)$/i.test(filename)) { return "gql-codegen"; } + if (/\.gv$/i.test(filename)) { return "graphviz"; } + if (/\.dot$/i.test(filename)) { return "graphviz"; } + if (/\.(plantuml|[ip]uml|pu)$/i.test(filename)) { return "graphviz"; } + if (/\.gvdesign$/i.test(filename)) { return "gvdesign"; } + if (/^greenkeeper\.json$/i.test(filename)) { return "greenkeeper"; } + if (/\bgridsome\.(config|client|server)\.[jt]s$/i.test(filename)) { return "gridsome"; } + if (/\.(groovy|grt|gtpl|gsp|gvy)$/i.test(filename)) { return "groovy"; } + if (/gsp$/i.test(filename)) { return "groovy"; } + if (/^gruntfile.*\.([cm]?js|jsx)$/i.test(filename)) { return "grunt"; } + if (/^gruntfile.*\.(lit)?coffee$/i.test(filename)) { return "grunt"; } + if (/^gruntfile.*\.tsx?$/i.test(filename)) { return "grunt"; } + if (/^gulpfile.*\.([cm]?js|jsx)$/i.test(filename)) { return "gulp"; } + if (/^gulpfile.*\.(lit)?coffee$/i.test(filename)) { return "gulp"; } + if (/^gulpfile.*\.tsx?$/i.test(filename)) { return "gulp"; } + if (/\.hh$/i.test(filename)) { return "hack"; } + if (/\.hhi$/i.test(filename)) { return "hack"; } + if (/\.hack$/i.test(filename)) { return "hack"; } + if (/\.haml$/i.test(filename)) { return "haml"; } + if (/\.hamlc$/i.test(filename)) { return "haml"; } + if (/\.haml\.deface$/i.test(filename)) { return "haml"; } + if (/\.hb$/i.test(filename)) { return "harbour"; } + if (/\.hcl$/i.test(filename)) { return "hashicorp"; } + if (/\.workflow$/i.test(filename)) { return "hashicorp"; } + if (/\.hs$/i.test(filename)) { return "haskell"; } + if (/\.hsc$/i.test(filename)) { return "haskell"; } + if (/\.c2hs$/i.test(filename)) { return "haskell"; } + if (/\.lhs$/i.test(filename)) { return "haskell"; } + if (/\.hs-boot$/i.test(filename)) { return "haskell"; } + if (/\.hsig$/i.test(filename)) { return "haskell"; } + if (/^hie\.ya?ml($|\.)/i.test(filename)) { return "hie"; } + if (/\.hx([sm]l|)?$/.test(filename)) { return "haxe"; } + if (/\.hxproj$/i.test(filename)) { return "haxedevelop"; } + if (/^\.p4ignore$/i.test(filename)) { return "helix"; } + if (/\.chm$/i.test(filename)) { return "question"; } + if (/\.hlp$/i.test(filename)) { return "question"; } + if (/^(Proc|Apt)file$/.test(filename)) { return "heroku"; } + if (/\.buildpacks$/i.test(filename)) { return "heroku"; } + if (/\.slugignore$/i.test(filename)) { return "heroku"; } + if (/^\.vendor_urls$/.test(filename)) { return "heroku"; } + if (/\.hpgl$/i.test(filename)) { return "hp"; } + if (/\.hjson$/i.test(filename)) { return "hjson"; } + if (/\.hc$/i.test(filename)) { return "templeos"; } + if (/\.hc\.z$/i.test(filename)) { return "templeos"; } + if (/^Brewfile$/.test(filename)) { return "brew"; } + if (/\.hl$/i.test(filename)) { return "hoplon"; } + if (/\.(hipnc|hip|i3d|picnc)$/i.test(filename)) { return "houdini"; } + if (/\.vfl$/i.test(filename)) { return "houdini"; } + if (/\.hound\.ya?ml$/i.test(filename)) { return "houndci"; } + if (/\.x?html?$/i.test(filename)) { return "html5"; } + if (/\.cshtml$/i.test(filename)) { return "html5"; } + if (/\.gohtml$/i.test(filename)) { return "html5"; } + if (/\.html\.eex$/i.test(filename)) { return "html5"; } + if (/\.jsp$/i.test(filename)) { return "html5"; } + if (/\.jspf$/i.test(filename)) { return "html5"; } + if (/\.kit$/i.test(filename)) { return "html5"; } + if (/\.isml$/i.test(filename)) { return "html5"; } + if (/\.latte$/i.test(filename)) { return "html5"; } + if (/\.phtml$/i.test(filename)) { return "html5"; } + if (/\.shtml$/i.test(filename)) { return "html5"; } + if (/\.scaml$/i.test(filename)) { return "html5"; } + if (/\.swig$/i.test(filename)) { return "html5"; } + if (/\.vash$/i.test(filename)) { return "html5"; } + if (/\.xht$/i.test(filename)) { return "html5"; } + if (/\.dtml$/i.test(filename)) { return "html5"; } + if (/\.mht(ml)?$/i.test(filename)) { return "html5"; } + if (/\.html?\.ecr$/i.test(filename)) { return "html5"; } + if (/\.(html?\.erb(\.deface)?|rhtml)$/i.test(filename)) { return "html5"; } + if (/\.huskyrc$/i.test(filename)) { return "husky"; } + if (/\.huskyrc\.js$/i.test(filename)) { return "husky"; } + if (/\.huskyrc\.json$/i.test(filename)) { return "husky"; } + if (/\.huskyrc\.cjs$/i.test(filename)) { return "husky"; } + if (/\.huskyrc\.mjs$/i.test(filename)) { return "husky"; } + if (/\.huskyrc\.ya?ml$/i.test(filename)) { return "husky"; } + if (/\.hy$/i.test(filename)) { return "hy"; } + if (/hylang$/i.test(filename)) { return "hy"; } + if (/\.ejs\.t$/i.test(filename)) { return "hygen"; } + if (/^\.hyper\.[cm]?js$/i.test(filename)) { return "hyper"; } + if (/\.dlm$/i.test(filename)) { return "idl"; } + if (/^icomoon(\.[-\w]+)*\.json$/i.test(filename)) { return "icomoon"; } + if (/\.idr$/i.test(filename)) { return "idris"; } + if (/\.lidr$/i.test(filename)) { return "idris"; } + if (/\.ipf$/i.test(filename)) { return "igorpro"; } + if (/igor$/i.test(filename)) { return "igorpro"; } + if (/\.a?png$/i.test(filename)) { return "image"; } + if (/\.gif$/i.test(filename)) { return "image"; } + if (/\.jpe?g$/i.test(filename)) { return "image"; } + if (/\.(avif|heifs?|hif)$/i.test(filename)) { return "image"; } + if (/\.ico$/i.test(filename)) { return "image"; } + if (/\.webp$/i.test(filename)) { return "image"; } + if (/\.bmp$/i.test(filename)) { return "image"; } + if (/\.bpg$/i.test(filename)) { return "image"; } + if (/\.cin$/i.test(filename)) { return "image"; } + if (/\.cd5$/i.test(filename)) { return "image"; } + if (/\.cgm$/i.test(filename)) { return "image"; } + if (/\.cr2$/i.test(filename)) { return "image"; } + if (/\.dcm$/i.test(filename)) { return "image"; } + if (/\.dds$/i.test(filename)) { return "image"; } + if (/\.djvu?$/i.test(filename)) { return "image"; } + if (/\.dpx$/i.test(filename)) { return "image"; } + if (/\.ecw$/i.test(filename)) { return "image"; } + if (/\.fig$/i.test(filename)) { return "image"; } + if (/\.fits?$/i.test(filename)) { return "image"; } + if (/\.flif$/i.test(filename)) { return "image"; } + if (/\.fts$/i.test(filename)) { return "image"; } + if (/\.(gsrc|gr(emli)?n)$/i.test(filename)) { return "image"; } + if (/\.hdp$/i.test(filename)) { return "image"; } + if (/\.hdr$/i.test(filename)) { return "image"; } + if (/\.heic$/i.test(filename)) { return "image"; } + if (/\.icns$/i.test(filename)) { return "image"; } + if (/\.iff$/i.test(filename)) { return "image"; } + if (/\.(jp[f2xm]|j2c|mj2)$/i.test(filename)) { return "image"; } + if (/\.jps$/i.test(filename)) { return "image"; } + if (/\.jng$/i.test(filename)) { return "image"; } + if (/\.jxr$/i.test(filename)) { return "image"; } + if (/\.lbm$/i.test(filename)) { return "image"; } + if (/\.liff$/i.test(filename)) { return "image"; } + if (/\.mpo$/i.test(filename)) { return "image"; } + if (/\.mng$/i.test(filename)) { return "image"; } + if (/\.nrrd$/i.test(filename)) { return "image"; } + if (/\.ora$/i.test(filename)) { return "image"; } + if (/\.pcx$/i.test(filename)) { return "image"; } + if (/\.pict$/i.test(filename)) { return "image"; } + if (/\.pxr$/i.test(filename)) { return "image"; } + if (/\.raw$/i.test(filename)) { return "image"; } + if (/\.sct$/i.test(filename)) { return "image"; } + if (/\.sgi$/i.test(filename)) { return "image"; } + if (/\.svgz$/i.test(filename)) { return "image"; } + if (/\.tga$/i.test(filename)) { return "image"; } + if (/\.tiff?$/i.test(filename)) { return "image"; } + if (/\.vsdx?$/i.test(filename)) { return "image"; } + if (/\.wbm$/i.test(filename)) { return "image"; } + if (/\.wbmp$/i.test(filename)) { return "image"; } + if (/\.(wmf|emf|wmz|apm)$/i.test(filename)) { return "image"; } + if (/\.wdp$/i.test(filename)) { return "image"; } + if (/\.xwd$/i.test(filename)) { return "image"; } + if (/\.pxm$/i.test(filename)) { return "image"; } + if (/\.pxb$/i.test(filename)) { return "image"; } + if (/\.pxg$/i.test(filename)) { return "image"; } + if (/\.pxls$/i.test(filename)) { return "image"; } + if (/\.pxs$/i.test(filename)) { return "image"; } + if (/\.imba$/i.test(filename)) { return "imba"; } + if (/^\.imgbotconfig$/i.test(filename)) { return "imgbot"; } + if (/\.ni$/i.test(filename)) { return "inform7"; } + if (/\.i7x$/i.test(filename)) { return "inform7"; } + if (/\.ink$/i.test(filename)) { return "ink"; } + if (/\.ink2$/i.test(filename)) { return "ink"; } + if (/\.inx$/i.test(filename)) { return "inkscape"; } + if (/\.iss$/i.test(filename)) { return "inno"; } + if (/\.isl$/i.test(filename)) { return "inno"; } + if (/\.io$/i.test(filename)) { return "io"; } + if (/\.ik$/i.test(filename)) { return "ioke"; } + if (/^ionic\.(project|config\.json)$/.test(filename)) { return "ionic"; } + if (/\.thy$/i.test(filename)) { return "isabelle"; } + if (/^ROOT$/.test(filename)) { return "isabelle"; } + if (/^\.nycrc(\.json)?$/i.test(filename)) { return "istanbul"; } + if (/^\.nycrc\.ya?ml$/i.test(filename)) { return "istanbul"; } + if (/^nyc\.config\.js$/i.test(filename)) { return "istanbul"; } + if (/^nyc\.config\.cjs$/i.test(filename)) { return "istanbul"; } + if (/^nyc\.config\.mjs$/i.test(filename)) { return "istanbul"; } + if (/\.ijs$/i.test(filename)) { return "j"; } + if (/\.jade$/i.test(filename)) { return "jade"; } + if (/^Jakefile$/.test(filename)) { return "jake"; } + if (/\.jake$/i.test(filename)) { return "jake"; } + if (/^\.?jasmine\.json$|^jasmine\.([-\w]+\.)?([cm]?js|ts|coffee)$/i.test(filename)) { return "jasmine"; } + if (/\.java$/i.test(filename)) { return "java"; } + if (/\.class$/i.test(filename)) { return "java"; } + if (/\.js$/i.test(filename)) { return "js"; } + if (/\._js$/i.test(filename)) { return "js"; } + if (/\.jsb$/i.test(filename)) { return "js"; } + if (/\.jsm$/i.test(filename)) { return "js"; } + if (/\.jss$/i.test(filename)) { return "js"; } + if (/\.es\d?$/i.test(filename)) { return "js"; } + if (/\.cjs$/i.test(filename)) { return "js"; } + if (/\.mjs$/i.test(filename)) { return "js"; } + if (/\.sjs$/i.test(filename)) { return "js"; } + if (/\.ssjs$/i.test(filename)) { return "js"; } + if (/\.jspre$/i.test(filename)) { return "js"; } + if (/\.jscript$/i.test(filename)) { return "js"; } + if (/\.jse$/i.test(filename)) { return "js"; } + if (/\.jslib$/i.test(filename)) { return "js"; } + if (/\.xsjs$/i.test(filename)) { return "js"; } + if (/\.xsjslib$/i.test(filename)) { return "js"; } + if (/\.dust$/i.test(filename)) { return "js"; } + if (/\.htc$/i.test(filename)) { return "js"; } + if (/\.pac$/i.test(filename)) { return "js"; } + if (/\.pjs$/i.test(filename)) { return "js"; } + if (/\.js\.ecr$/i.test(filename)) { return "js"; } + if (/\.js\.erb$/i.test(filename)) { return "js"; } + if (/([\/\\])cartridge\1scripts(?:\1.+)?\1[^\\\/]+\.ds$/i.test(filename)) { return "js"; } + if (/^_config\.yml$/.test(filename)) { return "jekyll"; } + if (/\.nojekyll$/i.test(filename)) { return "jekyll"; } + if (/^Jenkinsfile$/.test(filename)) { return "jenkins"; } + if (/^jest(\.config)?(\.babel)?\.(js(on|x)?|[cm]js|tsx?)$/i.test(filename)) { return "jest"; } + if (/^\.jestrc($|\.)/i.test(filename)) { return "jest"; } + if (/\.(mjs|tsx?)\.snap$/i.test(filename)) { return "jest"; } + if (/\.cjs\.snap$/i.test(filename)) { return "jest"; } + if (/\.snap$/i.test(filename)) { return "jest"; } + if (/\.jinja$/i.test(filename)) { return "jinja"; } + if (/\.j(inja)?2$/i.test(filename)) { return "jinja"; } + if (/\.jison$/i.test(filename)) { return "jison"; } + if (/\.jisonlex$/i.test(filename)) { return "jison"; } + if (/\.ol$/i.test(filename)) { return "jolie"; } + if (/\.iol$/i.test(filename)) { return "jolie"; } + if (/^jquery([-.](min|latest|slim|\d\.\d+(\.\d+)?))*\.([jt]sx?|es6?|coffee|map)$/i.test(filename)) { return "jquery"; } + if (/^jquery([-_.](ui[-_.](custom|dialog-?\w*)|effects)(\.[^.]*)?|[-.]?ui(-\d\.\d+(\.\d+)?)?(\.\w+)?)([-_.]?min|dev)?\.([jt]sx?|es6?|coffee|map|s?css|less|styl)$/i.test(filename)) { return "jqueryui"; } + if (/\.jscpd(\.json)?$|^jscpd-report\.json/i.test(filename)) { return "jscpd"; } + if (/\.jscpd\.html$/i.test(filename)) { return "jscpd"; } + if (/\.jscpd\.xml$/i.test(filename)) { return "jscpd"; } + if (/\.(h|geo|topo)?json$/i.test(filename)) { return "json"; } + if (/\.jsonc$/i.test(filename)) { return "json"; } + if (/\.rsj$/i.test(filename)) { return "json"; } + if (/\.json5$/i.test(filename)) { return "json5"; } + if (/\.jsonld$/i.test(filename)) { return "jsonld"; } + if (/\.jq$/i.test(filename)) { return "sql"; } + if (/\.jsonnet$/i.test(filename)) { return "jsonnet"; } + if (/\.libsonnet$/i.test(filename)) { return "jsonnet"; } + if (/\.jsx$/i.test(filename)) { return "jsx"; } + if (/\.jl$/i.test(filename)) { return "julia"; } + if (/\.jos$/i.test(filename)) { return "junos"; } + if (/\.slax$/i.test(filename)) { return "junos"; } + if (/\.ipynb$/i.test(filename)) { return "jupyter"; } + if (/^Notebook$/.test(filename)) { return "jupyter"; } + if (/\.ksy$/i.test(filename)) { return "kaitai"; } + if (/^karma\.conf(ig)?\.[cm]?js$/i.test(filename)) { return "karma"; } + if (/^karma\.conf(ig)?\.coffee$/i.test(filename)) { return "karma"; } + if (/^karma\.conf(ig)?\.ts$/i.test(filename)) { return "karma"; } + if (/\.ks$/i.test(filename)) { return "kos"; } + if (/^keybase\.txt$/i.test(filename)) { return "keybase"; } + if (/\.keynote$/i.test(filename)) { return "keynote"; } + if (/\.knt$/i.test(filename)) { return "keynote"; } + if (/\.hypr$/i.test(filename)) { return "kibo"; } + if (/\.hypr\.live$/i.test(filename)) { return "kibo"; } + if (/\.kicad_pcb$/i.test(filename)) { return "kicad"; } + if (/\.kicad_pcb-bak$/i.test(filename)) { return "kicad"; } + if (/\.kicad_mod$/i.test(filename)) { return "kicad"; } + if (/\.kicad_wks$/i.test(filename)) { return "kicad"; } + if (/^fp-lib-table$/i.test(filename)) { return "kicad"; } + if (/^\.?kitchen(\.[-\w]*)*\.ya?ml$/i.test(filename)) { return "kitchenci"; } + if (/\.kv$/i.test(filename)) { return "kivy"; } + if (/\.kml$/i.test(filename)) { return "earth"; } + if (/^knockout[-.](\d+\.){3}(debug\.)?[cm]?js$/i.test(filename)) { return "knockout"; } + if (/\.kt$/i.test(filename)) { return "kotlin"; } + if (/\.ktm$/i.test(filename)) { return "kotlin"; } + if (/\.kts$/i.test(filename)) { return "kotlin"; } + if (/\.krl$/i.test(filename)) { return "krl"; } + if (/^kubernetes.*\.ya?ml$/i.test(filename)) { return "kubernetes"; } + if (/(^|\.)kazelcfg\.json$/i.test(filename)) { return "kubernetes"; } + if (/\.(csl|kusto)$/i.test(filename)) { return "kusto"; } + if (/Kusto (Query.?Language|Explorer)|^KQL$/i.test(filename)) { return "kusto"; } + if (/\.lv(proj|lib)$/i.test(filename)) { return "labview"; } + if (/\.blade(\.php)?$/i.test(filename)) { return "laravel"; } + if (/\.lark$/i.test(filename)) { return "lark"; } + if (/\.lasso$/i.test(filename)) { return "lasso"; } + if (/\.las$/i.test(filename)) { return "lasso"; } + if (/\.lasso8$/i.test(filename)) { return "lasso"; } + if (/\.lasso9$/i.test(filename)) { return "lasso"; } + if (/\.lassoapp$/i.test(filename)) { return "lasso"; } + if (/\.ldml$/i.test(filename)) { return "lasso"; } + if (/\.lat$/i.test(filename)) { return "latino"; } + if (/^leaflet\.(draw-src|draw|spin|coordinates-(\d+\.)\d+\.\d+\.src)\.([cm]?js|css)$|^wicket-leaflet\.[cm]?js$/i.test(filename)) { return "leaflet"; } + if (/\.lean$/i.test(filename)) { return "lean"; } + if (/\.hlean$/i.test(filename)) { return "lean"; } + if (/\.ledger$/i.test(filename)) { return "graph"; } + if (/\.hledger$/i.test(filename)) { return "graph"; } + if (/^lefthook(-local)?\.ya?ml$/i.test(filename)) { return "lefthook"; } + if (/\.lr$/i.test(filename)) { return "lektor"; } + if (/\.lektorproject$/i.test(filename)) { return "lektor"; } + if (/^lerna\.json$/i.test(filename)) { return "lerna"; } + if (/project\.clj$/i.test(filename)) { return "lein"; } + if (/\.l(e?x)?$/i.test(filename)) { return "lex"; } + if (/^lexer\.x$/i.test(filename)) { return "lex"; } + if (/\.flex$/i.test(filename)) { return "lex"; } + if (/\.lfe$/i.test(filename)) { return "lfe"; } + if (/^\.?lgtm\.ya?ml$/i.test(filename)) { return "lgtm"; } + if (/^\.?lighthouserc\.(json|js|ya?ml)$/i.test(filename)) { return "lighthouse"; } + if (/\.lwo$/i.test(filename)) { return "lightwave"; } + if (/\.lws$/i.test(filename)) { return "lightwave"; } + if (/\.ly$/i.test(filename)) { return "lilypond"; } + if (/\.ily$/i.test(filename)) { return "lilypond"; } + if (/\.hxp$/i.test(filename)) { return "lime"; } + if (/\.url$/i.test(filename)) { return "link"; } + if (/\.lnk$/i.test(filename)) { return "link"; } + if (/\.alias$/.test(filename)) { return "link"; } + if (/\.linq$/i.test(filename)) { return "linqpad"; } + if (/\.lisp$/i.test(filename)) { return "lisp"; } + if (/\.lsp$/i.test(filename)) { return "lisp"; } + if (/\.nl$/i.test(filename)) { return "lisp"; } + if (/\.ny$/i.test(filename)) { return "lisp"; } + if (/\.podsl$/i.test(filename)) { return "lisp"; } + if (/\.sexp$/i.test(filename)) { return "lisp"; } + if (/\.sbclrc$/i.test(filename)) { return "lisp"; } + if (/\.ls$/i.test(filename)) { return "ls"; } + if (/\._ls$/i.test(filename)) { return "ls"; } + if (/^Slakefile$/.test(filename)) { return "ls"; } + if (/\.ll$/i.test(filename)) { return "llvm"; } + if (/\.clang-(format|tidy)$/i.test(filename)) { return "llvm"; } + if (/^ubsan\.blacklist$/i.test(filename)) { return "llvm"; } + if (/\.xm$/i.test(filename)) { return "mobile"; } + if (/\.xi$/i.test(filename)) { return "mobile"; } + if (/\.(logtalk|lgt)$/i.test(filename)) { return "logtalk"; } + if (/\.lol$/i.test(filename)) { return "lolcode"; } + if (/\.(lookml|lkml)$/i.test(filename)) { return "lookml"; } + if (/\.lsl$/i.test(filename)) { return "lsl"; } + if (/\.lslp$/i.test(filename)) { return "lsl"; } + if (/\.lua$/i.test(filename)) { return "lua"; } + if (/\.pd_lua$/i.test(filename)) { return "lua"; } + if (/\.rbxs$/i.test(filename)) { return "lua"; } + if (/\.wlua$/i.test(filename)) { return "lua"; } + if (/^Lakefile$/i.test(filename)) { return "lua"; } + if (/\.luacheckrc$/i.test(filename)) { return "lua"; } + if (/\.rockspec$/i.test(filename)) { return "lua"; } + if (/\.m2$/i.test(filename)) { return "macaulay2"; } + if (/m2$/i.test(filename)) { return "macaulay2"; } + if (/^Makefile/.test(filename)) { return "checklist"; } + if (/^mk\.config$/.test(filename)) { return "checklist"; } + if (/\.(mk|mak|make)$/i.test(filename)) { return "checklist"; } + if (/^contrib\.make?([-.]|$)/i.test(filename)) { return "checklist"; } + if (/^BSDmakefile$/i.test(filename)) { return "checklist"; } + if (/^GNUmakefile$/i.test(filename)) { return "checklist"; } + if (/^makefile\.sco$/i.test(filename)) { return "checklist"; } + if (/^Kbuild$/.test(filename)) { return "checklist"; } + if (/^makefile$/.test(filename)) { return "checklist"; } + if (/^mkfile$/i.test(filename)) { return "checklist"; } + if (/^\.?qmake$/i.test(filename)) { return "checklist"; } + if (/\.am$/i.test(filename)) { return "checklist"; } + if (/^DEPS$/.test(filename)) { return "checklist"; } + if (/\.mms$/i.test(filename)) { return "checklist"; } + if (/\.mmk$/i.test(filename)) { return "checklist"; } + if (/\.pri$/i.test(filename)) { return "checklist"; } + if (/^justfile$/i.test(filename)) { return "checklist"; } + if (/\.eml$/i.test(filename)) { return "icon-mail"; } + if (/\.mbo?x$/i.test(filename)) { return "icon-mail"; } + if (/\.mak?o$/i.test(filename)) { return "mako"; } + if (/\.(1([bcmstx]|has|in)?|[24568]|3(avl|bsm|cfgadm|in|[cmx]|perl|pm?|qt)?|7(d|fs|i|ipp|m|p)?|9[efps]?|eqn|groff|man|mandoc|mdoc|me|mom|nr?|nroff|roff?|tmac|tmac-u|tr|troff)$/i.test(filename)) { return "manpage"; } + if (/^(man|mdoc)\.template$/i.test(filename)) { return "manpage"; } + if (/\.(chem|dformat|pic)$|^grap(\.tex)?\.defines$/i.test(filename)) { return "manpage"; } + if (/\.(rnh|rno|run|runoff)$/i.test(filename)) { return "manpage"; } + if (/(^|\.)((troff|eqn)rc(-end)?)$/i.test(filename)) { return "manpage"; } + if (/^tmac\.|^(mmn|mmt|toc\.entries)$/i.test(filename)) { return "manpage"; } + if (/(^|\/)samples\/(eqn|mm|[nt]?roff|pic|tbl)\.[a-z]+$/i.test(filename)) { return "manpage"; } + if (/(\\|\/)(?:man(\w+)\1[^\\\/]+\.\2|(?:tmac|eqnchar)\.d\1(?:ms\.)?[^\\\/.]+(?:\.in)?|picasso\1(?:defs\.\w+|disclaimer))$/.test(filename)) { return "manpage"; } + if (/\.css\.map$/i.test(filename)) { return "sourcemap"; } + if (/\.js\.map$/i.test(filename)) { return "sourcemap"; } + if (/\.cjs\.map$/i.test(filename)) { return "sourcemap"; } + if (/\.mjs\.map$/i.test(filename)) { return "sourcemap"; } + if (/\.cidmap$/i.test(filename)) { return "sourcemap"; } + if (/\.map$/i.test(filename)) { return "sourcemap"; } + if (/\.mapping$/i.test(filename)) { return "sourcemap"; } + if (/\.enigma$/i.test(filename)) { return "sourcemap"; } + if (/\.match$/i.test(filename)) { return "sourcemap"; } + if (/\.tiny$/i.test(filename)) { return "sourcemap"; } + if (/\.tinyv2$/i.test(filename)) { return "sourcemap"; } + if (/\.unpick$/i.test(filename)) { return "sourcemap"; } + if (/\.mss$/i.test(filename)) { return "mapbox"; } + if (/^Carto(CSS)?$/i.test(filename)) { return "mapbox"; } + if (/\.(md(te?xt)?|mdown|markdown|mkd|mkdown|mdwn|mkdn|ron|pmd|jmd)$/i.test(filename)) { return "markdown"; } + if (/^(CommonMark|GFM|Pandoc)$|\bMarkdown\b/i.test(filename)) { return "markdown"; } + if (/^\.markdownlint/i.test(filename)) { return "markdownlint"; } + if (/^\.?mdlrc(\.style)?\.rb$/i.test(filename)) { return "markdownlint"; } + if (/^\.?mdlrc$/i.test(filename)) { return "markdownlint"; } + if (/\.marko$/i.test(filename)) { return "marko"; } + if (/\.marko\.[cm]?js$/i.test(filename)) { return "marko"; } + if (/^materialize(\.min)?\.([cm]?js|css)$/i.test(filename)) { return "materialize"; } + if (/\.mathematica$/i.test(filename)) { return "mathematica"; } + if (/\.ma$/i.test(filename)) { return "mathematica"; } + if (/\.mt$/i.test(filename)) { return "mathematica"; } + if (/\.nb$/i.test(filename)) { return "mathematica"; } + if (/\.nbp$/i.test(filename)) { return "mathematica"; } + if (/^MathJax[^.]*\.[cm]?js$/i.test(filename)) { return "mathjax"; } + if (/\.matlab$/i.test(filename)) { return "matlab"; } + if (/\.mlappinstall$/i.test(filename)) { return "matlab"; } + if (/\.mlpkginstall$/i.test(filename)) { return "matlab"; } + if (/\.mltbx$/i.test(filename)) { return "matlab"; } + if (/\.mdlp$/i.test(filename)) { return "matlab"; } + if (/\.mn$/i.test(filename)) { return "matlab"; } + if (/\.sldd$/i.test(filename)) { return "matlab"; } + if (/\.slx$/i.test(filename)) { return "matlab"; } + if (/\.slxp$/i.test(filename)) { return "matlab"; } + if (/\.maxpat$/i.test(filename)) { return "max"; } + if (/\.maxhelp$/i.test(filename)) { return "max"; } + if (/\.maxproj$/i.test(filename)) { return "max"; } + if (/\.mxt$/i.test(filename)) { return "max"; } + if (/\.pat$/i.test(filename)) { return "max"; } + if (/\.ms$/i.test(filename)) { return "maxscript"; } + if (/\.mcr$/i.test(filename)) { return "maxscript"; } + if (/\.mce$/i.test(filename)) { return "maxscript"; } + if (/\.max$/i.test(filename)) { return "maxscript"; } + if (/\.3ds$/i.test(filename)) { return "maxscript"; } + if (/\.mb$/i.test(filename)) { return "maya"; } + if (/\.mel$/i.test(filename)) { return "maya"; } + if (/\.mcf[ip]$/i.test(filename)) { return "maya"; } + if (/\.mdx$/i.test(filename)) { return "mdx"; } + if (/\.mediawiki$/i.test(filename)) { return "mediawiki"; } + if (/\.wiki$/i.test(filename)) { return "mediawiki"; } + if (/^\.mention-bot$/i.test(filename)) { return "bullhorn"; } + if (/\.hgignore$/i.test(filename)) { return "hg"; } + if (/\.?hgrc$/i.test(filename)) { return "hg"; } + if (/\.hgsub$/i.test(filename)) { return "hg"; } + if (/\.hgsubstate$/i.test(filename)) { return "hg"; } + if (/\.moo$/i.test(filename)) { return "mercury"; } + if (/\.(mmd|mermaid)$/i.test(filename)) { return "mermaid"; } + if (/^(meson\.build|meson_options\.txt)$/i.test(filename)) { return "meson"; } + if (/\.metal$/i.test(filename)) { return "metal"; } + if (/\.mp$/i.test(filename)) { return "metapost"; } + if (/\.mf$/i.test(filename)) { return "metapost"; } + if (/\.accda$/i.test(filename)) { return "access"; } + if (/\.accdb$/i.test(filename)) { return "access"; } + if (/\.accde$/i.test(filename)) { return "access"; } + if (/\.accdr$/i.test(filename)) { return "access"; } + if (/\.accdt$/i.test(filename)) { return "access"; } + if (/\.adn$/i.test(filename)) { return "access"; } + if (/\.laccdb$/i.test(filename)) { return "access"; } + if (/\.mdw$/i.test(filename)) { return "access"; } + if (/\.xls$/i.test(filename)) { return "excel"; } + if (/\.xlsx$/i.test(filename)) { return "excel"; } + if (/\.xlsm$/i.test(filename)) { return "excel"; } + if (/\.xlsb$/i.test(filename)) { return "excel"; } + if (/\.xlt$/i.test(filename)) { return "excel"; } + if (/\.xla$/i.test(filename)) { return "excel"; } + if (/\.xlam$/i.test(filename)) { return "excel"; } + if (/\.xltm$/i.test(filename)) { return "excel"; } + if (/\.xltx$/i.test(filename)) { return "excel"; } + if (/\.(infopathxml|xsn|xsf|xtp2)$/i.test(filename)) { return "infopath"; } + if (/\.o?crec$/i.test(filename)) { return "lync"; } + if (/\.one$/i.test(filename)) { return "onenote"; } + if (/\.pst$/i.test(filename)) { return "outlook"; } + if (/\.bcmx$/i.test(filename)) { return "outlook"; } + if (/\.oab$/i.test(filename)) { return "outlook"; } + if (/\.otm$/i.test(filename)) { return "outlook"; } + if (/\.oft$/i.test(filename)) { return "outlook"; } + if (/\.nk2$/i.test(filename)) { return "outlook"; } + if (/\.olk14\w*$/i.test(filename)) { return "outlook"; } + if (/\.pps$/i.test(filename)) { return "powerpoint"; } + if (/\.ppsx$/i.test(filename)) { return "powerpoint"; } + if (/\.ppt$/i.test(filename)) { return "powerpoint"; } + if (/\.pptx$/i.test(filename)) { return "powerpoint"; } + if (/\.potm$/i.test(filename)) { return "powerpoint"; } + if (/\.mpp$/i.test(filename)) { return "msproject"; } + if (/\.mpt$/i.test(filename)) { return "msproject"; } + if (/\.puz$/i.test(filename)) { return "publisher"; } + if (/\.doc$/i.test(filename)) { return "word"; } + if (/\.docx$/i.test(filename)) { return "word"; } + if (/\.docm$/i.test(filename)) { return "word"; } + if (/\.docxml$/i.test(filename)) { return "word"; } + if (/\.dotm$/i.test(filename)) { return "word"; } + if (/\.dotx$/i.test(filename)) { return "word"; } + if (/\.wri$/i.test(filename)) { return "word"; } + if (/\.wll$/i.test(filename)) { return "word"; } + if (/\.vsdx$/i.test(filename)) { return "visio"; } + if (/\.vdw$/i.test(filename)) { return "visio"; } + if (/\.vdx$/i.test(filename)) { return "visio"; } + if (/\.vsd$/i.test(filename)) { return "visio"; } + if (/\.vsdm$/i.test(filename)) { return "visio"; } + if (/\.vsw$/i.test(filename)) { return "visio"; } + if (/\.vsx$/i.test(filename)) { return "visio"; } + if (/\.vtx$/i.test(filename)) { return "visio"; } + if (/\.vrd$/i.test(filename)) { return "visio"; } + if (/\.vsl$/i.test(filename)) { return "visio"; } + if (/\.vs[st][mx]?$/i.test(filename)) { return "visio"; } + if (/^mcmod\.info$/i.test(filename)) { return "minecraft"; } + if (/\.mcfunction$/i.test(filename)) { return "minecraft"; } + if (/\.mclevel$/i.test(filename)) { return "minecraft"; } + if (/\.mcpack$/i.test(filename)) { return "minecraft"; } + if (/\.mcworld$/i.test(filename)) { return "minecraft"; } + if (/^pack\.mcmeta$/i.test(filename)) { return "minecraft"; } + if (/\.png\.mcmeta$/.test(filename)) { return "minecraft"; } + if (/\.mzn$/i.test(filename)) { return "minizinc"; } + if (/\.dzn$/i.test(filename)) { return "minizinc"; } + if (/\.mint$/i.test(filename)) { return "mint"; } + if (/\.dr?uby$/g.test(filename)) { return "mirah"; } + if (/\.mir(ah)?$/g.test(filename)) { return "mirah"; } + if (/\.m$/i.test(filename)) { return "miranda"; } + if (/\.mrc$/i.test(filename)) { return "mirc"; } + if (/\.mjml$/i.test(filename)) { return "mjml"; } + if (/\.mjmlslim$/i.test(filename)) { return "mjml"; } + if (/^\.?mkdocs\.ya?ml$/i.test(filename)) { return "book-alt"; } + if (/\.mocharc\.(jsonc?|[cm]?js|ya?ml)$/i.test(filename)) { return "mocha"; } + if (/^mocha(\.min)?\.([jt]sx?|es6?|coffee)$/i.test(filename)) { return "mocha"; } + if (/^mocha(\.min)?\.(s?css|less|styl)$/i.test(filename)) { return "mocha"; } + if (/mocha\.opts$/i.test(filename)) { return "mocha"; } + if (/\.obj$/i.test(filename)) { return "model"; } + if (/\.mtl$/i.test(filename)) { return "model"; } + if (/\.shader$/i.test(filename)) { return "model"; } + if (/\.geo(m|metry)?$/i.test(filename)) { return "model"; } + if (/\.c4d$/i.test(filename)) { return "model"; } + if (/\.comp$/i.test(filename)) { return "model"; } + if (/\.tesc$/i.test(filename)) { return "model"; } + if (/\.tese$/i.test(filename)) { return "model"; } + if (/\.cginc$/i.test(filename)) { return "model"; } + if (/\.dxf$/i.test(filename)) { return "model"; } + if (/\.dwg$/i.test(filename)) { return "model"; } + if (/\.mdl$/i.test(filename)) { return "model"; } + if (/\.ply$/i.test(filename)) { return "model"; } + if (/\.fnc$/i.test(filename)) { return "model"; } + if (/\.stl$/i.test(filename)) { return "model"; } + if (/\.u3d$/i.test(filename)) { return "model"; } + if (/\.(rviz|vcg)$/i.test(filename)) { return "model"; } + if (/\.(ste?p|p21)$/i.test(filename)) { return "model"; } + if (/\.x$/i.test(filename)) { return "model"; } + if (/\.mo$/i.test(filename)) { return "modelica"; } + if (/^\.?modernizr(rc)?\.[cm]?js$|^modernizr([-\.]custom|-\d\.\d+)(\.\d+)?\.[cm]?js$/i.test(filename)) { return "modernizr"; } + if (/^web-(dev-server|test-runner)\.config\.([cm]?js)$/i.test(filename)) { return "modernweb"; } + if (/\.lxo$/i.test(filename)) { return "modo"; } + if (/\.mod$/i.test(filename)) { return "modula2"; } + if (/\.def$/i.test(filename)) { return "modula2"; } + if (/\.i3$/i.test(filename)) { return "modula3"; } + if (/\.ig$/i.test(filename)) { return "modula3"; } + if (/\.m3$/i.test(filename)) { return "modula3"; } + if (/\.mg$/i.test(filename)) { return "modula3"; } + if (/^m3(makefile|overrides)$/i.test(filename)) { return "modula3"; } + if (/\.moho$/i.test(filename)) { return "moho"; } + if (/\.mohoaction$/i.test(filename)) { return "moho"; } + if (/\.mohobrush$/i.test(filename)) { return "moho"; } + if (/\.mohoexport$/i.test(filename)) { return "moho"; } + if (/\.mohoproj$/i.test(filename)) { return "moho"; } + if (/\.mohostyle$/i.test(filename)) { return "moho"; } + if (/^moleculer\.config\.([cm]?js|json|ts)$/i.test(filename)) { return "moleculer"; } + if (/^moment(-with-locales)?(\.min)?\.[cm]?js$/i.test(filename)) { return "moment"; } + if (/^moment-timezone(-with-data)?(-\d{4}-\d{4})?(\.min)?\.[cm]?js$/i.test(filename)) { return "moment-tz"; } + if (/\.monkey$/i.test(filename)) { return "monkey"; } + if (/\.mtn-ignore$/i.test(filename)) { return "monotone"; } + if (/\.moon$/i.test(filename)) { return "moon"; } + if (/^mootools[^.]*\d+\.\d+(\.\d+)?[^.]*\.[cm]?js$/i.test(filename)) { return "mootools"; } + if (/\.mrb$/i.test(filename)) { return "mruby"; } + if (/\.dsql$/i.test(filename)) { return "msql"; } + if (/\.mu$/i.test(filename)) { return "mupad"; } + if (/\.chord$/i.test(filename)) { return "music"; } + if (/\.midi?$/i.test(filename)) { return "music"; } + if (/\.pd$/i.test(filename)) { return "music"; } + if (/\.(hb[st]|handlebars|(mu)?stache)$/i.test(filename)) { return "mustache"; } + if (/^(hbs|htmlbars|handlebars)$/i.test(filename)) { return "mustache"; } + if (/\.nanorc$/i.test(filename)) { return "nano"; } + if (/^\.?nanoc\.ya?ml$/i.test(filename)) { return "nanoc"; } + if (/\.build$/i.test(filename)) { return "nant"; } + if (/\.nasm$/i.test(filename)) { return "nasm"; } + if (/\.ncl$/i.test(filename)) { return "earth"; } + if (/\.neon$/i.test(filename)) { return "neon"; } + if (/\.nd?proj$/i.test(filename)) { return "ndepend"; } + if (/\.neko$/i.test(filename)) { return "neko"; } + if (/^run\.n$/.test(filename)) { return "neko"; } + if (/\.cyp(her)?$/i.test(filename)) { return "neo4j"; } + if (/\.nasl$/i.test(filename)) { return "nessus"; } + if (/\.axs$/i.test(filename)) { return "amx"; } + if (/\.axi$/i.test(filename)) { return "amx"; } + if (/\.nlogo$/i.test(filename)) { return "netlogo"; } + if (/^netlify\.toml$/i.test(filename)) { return "netlify"; } + if (/^newrelic\.yml/i.test(filename)) { return "newrelic"; } + if (/\.nf$/i.test(filename)) { return "nextflow"; } + if (/^nextflow\.config$/i.test(filename)) { return "nextflow"; } + if (/^next\.config\.[cm]?js$/i.test(filename)) { return "nextjs"; } + if (/^nestconfig\.json$/i.test(filename)) { return "nestjs"; } + if (/\.pbm$/i.test(filename)) { return "image"; } + if (/\.pgm$/i.test(filename)) { return "image"; } + if (/\.ppm$/i.test(filename)) { return "image"; } + if (/\.pnm$/i.test(filename)) { return "image"; } + if (/^nginx(\.[-\w]+)*\.conf$/i.test(filename)) { return "nginx"; } + if (/\.nginx(conf)?$/i.test(filename)) { return "nginx"; } + if (/\.nib$/i.test(filename)) { return "nib"; } + if (/\.5c$/i.test(filename)) { return "nickle"; } + if (/^nightwatch\.conf(ig)?\.[cm]?js$/i.test(filename)) { return "nightwatch"; } + if (/\.nim(rod)?$/i.test(filename)) { return "nimrod"; } + if (/Nimrod$/i.test(filename)) { return "nimrod"; } + if (/\.nimble$/i.test(filename)) { return "nimble"; } + if (/\.ninja$/i.test(filename)) { return "shuriken"; } + if (/\.ninja\.d$/i.test(filename)) { return "shuriken"; } + if (/\.n64$/i.test(filename)) { return "n64"; } + if (/\.z64$/i.test(filename)) { return "n64"; } + if (/\.nit$/i.test(filename)) { return "nit"; } + if (/\.nix$/i.test(filename)) { return "nix"; } + if (/nixos$/i.test(filename)) { return "nix"; } + if (/\.nse$/i.test(filename)) { return "nmap"; } + if (/\.njs$/i.test(filename)) { return "node"; } + if (/\.nvmrc$/i.test(filename)) { return "node"; } + if (/\.node$/i.test(filename)) { return "node"; } + if (/\.node-version$/i.test(filename)) { return "node"; } + if (/^BUNDLED_NODE_VERSION$/.test(filename)) { return "node"; } + if (/\.node_repl_history$/i.test(filename)) { return "node"; } + if (/^nodemon\.json$|\.nodemonignore$/i.test(filename)) { return "nodemon"; } + if (/^\.?nokogirirc($|\.)/i.test(filename)) { return "nokogiri"; } + if (/\.nomad$/i.test(filename)) { return "nomad"; } + if (/\.noon$/i.test(filename)) { return "noon"; } + if (/^normalize(\.min)?\.(css|less|scss|styl)$/i.test(filename)) { return "normalize"; } + if (/^(package\.json|\.npmignore|\.?npmrc|npm-debug\.log|npm-shrinkwrap\.json|package-lock\.json)$/i.test(filename)) { return "npm"; } + if (/\.nsi$/i.test(filename)) { return "nsis"; } + if (/\.nsh$/i.test(filename)) { return "nsis"; } + if (/^\.nsrirc(\.(json|(config\.)?[cm]?js|ya?ml))?$/i.test(filename)) { return "nsri"; } + if (/^\.nsriignore(\.(json|(config\.)?[cm]?js|ya?ml))?$/i.test(filename)) { return "nsri"; } + if (/\.integrity\.json$/i.test(filename)) { return "nsri-alt"; } + if (/\.nu$/i.test(filename)) { return "recycle"; } + if (/^Nukefile$/.test(filename)) { return "recycle"; } + if (/\.nuspec$/i.test(filename)) { return "nuget"; } + if (/\.nupkg$/i.test(filename)) { return "nuget"; } + if (/\.pkgproj$/i.test(filename)) { return "nuget"; } + if (/\.snupkg$/i.test(filename)) { return "nuget"; } + if (/\.psmdcp$/i.test(filename)) { return "nuget"; } + if (/\.npy$/i.test(filename)) { return "numpy"; } + if (/\.npz$/i.test(filename)) { return "numpy"; } + if (/\.numpy$/i.test(filename)) { return "numpy"; } + if (/\.numpyw$/i.test(filename)) { return "numpy"; } + if (/\.numsc$/i.test(filename)) { return "numpy"; } + if (/\.(nunjucks|njk)$/i.test(filename)) { return "nunjucks"; } + if (/^nuxt\.config\.[jt]s$/i.test(filename)) { return "nuxt"; } + if (/\.nss$/i.test(filename)) { return "nwscript"; } + if (/\.ncs$/i.test(filename)) { return "nwscript"; } + if (/\.ndb$/i.test(filename)) { return "nwscript"; } + if (/^nx\.json$/i.test(filename)) { return "nx"; } + if (/\.nxc$/i.test(filename)) { return "nxc"; } + if (/\.ob2$/i.test(filename)) { return "oberon"; } + if (/\.mm?$/i.test(filename)) { return "objc"; } + if (/\.pch$/i.test(filename)) { return "objc"; } + if (/\.x$/i.test(filename)) { return "objc"; } + if (/\.j$/i.test(filename)) { return "objj"; } + if (/\.sj$/i.test(filename)) { return "objj"; } + if (/\.ml$/i.test(filename)) { return "ocaml"; } + if (/\.mli$/i.test(filename)) { return "ocaml"; } + if (/\.eliom$/i.test(filename)) { return "ocaml"; } + if (/\.eliomi$/i.test(filename)) { return "ocaml"; } + if (/\.ml4$/i.test(filename)) { return "ocaml"; } + if (/\.mll$/i.test(filename)) { return "ocaml"; } + if (/\.mly$/i.test(filename)) { return "ocaml"; } + if (/\.octave$/i.test(filename)) { return "octave"; } + if (/\.octave_hist$/i.test(filename)) { return "octave"; } + if (/\.octaverc$/i.test(filename)) { return "octave"; } + if (/\.odin$/i.test(filename)) { return "odin"; } + if (/\.graffle$/i.test(filename)) { return "omnigraffle"; } + if (/\.gdiagramstyle$/i.test(filename)) { return "omnigraffle"; } + if (/\.gstencil$/i.test(filename)) { return "omnigraffle"; } + if (/\.gtemplate$/i.test(filename)) { return "omnigraffle"; } + if (/\.(o3|ogone)$/i.test(filename)) { return "ogone"; } + if (/\.ooc$/i.test(filename)) { return "ooc"; } + if (/\.opa$/i.test(filename)) { return "opa"; } + if (/^\+(CONTENTS|DESC|DISPLAY)$/.test(filename)) { return "openbsd"; } + if (/\.opencl$/i.test(filename)) { return "opencl"; } + if (/\.(p|abl)$/i.test(filename)) { return "progress"; } + if (/^(progress|openedge|abl)$/i.test(filename)) { return "progress"; } + if (/\.exr$/i.test(filename)) { return "openexr"; } + if (/\.(glslv?|gsh|gshader)$/i.test(filename)) { return "opengl"; } + if (/^(GLSL|GLslang)$/i.test(filename)) { return "opengl"; } + if (/\.(vert|vrx|vertex|vsh(ader)?)$/i.test(filename)) { return "vertex"; } + if (/\.(fra?g|fp|fsh|fshader)$/i.test(filename)) { return "vertex"; } + if (/\.odt$/i.test(filename)) { return "openoffice"; } + if (/\.ott$/i.test(filename)) { return "openoffice"; } + if (/\.fodt$/i.test(filename)) { return "openoffice"; } + if (/\.ods$/i.test(filename)) { return "openoffice"; } + if (/\.ots$/i.test(filename)) { return "openoffice"; } + if (/\.fods$/i.test(filename)) { return "openoffice"; } + if (/\.odp$/i.test(filename)) { return "openoffice"; } + if (/\.otp$/i.test(filename)) { return "openoffice"; } + if (/\.fodp$/i.test(filename)) { return "openoffice"; } + if (/\.odg$/i.test(filename)) { return "openoffice"; } + if (/\.otg$/i.test(filename)) { return "openoffice"; } + if (/\.fodg$/i.test(filename)) { return "openoffice"; } + if (/\.odf$/i.test(filename)) { return "openoffice"; } + if (/\.odb$/i.test(filename)) { return "openoffice"; } + if (/\.rego$/i.test(filename)) { return "openpolicy"; } + if (/\.scad$/i.test(filename)) { return "scad"; } + if (/\.jscad$/i.test(filename)) { return "scad"; } + if (/\.hlb$/i.test(filename)) { return "openvms"; } + if (/\.cld$/i.test(filename)) { return "openvms"; } + if (/\.com$/i.test(filename)) { return "openvms"; } + if (/\.ovpn$/i.test(filename)) { return "openvpn"; } + if (/^vdev\d+$/.test(filename)) { return "openzfs"; } + if (/\.org$/i.test(filename)) { return "org"; } + if (/\.dmg$/i.test(filename)) { return "osx"; } + if (/\.ox$/i.test(filename)) { return "ox"; } + if (/\.oxh$/i.test(filename)) { return "ox"; } + if (/\.oxo$/i.test(filename)) { return "ox"; } + if (/\.oxygene$/i.test(filename)) { return "oxygene"; } + if (/\.oz$/i.test(filename)) { return "oz"; } + if (/\.p4$/i.test(filename)) { return "p4"; } + if (/Cargo\.toml$/i.test(filename)) { return "package"; } + if (/Cargo\.lock$/i.test(filename)) { return "package"; } + if (/\.packages$/i.test(filename)) { return "package"; } + if (/^pubspec\.lock$/i.test(filename)) { return "package"; } + if (/^pubspec\.ya?ml$/i.test(filename)) { return "package"; } + if (/^paket\.(dependencies|lock|references|local|template)$/i.test(filename)) { return "package"; } + if (/\.pan$/i.test(filename)) { return "pan"; } + if (/\.psc$/i.test(filename)) { return "papyrus"; } + if (/\.parrot$/i.test(filename)) { return "parrot"; } + if (/\.pasm$/i.test(filename)) { return "parrot"; } + if (/\.pir$/i.test(filename)) { return "parrot"; } + if (/\.pas(cal)?$/i.test(filename)) { return "pascal"; } + if (/\.lpr$/i.test(filename)) { return "pascal"; } + if (/\.lfm$/i.test(filename)) { return "pascal"; } + if (/\.lps$/i.test(filename)) { return "pascal"; } + if (/\.lpi$/i.test(filename)) { return "pascal"; } + if (/\.lpk$/i.test(filename)) { return "pascal"; } + if (/\.lrs$/i.test(filename)) { return "pascal"; } + if (/\.lrt$/i.test(filename)) { return "pascal"; } + if (/\.or$/i.test(filename)) { return "pascal"; } + if (/\.ppu$/i.test(filename)) { return "pascal"; } + if (/\.patch$/i.test(filename)) { return "patch"; } + if (/^PATR(ONS|EON)\.md$/.test(filename)) { return "patreon"; } + if (/\.pwn$/i.test(filename)) { return "pawn"; } + if (/\.pcd$/i.test(filename)) { return "pcd"; } + if (/\.pdf$/i.test(filename)) { return "icon-file-pdf"; } + if (/\.(pegjs|peggy)$/i.test(filename)) { return "peg"; } + if (/\.pegcoffee$/i.test(filename)) { return "peg"; } + if (/\.p(er)?l$/i.test(filename)) { return "perl"; } + if (/\.al$/i.test(filename)) { return "perl"; } + if (/\.ph$/i.test(filename)) { return "perl"; } + if (/\.plx$/i.test(filename)) { return "perl"; } + if (/\.pm$/i.test(filename)) { return "perl"; } + if (/\.(psgi|xs)$/i.test(filename)) { return "perl"; } + if (/\.volt$/i.test(filename)) { return "phalcon"; } + if (/\.php([st\d]|_cs)?$/i.test(filename)) { return "php"; } + if (/^Phakefile/.test(filename)) { return "php"; } + if (/\.engine$/i.test(filename)) { return "php"; } + if (/\.phar$/i.test(filename)) { return "php"; } + if (/^phpunit\.xml$/i.test(filename)) { return "phpunit"; } + if (/^phoenix\.ex$/i.test(filename)) { return "phoenix"; } + if (/^phoenix\.[cm]?js$/i.test(filename)) { return "phoenix"; } + if (/^\.photorec\.cfg$/i.test(filename)) { return "photorec"; } + if (/^\.phraseapp\.ya?ml$/i.test(filename)) { return "phraseapp"; } + if (/\.(pkl|pickle)$/i.test(filename)) { return "pickle"; } + if (/\.p8$/i.test(filename)) { return "pico8"; } + if (/^pico\W8$/i.test(filename)) { return "pico8"; } + if (/\.l$/i.test(filename)) { return "picolisp"; } + if (/^Pipfile(\.lock)?$/i.test(filename)) { return "pipenv"; } + if (/\.pike$/i.test(filename)) { return "pike"; } + if (/\.pmod$/i.test(filename)) { return "pike"; } + if (/\.pine$/i.test(filename)) { return "pinescript"; } + if (/^platformio\.ini$/i.test(filename)) { return "platformio"; } + if (/\.pls$/i.test(filename)) { return "sql"; } + if (/\.pck$/i.test(filename)) { return "sql"; } + if (/\.pks$/i.test(filename)) { return "sql"; } + if (/\.plb$/i.test(filename)) { return "sql"; } + if (/\.plsql$/i.test(filename)) { return "sql"; } + if (/\.pkb$/i.test(filename)) { return "sql"; } + if (/^ecosystem\.conf(ig)?\./i.test(filename)) { return "pm2"; } + if (/^pnpm-(lock|workspace)\.ya?ml$/i.test(filename)) { return "pnpm"; } + if (/^pnpmfile\.js$/i.test(filename)) { return "pnpm"; } + if (/\.pod$/i.test(filename)) { return "pod"; } + if (/\.pogo$/i.test(filename)) { return "pogo"; } + if (/^polymer\.json$/i.test(filename)) { return "polymer"; } + if (/\.pony$/i.test(filename)) { return "pony"; } + if (/\.p(ost)?css$/i.test(filename)) { return "postcss"; } + if (/\.sss$/i.test(filename)) { return "postcss"; } + if (/\.postcssrc(\.([cm]?js|json|ya?ml))?$/i.test(filename)) { return "postcss"; } + if (/\bpostcss\.config\.[cm]?js$/i.test(filename)) { return "postcss"; } + if (/\.pgsql$/i.test(filename)) { return "pgsql"; } + if (/PL\/pgSQL$/i.test(filename)) { return "pgsql"; } + if (/\.ps$/i.test(filename)) { return "postscript"; } + if (/\.eps$/i.test(filename)) { return "postscript"; } + if (/\.pfa$/i.test(filename)) { return "postscript"; } + if (/\.bez$/i.test(filename)) { return "postscript"; } + if (/^fontinfo$/i.test(filename)) { return "postscript"; } + if (/\.a[fm]m$/i.test(filename)) { return "postscript"; } + if (/\/Resource\/[A-Z]\w+\/[^\/]+$|(^|\/)(cidfmap|xlatmap|PPI_CUtils|Pscript5Idiom)$/i.test(filename)) { return "postscript"; } + if (/\.eps[fi]$/i.test(filename)) { return "postscript"; } + if (/^Fontmap(\.GS)?$/i.test(filename)) { return "postscript"; } + if (/\.gsf$/i.test(filename)) { return "postscript"; } + if (/\.pov$/i.test(filename)) { return "povray"; } + if (/\.pbl$/i.test(filename)) { return "powerbuilder"; } + if (/\.pbt$/i.test(filename)) { return "powerbuilder"; } + if (/\.srw$/i.test(filename)) { return "powerbuilder"; } + if (/\.sru$/i.test(filename)) { return "powerbuilder"; } + if (/\.srp$/i.test(filename)) { return "powerbuilder"; } + if (/\.sra$/i.test(filename)) { return "powerbuilder"; } + if (/\.srj$/i.test(filename)) { return "powerbuilder"; } + if (/\.ps1$/i.test(filename)) { return "powershell"; } + if (/\.psd1$/i.test(filename)) { return "powershell"; } + if (/\.psm1$/i.test(filename)) { return "powershell"; } + if (/\.ps1xml$/i.test(filename)) { return "powershell"; } + if (/^\.pre-commit\b.*\.ya?ml$/i.test(filename)) { return "precommit"; } + if (/\.prettierrc(\.([cm]?js|json5?|ya?ml))?$|^prettier\.config\.[cm]?js$/i.test(filename)) { return "prettier"; } + if (/\.prettierignore$/i.test(filename)) { return "prettier"; } + if (/\.ppd$/i.test(filename)) { return "print"; } + if (/\.upp$/i.test(filename)) { return "print"; } + if (/\.joboptions$/i.test(filename)) { return "print"; } + if (/\.prisma$/i.test(filename)) { return "prisma"; } + if (/^project\.pros$/i.test(filename)) { return "pros"; } + if (/\.pde$/i.test(filename)) { return "processing"; } + if (/\.pro$/i.test(filename)) { return "prolog"; } + if (/\.prolog$/i.test(filename)) { return "prolog"; } + if (/\.yap$/i.test(filename)) { return "prolog"; } + if (/\.spin$/i.test(filename)) { return "propeller"; } + if (/\.proselintrc$/i.test(filename)) { return "proselint"; } + if (/^protractor\.(conf|config)\./i.test(filename)) { return "protractor"; } + if (/\.pug$/i.test(filename)) { return "pug"; } + if (/^\.pug-lintrc/i.test(filename)) { return "pug"; } + if (/^\.?pullapprove\.ya?ml$/i.test(filename)) { return "pullapprove"; } + if (/\.pp$/i.test(filename)) { return "puppet"; } + if (/\.epp$/i.test(filename)) { return "puppet"; } + if (/Modulefile$/i.test(filename)) { return "puppet"; } + if (/\.pure$/i.test(filename)) { return "pure"; } + if (/\.pb$/i.test(filename)) { return "purebasic"; } + if (/\.pbi$/i.test(filename)) { return "purebasic"; } + if (/\.purs$/i.test(filename)) { return "purescript"; } + if (/^((dev|docs?|tests?)[-_]requirements|requirements([-_](dev|docs?|tests?))?)\.(in|txt)$/i.test(filename)) { return "pypi"; } + if (/\.arr$/i.test(filename)) { return "pyret"; } + if (/^pytest\.ini$/.test(filename)) { return "pytest"; } + if (/\.py$/i.test(filename)) { return "python"; } + if (/\.ipy$/i.test(filename)) { return "python"; } + if (/\.isolate$/i.test(filename)) { return "python"; } + if (/\.pep$/i.test(filename)) { return "python"; } + if (/\.gyp$/i.test(filename)) { return "python"; } + if (/\.gypi$/i.test(filename)) { return "python"; } + if (/\.pyde$/i.test(filename)) { return "python"; } + if (/\.pyp$/i.test(filename)) { return "python"; } + if (/\.pyt$/i.test(filename)) { return "python"; } + if (/\.py3$/i.test(filename)) { return "python"; } + if (/\.pyi$/i.test(filename)) { return "python"; } + if (/\.pyw$/i.test(filename)) { return "python"; } + if (/\.pyz$/i.test(filename)) { return "python"; } + if (/\.tac$/i.test(filename)) { return "python"; } + if (/\.wsgi$/i.test(filename)) { return "python"; } + if (/\.xpy$/i.test(filename)) { return "python"; } + if (/\.smk$/i.test(filename)) { return "python"; } + if (/\.rpy$/i.test(filename)) { return "python"; } + if (/^py\.typed$/i.test(filename)) { return "python"; } + if (/\.?(pypirc|pythonrc|python-venv)$/i.test(filename)) { return "python"; } + if (/^(SConstruct|SConscript)$/.test(filename)) { return "python"; } + if (/^(Snakefile|WATCHLISTS)$/.test(filename)) { return "python"; } + if (/^wscript$/.test(filename)) { return "python"; } + if (/^\.pyup(\.ya?ml)?$/i.test(filename)) { return "pyup"; } + if (/\.q$/i.test(filename)) { return "kx"; } + if (/\.k$/i.test(filename)) { return "kx"; } + if (/\.qs$/i.test(filename)) { return "qsharp"; } + if (/qsharp$/i.test(filename)) { return "qsharp"; } + if (/\.qasm$/i.test(filename)) { return "qiskit"; } + if (/OpenQASM$/i.test(filename)) { return "qiskit"; } + if (/\.qvw$/i.test(filename)) { return "qlik"; } + if (/\.qvd$/i.test(filename)) { return "qlik"; } + if (/\.qml$/i.test(filename)) { return "qt"; } + if (/\.qmlproject$/i.test(filename)) { return "qt"; } + if (/\.qbs$/i.test(filename)) { return "qt"; } + if (/^(toolchain_)?installscript\.qs$/i.test(filename)) { return "qt"; } + if (/^quasar\.conf\.[cm]?js$/i.test(filename)) { return "quasar"; } + if (/\.(r|Rprofile|Rhistory|rsx|rd)$/i.test(filename)) { return "r"; } + if (/^(Rscript|splus|Rlang)$/i.test(filename)) { return "r"; } + if (/\.rkt$/i.test(filename)) { return "racket"; } + if (/\.rktd$/i.test(filename)) { return "racket"; } + if (/\.rktl$/i.test(filename)) { return "racket"; } + if (/\.scrbl$/i.test(filename)) { return "racket"; } + if (/\.pl6$/i.test(filename)) { return "perl6"; } + if (/\.[tp]6$|\.6pl$/i.test(filename)) { return "perl6"; } + if (/\.(pm6|p6m)$/i.test(filename)) { return "perl6"; } + if (/\.6pm$/i.test(filename)) { return "perl6"; } + if (/\.nqp$/i.test(filename)) { return "perl6"; } + if (/\.p6l$/i.test(filename)) { return "perl6"; } + if (/\.pod6$/i.test(filename)) { return "perl6"; } + if (/\.raku$/i.test(filename)) { return "perl6"; } + if (/\.rakumod$/i.test(filename)) { return "perl6"; } + if (/\.rakutest$/i.test(filename)) { return "perl6"; } + if (/^Rexfile$/.test(filename)) { return "perl6"; } + if (/\.raml$/i.test(filename)) { return "raml"; } + if (/^raphael(\.min|\.no-deps)*\.[cm]?js$/i.test(filename)) { return "raphael"; } + if (/\.rsc$/i.test(filename)) { return "rascal"; } + if (/^razzle\.config\./i.test(filename)) { return "razzle"; } + if (/^\.?readthedocs\.ya?ml$/i.test(filename)) { return "readthedocs"; } + if (/^\.rehyperc(\.([cm]?js|json|ya?ml))?$/i.test(filename)) { return "remark"; } + if (/^\.remarkrc(\.([cm]?js|json|ya?ml))?$/i.test(filename)) { return "remark"; } + if (/^\.retextrc(\.([cm]?js|json|ya?ml))?$/i.test(filename)) { return "remark"; } + if (/\.rehypeignore$/i.test(filename)) { return "remark"; } + if (/\.remarkignore$/i.test(filename)) { return "remark"; } + if (/\.retextignore$/i.test(filename)) { return "remark"; } + if (/\.r(est)?ql$/i.test(filename)) { return "restql"; } + if (/^restql\.ya?ml$/i.test(filename)) { return "restql"; } + if (/\.Rdata$/i.test(filename)) { return "rdata"; } + if (/\.rdb$/i.test(filename)) { return "rdata"; } + if (/\.rds$/i.test(filename)) { return "rdata"; } + if (/\.rdx$/i.test(filename)) { return "rdata"; } + if (/\.rdoc$/i.test(filename)) { return "rdoc"; } + if (/^react(-[^.]*)?\.[cm]?js$/i.test(filename)) { return "react"; } + if (/\.react\.[cm]?js$/i.test(filename)) { return "react"; } + if (/^README(\b|_)|^((un)?licen[sc]es?(\.mysql)?|(read|readme|click|delete|keep|test)\.me)(\.(md|txt))?$|\.(readme|1st|licen[sc]es?)$/i.test(filename)) { return "book"; } + if (/^(notice|bugs|changes|change[-_]?log([-._]?\d+)?|contribute|contributing|contributors|copy(ing|right)(\.regex)?|faq|fixes|hacking|history|install|maintainers|manifest|more\.stuff|notes|problems|projects|revision|terms|thanks|warnings)(_\w+)?$/i.test(filename)) { return "book"; } + if (/\b(changelog|copying(v?\d)?|install|notes?|notices?|read[-_]?me)\b|^licen[sc]es?[-._]/i.test(filename)) { return "book"; } + if (/^(news|release[-_.]?notes)([-_.]?[-\d]+)?$/i.test(filename)) { return "book"; } + if (/^zork\d\.(?!pre$|pur$)[a-z]+$/.test(filename)) { return "book"; } + if (/^zork\d\.doc$/.test(filename)) { return "book"; } + if (/^sudo[-_]lecture$/i.test(filename)) { return "book"; } + if (/\.changes$/i.test(filename)) { return "book"; } + if (/\.journal$/i.test(filename)) { return "book"; } + if (/\.faq$/i.test(filename)) { return "book"; } + if (/\.yo$/i.test(filename)) { return "book"; } + if (/\.rbbas$/i.test(filename)) { return "xojo"; } + if (/\.rbfrm$/i.test(filename)) { return "xojo"; } + if (/\.rbmnu$/i.test(filename)) { return "xojo"; } + if (/\.rbres$/i.test(filename)) { return "xojo"; } + if (/\.rbtbar$/i.test(filename)) { return "xojo"; } + if (/\.rbuistate$/i.test(filename)) { return "xojo"; } + if (/\.re$/i.test(filename)) { return "reason"; } + if (/\.rei$/i.test(filename)) { return "reason"; } + if (/\.reason$/i.test(filename)) { return "reasonstudios"; } + if (/\.rns$/i.test(filename)) { return "reasonstudios"; } + if (/\.rsn$/i.test(filename)) { return "reasonstudios"; } + if (/\.rx2$/i.test(filename)) { return "reasonstudios"; } + if (/\.sxt$/i.test(filename)) { return "reasonstudios"; } + if (/\.reb(ol)?$/i.test(filename)) { return "rebol"; } + if (/\.r2$/i.test(filename)) { return "rebol"; } + if (/\.r3$/i.test(filename)) { return "rebol"; } + if (/\.red$/i.test(filename)) { return "red"; } + if (/\.reds$/i.test(filename)) { return "red"; } + if (/\.rpm(macros)?$/i.test(filename)) { return "red-hat"; } + if (/\.spec$/i.test(filename)) { return "red-hat"; } + if (/\.reek$/i.test(filename)) { return "reek"; } + if (/\.regexp?$/i.test(filename)) { return "regex"; } + if (/(?!^renovate$)(\.|^)renovate(rc)?(\.json)?$/i.test(filename)) { return "renovate"; } + if (/^require([-.]min|dev)?\.[cm]?js$/i.test(filename)) { return "requirejs"; } + if (/\.resi$/i.test(filename)) { return "rescript"; } + if (/\.re?st(\.txt)?$/i.test(filename)) { return "rst"; } + if (/^re?st$/i.test(filename)) { return "rst"; } + if (/\.rexx?$/i.test(filename)) { return "rexx"; } + if (/\.pprx$/i.test(filename)) { return "rexx"; } + if (/\.3dm$/i.test(filename)) { return "rhino"; } + if (/\.rvb$/i.test(filename)) { return "rhino"; } + if (/^riemann\.config$/i.test(filename)) { return "clojure"; } + if (/\.ring$/i.test(filename)) { return "ring"; } + if (/\.tag$/i.test(filename)) { return "riot"; } + if (/\.(rmd|rmarkdown)$/i.test(filename)) { return "rmarkdown"; } + if (/\.robot$/i.test(filename)) { return "robot"; } + if (/^robots\.txt$/i.test(filename)) { return "robots"; } + if (/^rollup\.config\./i.test(filename)) { return "rollup"; } + if (/\.rg$/i.test(filename)) { return "clojure"; } + if (/\.rspec$/i.test(filename)) { return "rspec"; } + if (/\.rss$/i.test(filename)) { return "rss"; } + if (/\.rproj$/i.test(filename)) { return "rstudio"; } + if (/^rsyncd\.conf$/i.test(filename)) { return "rsync"; } + if (/\.(rb|ru|ruby|erb|god|mspec|pluginspec|podspec|rabl|rake|opal)$/i.test(filename)) { return "ruby"; } + if (/^\.?(irbrc|gemrc|pryrc|ruby-(gemset|version))$/i.test(filename)) { return "ruby"; } + if (/^(Appraisals|(Rake|App|[bB]uild|Cap|Danger|Deliver|Fast|Guard|Jar|Maven|Pod|Puppet|Snap)file(\.lock)?)$/.test(filename)) { return "ruby"; } + if (/\.(jbuilder|rbuild|rb[wx]|builder)$/i.test(filename)) { return "ruby"; } + if (/^rails$/.test(filename)) { return "ruby"; } + if (/\.watchr$/i.test(filename)) { return "ruby"; } + if (/^\.rubocop(_todo)?\.ya?ml$/i.test(filename)) { return "rubocop"; } + if (/\.gemspec$/i.test(filename)) { return "rubygems"; } + if (/\.rs$/i.test(filename)) { return "rust"; } + if (/\.rlib$/i.test(filename)) { return "rust"; } + if (/^rust-toolchain$/.test(filename)) { return "rust"; } + if (/\.sac$/i.test(filename)) { return "sac"; } + if (/\.san$/i.test(filename)) { return "san"; } + if (/\.webarchive$/i.test(filename)) { return "safari"; } + if (/\.sage$/i.test(filename)) { return "sage"; } + if (/\.sagews$/i.test(filename)) { return "sage"; } + if (/^\.sailsrc$/i.test(filename)) { return "sails"; } + if (/\.sls$/i.test(filename)) { return "saltstack"; } + if (/^Salt(State)?$/i.test(filename)) { return "saltstack"; } + if (/\.sb$/i.test(filename)) { return "sandbox"; } + if (/^(Sandbox Profile Language|SBPL)$/i.test(filename)) { return "sandbox"; } + if (/\.sas$/i.test(filename)) { return "sas"; } + if (/\.scss$/i.test(filename)) { return "sass"; } + if (/\.sass$/i.test(filename)) { return "sass"; } + if (/^\.sassrc(\.[cm]?js)?$/i.test(filename)) { return "sass"; } + if (/\.sbt$/i.test(filename)) { return "sbt"; } + if (/\.(sc|scala)$/i.test(filename)) { return "scala"; } + if (/\.kojo$/i.test(filename)) { return "scala"; } + if (/\.scm$/i.test(filename)) { return "scheme"; } + if (/\.sld$/i.test(filename)) { return "scheme"; } + if (/\.sps$/i.test(filename)) { return "scheme"; } + if (/\.xtm$/i.test(filename)) { return "scheme"; } + if (/\.scilla$/i.test(filename)) { return "scilla"; } + if (/\.sci$/i.test(filename)) { return "scilab"; } + if (/\.sce$/i.test(filename)) { return "scilab"; } + if (/\.tst$/i.test(filename)) { return "scilab"; } + if (/\.sb2$/i.test(filename)) { return "scratch"; } + if (/\.sb3$/i.test(filename)) { return "scratch"; } + if (/\.scrutinizer\.yml$/i.test(filename)) { return "scrutinizer"; } + if (/\.secret$/i.test(filename)) { return "secret"; } + if (/\.self$/i.test(filename)) { return "self"; } + if (/^\.releaserc(\.(ya?ml|[cm]?js|json))?$/i.test(filename)) { return "semrelease"; } + if (/^sencha(\.min)?\.[cm]?js$/i.test(filename)) { return "sencha"; } + if (/\.sentryclirc$/i.test(filename)) { return "sentry"; } + if (/\.csv$/i.test(filename)) { return "graph"; } + if (/\.(tab|tsv)$/i.test(filename)) { return "graph"; } + if (/\.dif$/i.test(filename)) { return "graph"; } + if (/\.slk$/i.test(filename)) { return "graph"; } + if (/\.prn$/i.test(filename)) { return "graph"; } + if (/(^|\.)serverless\.ya?ml$/i.test(filename)) { return "serverless"; } + if (/\.sfproj$/i.test(filename)) { return "sf"; } + if (/\.sequelizerc(\.[cm]?js|\.json)?$/i.test(filename)) { return "sequelize"; } + if (/\.(sgi|iris)$/i.test(filename)) { return "sgi"; } + if (/^shadow-cljs\.edn$/i.test(filename)) { return "shadowcljs"; } + if (/\.(sh|rc|bash|tool|install|command)$/i.test(filename)) { return "terminal"; } + if (/^(\.?bash(rc|[-_]?(profile|login|logout|history|prompt))|_osc|config|install-sh)$/i.test(filename)) { return "terminal"; } + if (/\.(ksh|mksh|pdksh)$/i.test(filename)) { return "terminal"; } + if (/\.sh-session$/i.test(filename)) { return "terminal"; } + if (/\.zsh(-theme|_history)?$|^\.?(antigen|zpreztorc|zlogin|zlogout|zprofile|zshenv|zshrc)$/i.test(filename)) { return "terminal"; } + if (/\.fish$|^\.fishrc$/i.test(filename)) { return "terminal"; } + if (/^\.?(login|profile)$/.test(filename)) { return "terminal"; } + if (/^\.?_?dir_?colors$/i.test(filename)) { return "terminal"; } + if (/\.inputrc$/i.test(filename)) { return "terminal"; } + if (/\.tmux$/i.test(filename)) { return "terminal"; } + if (/rc_Apple_Terminal$/i.test(filename)) { return "terminal"; } + if (/^(configure|config\.(guess|rpath|status|sub)|depcomp|libtool|compile)$/.test(filename)) { return "terminal"; } + if (/^\/(private\/)?etc\/([^\/]+\/)*(profile$|nanorc$|rc\.|csh\.)/i.test(filename)) { return "terminal"; } + if (/^\.?cshrc$/i.test(filename)) { return "terminal"; } + if (/\.profile$/i.test(filename)) { return "terminal"; } + if (/\.tcsh$/i.test(filename)) { return "terminal"; } + if (/\.csh$/i.test(filename)) { return "terminal"; } + if (/^\.?shellcheckrc$/i.test(filename)) { return "shellcheck"; } + if (/\.shen$/i.test(filename)) { return "shen"; } + if (/^shipitfile(\b.+)?\.[cm]?js$/i.test(filename)) { return "shipit"; } + if (/^shippable\.ya?ml$/i.test(filename)) { return "shippable"; } + if (/\.liquid$/i.test(filename)) { return "shopify"; } + if (/\.sieve$/i.test(filename)) { return "filter"; } + if (/\.sigils$/i.test(filename)) { return "sigils"; } + if (/\.ss$/i.test(filename)) { return "silverstripe"; } + if (/\.sketch$/i.test(filename)) { return "sketch"; } + if (/\.layout$/i.test(filename)) { return "sketchup-lo"; } + if (/\.skp$/i.test(filename)) { return "sketchup-mk"; } + if (/\.style$/i.test(filename)) { return "sketchup-sb"; } + if (/\.eskip$/i.test(filename)) { return "anchor"; } + if (/\.sl$/i.test(filename)) { return "slash"; } + if (/\.tpl$/i.test(filename)) { return "smarty"; } + if (/^snapcraft\.ya?ml$/i.test(filename)) { return "snapcraft"; } + if (/^snap\.svg([-.]min)?\.[cm]?js$/i.test(filename)) { return "snapsvg"; } + if (/\.snort$/i.test(filename)) { return "snort"; } + if (/^snowpack\.config\.([cm]?js|ts|json)$/i.test(filename)) { return "snowpack"; } + if (/\.snyk$/i.test(filename)) { return "snyk"; } + if (/^\.solidarity(\.json)?$/i.test(filename)) { return "solidarity"; } + if (/\.sol(idity)?$/i.test(filename)) { return "solidity"; } + if (/\.aes$/i.test(filename)) { return "sophia"; } + if (/\.rbi$/i.test(filename)) { return "sorbet"; } + if (/\.(sma|sp)$/i.test(filename)) { return "clojure"; } + if (/\.inc$/i.test(filename)) { return "clojure"; } + if (/\.spe$/i.test(filename)) { return "spacengine"; } + if (/(^|\.)spacemacs$/i.test(filename)) { return "spacemacs"; } + if (/\.sparql$/i.test(filename)) { return "sparql"; } + if (/\.rq$/i.test(filename)) { return "sparql"; } + if (/\.mixins?\.json$/i.test(filename)) { return "mixin"; } + if (/\.jsont$/i.test(filename)) { return "squarespace"; } + if (/^(json[-_]?t|json[-_\s]?template)$/i.test(filename)) { return "squarespace"; } + if (/\.sqf$/i.test(filename)) { return "sqf"; } + if (/\.hqf$/i.test(filename)) { return "sqf"; } + if (/\.(my)?sql$/i.test(filename)) { return "sql"; } + if (/\.ddl$/i.test(filename)) { return "sql"; } + if (/\.udf$/i.test(filename)) { return "sql"; } + if (/\.hql$/i.test(filename)) { return "sql"; } + if (/\.viw$/i.test(filename)) { return "sql"; } + if (/\.prc$/i.test(filename)) { return "sql"; } + if (/\.cql$/i.test(filename)) { return "sql"; } + if (/\.db2$/i.test(filename)) { return "sql"; } + if (/\.4gl$/i.test(filename)) { return "sql"; } + if (/\.per$/i.test(filename)) { return "sql"; } + if (/\.spsql$/i.test(filename)) { return "sql"; } + if (/\.sqlite$/i.test(filename)) { return "sqlite"; } + if (/\.sqlite3$/i.test(filename)) { return "sqlite"; } + if (/\.db$/i.test(filename)) { return "sqlite"; } + if (/\.db3$/i.test(filename)) { return "sqlite"; } + if (/\.nut$/i.test(filename)) { return "squirrel"; } + if (/\.gnut$/i.test(filename)) { return "squirrel"; } + if (/\.pub$/i.test(filename)) { return "key"; } + if (/\.pem$/i.test(filename)) { return "key"; } + if (/\.key$/i.test(filename)) { return "key"; } + if (/\.crt$/i.test(filename)) { return "key"; } + if (/\.der$/i.test(filename)) { return "key"; } + if (/^id_rsa/.test(filename)) { return "key"; } + if (/\.glyphs\d*License$/i.test(filename)) { return "key"; } + if (/^(master\.)?passwd$/i.test(filename)) { return "key"; } + if (/^git-credential-osxkeychain$/i.test(filename)) { return "key"; } + if (/\.ssh[\/\\][^\/\\\s]+$/.test(filename)) { return "key"; } + if (/\.stan$/i.test(filename)) { return "stan"; } + if (/^(\.bazelrc|bazel\.rc|bazel\.bazelrc)$/i.test(filename)) { return "bazel"; } + if (/^(BUILD|WORKSPACE)(\.[Bb][Aa][Zz][Ee][Ll])?$/.test(filename)) { return "bazel"; } + if (/\.(bazel|bzl|star)$/i.test(filename)) { return "bazel"; } + if (/^\.gazelcfg\.json$/i.test(filename)) { return "bazel"; } + if (/\.do$/i.test(filename)) { return "stata"; } + if (/\.ado$/i.test(filename)) { return "stata"; } + if (/\.doh$/i.test(filename)) { return "stata"; } + if (/\.ihlp$/i.test(filename)) { return "stata"; } + if (/\.mata$/i.test(filename)) { return "stata"; } + if (/\.matah$/i.test(filename)) { return "stata"; } + if (/\.sthlp$/i.test(filename)) { return "stata"; } + if (/\.stencil$/i.test(filename)) { return "stencil"; } + if (/^stdlib(-.+)?\.[cm]?js$/i.test(filename)) { return "stdlibjs"; } + if (/^stdlib(-.+)?\.[cm]?js\.gz$/i.test(filename)) { return "stdlibjs"; } + if (/^\.?stitches\.config\.([cm]?js|ts)$/i.test(filename)) { return "stitches"; } + if (/\.(story|stories)\.([cm]?js|jsx)$/i.test(filename)) { return "storybook"; } + if (/\.(story|stories)\.tsx?$/i.test(filename)) { return "storybook"; } + if (/\.story$/i.test(filename)) { return "storyist"; } + if (/\.strings$/i.test(filename)) { return "strings"; } + if (/\.st\.css$/i.test(filename)) { return "stylable"; } + if (/\.sc\.js$/i.test(filename)) { return "nailpolish"; } + if (/\.sc\.jsx$/i.test(filename)) { return "nailpolish"; } + if (/\.sc\.mjs$/i.test(filename)) { return "nailpolish"; } + if (/\.sc\.cjs$/i.test(filename)) { return "nailpolish"; } + if (/\.sc\.ts$/i.test(filename)) { return "nailpolish"; } + if (/\.sc\.tsx$/i.test(filename)) { return "nailpolish"; } + if (/^\.stylelintrc(\.|$)/i.test(filename)) { return "stylelint"; } + if (/^stylelint\.config\.[cm]?js$/i.test(filename)) { return "stylelint"; } + if (/\.stylelint(ignore|cache)$/i.test(filename)) { return "stylelint"; } + if (/^\.stylish-haskell\.ya?ml$/i.test(filename)) { return "stylishhaskell"; } + if (/\.(styl|stylus)$/i.test(filename)) { return "stylus"; } + if (/\.(stTheme|sublime[-_](build|commands|completions|keymap|macro|menu|mousemap|project|settings|theme|workspace|metrics|session|snippet))$/i.test(filename)) { return "sublime"; } + if (/\.sublime-syntax$/i.test(filename)) { return "sublime"; } + if (/\.scd$/i.test(filename)) { return "scd"; } + if (/\.svg$/i.test(filename)) { return "svg"; } + if (/^(openapi|swagger)\.(json|yaml|yml)$/i.test(filename)) { return "swagger"; } + if (/\.swagger-codegen-ignore$/i.test(filename)) { return "swagger"; } + if (/\.swift$/i.test(filename)) { return "swift"; } + if (/\.svelte$/i.test(filename)) { return "svelte"; } + if (/\.sv$/i.test(filename)) { return "sysverilog"; } + if (/\.svh$/i.test(filename)) { return "sysverilog"; } + if (/\.vh$/i.test(filename)) { return "sysverilog"; } + if (/\.toc$/i.test(filename)) { return "toc"; } + if (/^\.listing(\.\d+)?$/.test(filename)) { return "toc"; } + if (/\.?c?tags$/i.test(filename)) { return "tag"; } + if (/\.gemtags/i.test(filename)) { return "tag"; } + if (/\.hgtags$|^localtags$/i.test(filename)) { return "tag"; } + if (/^\.?VERSION$/i.test(filename)) { return "tag"; } + if (/^\.atom-socket-.+\.\d$/.test(filename)) { return "tag"; } + if (/\.pid$/i.test(filename)) { return "tag"; } + if (/\.tld$/i.test(filename)) { return "tag"; } + if (/(\.|^)sha(256|sum)?$/i.test(filename)) { return "tag"; } + if (/(\.|^)(check|ck|crc(32)?|md5|rmd160|sha(224|256|384|512|1|2|3)?)?(sums?|(?<=\w))$/i.test(filename)) { return "tag"; } + if (/^\.?tailwind(\.config)?\.([cm]?js|ts|coffee)$/i.test(filename)) { return "tailwind"; } + if (/\.tcl$/i.test(filename)) { return "tcl"; } + if (/\.adp$/i.test(filename)) { return "tcl"; } + if (/\.tm$/i.test(filename)) { return "tcl"; } + if (/\.exp$/i.test(filename)) { return "tcl"; } + if (/^\.tkcvs/i.test(filename)) { return "tcl"; } + if (/^\.tkdiffrc$/.test(filename)) { return "tcl"; } + if (/\.tea$/i.test(filename)) { return "coffee"; } + if (/\.tfignore$/i.test(filename)) { return "tfs"; } + if (/tfs$/i.test(filename)) { return "tfs"; } + if (/\.tl$/i.test(filename)) { return "telegram"; } + if (/\.xps$/i.test(filename)) { return "telegram"; } + if (/\.tt2?$/i.test(filename)) { return "tt"; } + if (/\.tt3$/i.test(filename)) { return "tt"; } + if (/\.tern-project$/i.test(filename)) { return "tern"; } + if (/\.tern-config$/i.test(filename)) { return "tern"; } + if (/\.tf(vars)?$/i.test(filename)) { return "terraform"; } + if (/\.tf\.json$/i.test(filename)) { return "terraform"; } + if (/\.tfstate(\.backup)?$/i.test(filename)) { return "terraform"; } + if (/^\.(terser|uglify)rc(\.\w+)?$/i.test(filename)) { return "terser"; } + if (/^\.testcaferc\.json$/i.test(filename)) { return "testcafe"; } + if (/([._-](spec|test)s?|^test[-_].*)\.((lit)?coffee|iced|cjsx)$/i.test(filename)) { return "test-coffee"; } + if (/([\\\/])t\1t?\d+(?:(?!\1).)+\.sh$|[._-](spec|test)s?\.sh$/i.test(filename)) { return "test-generic"; } + if (/\.bats$/i.test(filename)) { return "test-generic"; } + if (/\.test$/i.test(filename)) { return "test-generic"; } + if (/\.xspec$/i.test(filename)) { return "test-generic"; } + if (/(^test[._-].*|[._-](spec|test)s?)\.go$/i.test(filename)) { return "test-go"; } + if (/(^test[._-].*|[._-](spec|test)s?)\.(hsc?|c2hs|lhs)$/i.test(filename)) { return "test-hs"; } + if (/([._-](spec|test)s?|^test[._-].*)\.([_s]?js|js[bms]|es\d*)$/i.test(filename)) { return "test-js"; } + if (/([._-](spec|test)s?|^test[._-].*)\.mjs$/i.test(filename)) { return "test-js"; } + if (/([._-](spec|test)s?|^test[._-].*)\.cjs$/i.test(filename)) { return "test-js"; } + if (/([\\\/])(?:(spec|test)s?|t)\1(?:\d+[-.])+(?!-)[^.\\\/]+\.js$/i.test(filename)) { return "test-js"; } + if (/([\\\/])(?:(spec|test)s?|t)\1(?:\d+[-.])+(?!-)[^.\\\/]+\.mjs$/i.test(filename)) { return "test-js"; } + if (/([\\\/])(?:(spec|test)s?|t)\1(?:\d+[-.])+(?!-)[^.\\\/]+\.cjs$/i.test(filename)) { return "test-js"; } + if (/\.t$/i.test(filename)) { return "test-perl"; } + if (/^test[._-].*\.pl$/i.test(filename)) { return "test-perl"; } + if (/([\\\x2F])t\1(?:(?!\1).)+\.t$/i.test(filename)) { return "test-perl"; } + if (/([\\\x2F])(test|spec)s?(\1((?!\1).)+)*\1((?!\1).)+[._-](spec|test)s?\.p(er)?l$/i.test(filename)) { return "test-perl"; } + if (/(^test[._-].*|[._-](spec|test)s?)\.py(3|thon)?/i.test(filename)) { return "test-python"; } + if (/([\\\x2F])(test|spec)s?(\1((?!\1).)+)*\1(((?!\1).)+[._-](?:spec|test)s?|(?:spec|test)s?[._-].+)\.py(3|thon)?$/i.test(filename)) { return "test-python"; } + if (/(^test[._-].*|[._-](spec|test)s?)\.(jsx|react\.[cm]?js)$/.test(filename)) { return "test-react"; } + if (/([\\\/])(spec|test)s?\1(?:\d+[-.])+(?!-)[^.\\\/]+\.(jsx|react\.[cm]?js)$/i.test(filename)) { return "test-react"; } + if (/(^test[._-].*|[._-](spec|test)s?)\.(rb|ruby)$/i.test(filename)) { return "test-ruby"; } + if (/([\\\x2F])(t|tests?|specs?)\1+(?:(?!\1).)*\.(rb|ruby)$/.test(filename)) { return "test-ruby"; } + if (/(^test[-_].*|[._-](spec|test)s?)\.rs$/i.test(filename)) { return "test-rust"; } + if (/(^test[._-].*|[._-](spec|test)s?)\.ts$/i.test(filename)) { return "test-ts"; } + if (/(^test[._-].*|[._-](spec|test)s?)\.tsx$/i.test(filename)) { return "test-ts"; } + if (/([\\\/])(spec|test)s?\1(?:\d+[-.])+(?!-)[^.\\\/]+\.ts$/i.test(filename)) { return "test-ts"; } + if (/([\\\/])(spec|test)s?\1(?:\d+[-.])+(?!-)[^.\\\/]+\.tsx$/i.test(filename)) { return "test-ts"; } + if (/\.tex$/i.test(filename)) { return "tex"; } + if (/\.ltx$/i.test(filename)) { return "tex"; } + if (/\.aux$/i.test(filename)) { return "tex"; } + if (/\.sty$/i.test(filename)) { return "tex"; } + if (/\.dtx$/i.test(filename)) { return "tex"; } + if (/\.cls$/i.test(filename)) { return "tex"; } + if (/\.ins$/i.test(filename)) { return "tex"; } + if (/\.lbx$/i.test(filename)) { return "tex"; } + if (/\.mkiv$/i.test(filename)) { return "tex"; } + if (/\.mkvi$/i.test(filename)) { return "tex"; } + if (/\.mkii$/i.test(filename)) { return "tex"; } + if (/\.pgf$/i.test(filename)) { return "tex"; } + if (/\.tikz$/i.test(filename)) { return "tex"; } + if (/\.(texi(nfo)?|txi)$/i.test(filename)) { return "tex"; } + if (/^hyphen(ex)?\.(cs|den|det|fr|sv|us)$/.test(filename)) { return "tex"; } + if (/\.te?xt$/i.test(filename)) { return "icon-file-text"; } + if (/\.log$|^Terminal[-_\s]Saved[-_\s]Output$/i.test(filename)) { return "icon-file-text"; } + if (/\.git[\/\\]description$/.test(filename)) { return "icon-file-text"; } + if (/(\\|\/)share(?:\1misc)?\1(?:operator|mail\.(?:tilde)?help)$/.test(filename)) { return "icon-file-text"; } + if (/\.err$|\.std(err|out)$/i.test(filename)) { return "icon-file-text"; } + if (/\.rtf$/i.test(filename)) { return "icon-file-text"; } + if (/\.(i?nfo|lcov)$/i.test(filename)) { return "icon-file-text"; } + if (/\.abt$/i.test(filename)) { return "icon-file-text"; } + if (/\.ans$/i.test(filename)) { return "icon-file-text"; } + if (/\.brf$/i.test(filename)) { return "icon-file-text"; } + if (/\.dri$/i.test(filename)) { return "icon-file-text"; } + if (/\.etx$/i.test(filename)) { return "icon-file-text"; } + if (/\.irclog$/i.test(filename)) { return "icon-file-text"; } + if (/\.more$/i.test(filename)) { return "icon-file-text"; } + if (/\.msg$/i.test(filename)) { return "icon-file-text"; } + if (/\.no$/i.test(filename)) { return "icon-file-text"; } + if (/\.rpt$/i.test(filename)) { return "icon-file-text"; } + if (/\.srt$/i.test(filename)) { return "icon-file-text"; } + if (/\.sub$/i.test(filename)) { return "icon-file-text"; } + if (/^(bug-report|fdl|for-release|tests)$/i.test(filename)) { return "icon-file-text"; } + if (/\.(utxt|utf8)$/i.test(filename)) { return "icon-file-text"; } + if (/\.weechatlog$/i.test(filename)) { return "icon-file-text"; } + if (/\.uof$/i.test(filename)) { return "icon-file-text"; } + if (/\.uot$/i.test(filename)) { return "icon-file-text"; } + if (/\.uos$/i.test(filename)) { return "icon-file-text"; } + if (/\.uop$/i.test(filename)) { return "icon-file-text"; } + if (/\.textile$/i.test(filename)) { return "textile"; } + if (/\.(tm_properties|tmProperties)$/i.test(filename)) { return "textmate"; } + if (/\.tmcg$/i.test(filename)) { return "textmate"; } + if (/\.tmLanguage$/i.test(filename)) { return "textmate"; } + if (/\.tmCommand$/i.test(filename)) { return "textmate"; } + if (/\.tmPreferences$/i.test(filename)) { return "textmate"; } + if (/\.tmSnippet$/i.test(filename)) { return "textmate"; } + if (/\.tmTheme$/i.test(filename)) { return "textmate"; } + if (/\.tmMacro$/i.test(filename)) { return "textmate"; } + if (/\.yaml-tmlanguage$/i.test(filename)) { return "textmate"; } + if (/\.JSON-tmLanguage$/i.test(filename)) { return "textmate"; } + if (/\.theme$/i.test(filename)) { return "icon-paintcan"; } + if (/\.thor$/i.test(filename)) { return "thor"; } + if (/^Thorfile$/i.test(filename)) { return "thor"; } + if (/\.8x[pk](\.txt)?$/i.test(filename)) { return "calc"; } + if (/^Tiltfile$/i.test(filename)) { return "tilt"; } + if (/\.tipe$/i.test(filename)) { return "tipe"; } + if (/\.tla$/i.test(filename)) { return "tla"; } + if (/(\.|_|^)tmux\.conf$/i.test(filename)) { return "tmux"; } + if (/\.toml$/i.test(filename)) { return "toml"; } + if (/^\.tgitconfig$/i.test(filename)) { return "tortoise"; } + if (/^\.travis/i.test(filename)) { return "travis"; } + if (/^\.?truffle\.[cm]?js$/i.test(filename)) { return "truffle"; } + if (/\.tsx$/i.test(filename)) { return "tsx"; } + if (/\.ttcn3?$/i.test(filename)) { return "ttcn3"; } + if (/\.tu$/i.test(filename)) { return "turing"; } + if (/\.twig$/i.test(filename)) { return "twig"; } + if (/\.tw$/i.test(filename)) { return "twine"; } + if (/SugarCube$/i.test(filename)) { return "twine"; } + if (/\.txl$/i.test(filename)) { return "txl"; } + if (/^typedoc\.json$/i.test(filename)) { return "typedoc"; } + if (/\.ts$/i.test(filename)) { return "ts"; } + if (/^(ts|Type[-\s]*Script)$/i.test(filename)) { return "ts"; } + if (/^typings\.json$/i.test(filename)) { return "typings"; } + if (/\.(typoscript|tsconfig)$/i.test(filename)) { return "typo3"; } + if (/typo3$/i.test(filename)) { return "typo3"; } + if (/^uikit(\.min)?\.[cm]?js$/i.test(filename)) { return "uikit"; } + if (/\.unibeautifyrc$/i.test(filename)) { return "unibeautify"; } + if (/^unibeautify\.config\.[cm]?js$/i.test(filename)) { return "unibeautify"; } + if (/\.unibeautifyrc\.([cm]?js|json)$/i.test(filename)) { return "unibeautify"; } + if (/\.unibeautifyrc\.ya?ml$/i.test(filename)) { return "unibeautify"; } + if (/^(ArabicShaping|Bidi(Brackets|CharacterTest|Mirroring|Test)|Blocks|CJKRadicals|CaseFolding|CompositionExclusions|Derived(Age|Name|Numeric(Type|Values)|BidiClass|BinaryProperties|CombiningClass|CoreProperties|DecompositionType|EastAsianWidth|GeneralCategory|Joining(Group|Type)|LineBreak|NormalizationProps)|EastAsianWidth|EmojiSources|EquivalentUnifiedIdeograph|(Grapheme|Line|Sentence|Word)Break(Property|Test)|HangulSyllableType|Index|Indic(Positional|Syllabic)Category|Jamo|LineBreak|NameAliases|NamedSequences(Prov)?|NamesList|Normalization(Corrections|Test)|NushuSources|PropList|Property(Value)?Aliases|Script(Extension)?s|SpecialCasing|StandardizedVariants|TangutSources|Unihan(_\w+)?|U(nicode|Source)Data|VerticalOrientation)\.txt$/.test(filename)) { return "unicode"; } + if (/^NamesList\.(lst|txt)$/.test(filename)) { return "unicode"; } + if (/([\\\/])(UNIDATA|UCD)(?:\1(?:auxiliary|emoji|extracted|unihan))?\1(?!ReadMe)[^\\\/]+\.txt$/i.test(filename)) { return "unicode"; } + if (/\.units$/i.test(filename)) { return "scales"; } + if (/^units\.(lib|dat)$|^unittab$/i.test(filename)) { return "scales"; } + if (/^\.?units[-_]?history$/i.test(filename)) { return "scales"; } + if (/\.anim$/i.test(filename)) { return "unity3d"; } + if (/\.asset$/i.test(filename)) { return "unity3d"; } + if (/\.cubemap$/i.test(filename)) { return "unity3d"; } + if (/\.mat$/i.test(filename)) { return "unity3d"; } + if (/\.meta$/i.test(filename)) { return "unity3d"; } + if (/\.physics?Material(2D)?$/i.test(filename)) { return "unity3d"; } + if (/\.prefab$/i.test(filename)) { return "unity3d"; } + if (/\.unity$/i.test(filename)) { return "unity3d"; } + if (/\.unityproj$/i.test(filename)) { return "unity3d"; } + if (/\.unitypackage$/i.test(filename)) { return "unity3d"; } + if (/\.uno$/i.test(filename)) { return "uno"; } + if (/\.uc$/i.test(filename)) { return "unreal"; } + if (/\.uasset$/i.test(filename)) { return "unreal"; } + if (/\.ur$/i.test(filename)) { return "urweb"; } + if (/\.urs$/i.test(filename)) { return "urweb"; } + if (/\.v$/i.test(filename)) { return "v"; } + if (/\.vh$/i.test(filename)) { return "v"; } + if (/^([dv]8|v8[-_.][^.]*|mksnapshot|mkpeephole)$/i.test(filename)) { return "v8"; } + if (/^\.v8flags\b/.test(filename)) { return "v8"; } + if (/^\.c8rc(\.json)?$/i.test(filename)) { return "v8"; } + if (/^Vagrantfile$/i.test(filename)) { return "vagrant"; } + if (/\.vala$/i.test(filename)) { return "vala"; } + if (/\.vapi$/i.test(filename)) { return "vala"; } + if (/\.bsp$/i.test(filename)) { return "source"; } + if (/\.vpk$/i.test(filename)) { return "source"; } + if (/\.vtfx$/i.test(filename)) { return "source"; } + if (/\.vmt$/i.test(filename)) { return "source"; } + if (/\.vtf$/i.test(filename)) { return "source"; } + if (/\.vmf$/i.test(filename)) { return "source"; } + if (/\.res$/i.test(filename)) { return "source"; } + if (/\.vcl$/i.test(filename)) { return "varnish"; } + if (/\.vm$/i.test(filename)) { return "velocity"; } + if (/^(vercel|now)\.json$/i.test(filename)) { return "zeit"; } + if (/^\.(vercel|now)ignore$/i.test(filename)) { return "zeit"; } + if (/\.v$/i.test(filename)) { return "verilog"; } + if (/\.veo$/i.test(filename)) { return "verilog"; } + if (/\.vhdl$/i.test(filename)) { return "vhdl"; } + if (/\.vhf$/i.test(filename)) { return "vhdl"; } + if (/\.vhi$/i.test(filename)) { return "vhdl"; } + if (/\.vho$/i.test(filename)) { return "vhdl"; } + if (/\.vhs$/i.test(filename)) { return "vhdl"; } + if (/\.vht$/i.test(filename)) { return "vhdl"; } + if (/\.vhw$/i.test(filename)) { return "vhdl"; } + if (/\.3gpp?$/i.test(filename)) { return "video"; } + if (/\.(mp4|m4v|h264)$/i.test(filename)) { return "video"; } + if (/\.asx$/i.test(filename)) { return "video"; } + if (/\.avi$/i.test(filename)) { return "video"; } + if (/\.mov$/i.test(filename)) { return "video"; } + if (/\.mk(v|s|3d)$/i.test(filename)) { return "video"; } + if (/\.flv$/i.test(filename)) { return "video"; } + if (/\.webm$/i.test(filename)) { return "video"; } + if (/\.mpe?g$/i.test(filename)) { return "video"; } + if (/\.(asf|wmv)$/i.test(filename)) { return "video"; } + if (/\.(ogm|og[gv])$/i.test(filename)) { return "video"; } + if (/\.(vim|[gn]?vimrc)$/i.test(filename)) { return "vim"; } + if (/^[.gn_]?vim(rc|info)$/i.test(filename)) { return "vim"; } + if (/\.vmb$/i.test(filename)) { return "vim"; } + if (/(^|\.)n?exrc$/i.test(filename)) { return "vim"; } + if (/\.ova$/i.test(filename)) { return "virtualbox"; } + if (/\.ovf$/i.test(filename)) { return "virtualbox"; } + if (/\.vhd$/i.test(filename)) { return "virtualbox"; } + if (/\.vhdx$/i.test(filename)) { return "virtualbox"; } + if (/\.vbox_version$/i.test(filename)) { return "virtualbox"; } + if (/\.vbox(-prev)?$/i.test(filename)) { return "virtualbox"; } + if (/^vite\.config\.[jt]s$/i.test(filename)) { return "vite"; } + if (/\.(vba?|fr[mx]|bas)$/i.test(filename)) { return "vs"; } + if (/\.vbhtml$/i.test(filename)) { return "vs"; } + if (/\.vbs$/i.test(filename)) { return "vs"; } + if (/\.vsix$/i.test(filename)) { return "vs"; } + if (/\.csproj$/i.test(filename)) { return "vs"; } + if (/\.vbproj$/i.test(filename)) { return "vs"; } + if (/\.vcx?proj(\.[-\w]+)*$/i.test(filename)) { return "vs"; } + if (/\.vssettings(\.json)?$/i.test(filename)) { return "vs"; } + if (/\.vscodeignore(\.json)?$/i.test(filename)) { return "vs"; } + if (/\.vstemplate$/i.test(filename)) { return "vs"; } + if (/\.vsixmanifest$/i.test(filename)) { return "vs"; } + if (/\.code-workspace$/i.test(filename)) { return "vs"; } + if (/\.builds$/i.test(filename)) { return "vs"; } + if (/\.dbproj$/i.test(filename)) { return "vs"; } + if (/\.lsproj$/i.test(filename)) { return "vs"; } + if (/\.modelproj$/i.test(filename)) { return "vs"; } + if (/\.sln$/i.test(filename)) { return "vs"; } + if (/\.njsproj$/i.test(filename)) { return "vs"; } + if (/\.sqlproj$/i.test(filename)) { return "vs"; } + if (/\.vcxitems$/i.test(filename)) { return "vs"; } + if (/\.wmaproj$/i.test(filename)) { return "vs"; } + if (/\.vmdk$/i.test(filename)) { return "vmware"; } + if (/\.nvram$/i.test(filename)) { return "vmware"; } + if (/\.vmsd$/i.test(filename)) { return "vmware"; } + if (/\.vmsn$/i.test(filename)) { return "vmware"; } + if (/\.vmss$/i.test(filename)) { return "vmware"; } + if (/\.vmtm$/i.test(filename)) { return "vmware"; } + if (/\.vmx$/i.test(filename)) { return "vmware"; } + if (/\.vmxf$/i.test(filename)) { return "vmware"; } + if (/\.vrimg$/i.test(filename)) { return "vray"; } + if (/^\.vsts-ci\.ya?ml$/i.test(filename)) { return "vsts"; } + if (/\.vue$/i.test(filename)) { return "vue"; } + if (/^vue\.config\.[cm]?js$/i.test(filename)) { return "vue"; } + if (/\.vy$/i.test(filename)) { return "vyper"; } + if (/^w3c\.json$/i.test(filename)) { return "w3c"; } + if (/^\.wallaby\.[cm]?js$/i.test(filename)) { return "wallaby"; } + if (/\.walt$/i.test(filename)) { return "walt"; } + if (/\.wc3$/i.test(filename)) { return "warcraft3"; } + if (/\.jass$/i.test(filename)) { return "warcraft3"; } + if (/\.zn$/i.test(filename)) { return "warcraft3"; } + if (/\.watchmanconfig$|^watchman\.json$/i.test(filename)) { return "watchman"; } + if (/\.wdl$/i.test(filename)) { return "wdl"; } + if (/Workflow Description Language$/i.test(filename)) { return "wdl"; } + if (/\.was?t$/i.test(filename)) { return "wasm"; } + if (/\.wasm$/i.test(filename)) { return "wasm"; } + if (/^\.hintrc$/i.test(filename)) { return "webhint"; } + if (/\.webgl$/i.test(filename)) { return "webgl"; } + if (/\.owl$/i.test(filename)) { return "owl"; } + if (/(^|\.)webpack(file)?.*\.([jt]sx?|[cm]js|json|(lit)?coffee)$/i.test(filename)) { return "webpack"; } + if (/\.vtt$/i.test(filename)) { return "webvtt"; } + if (/^wgetrc$|\.wgetrc$/i.test(filename)) { return "wget"; } + if (/\.wget-hsts$/i.test(filename)) { return "wget"; } + if (/\.wxml$/i.test(filename)) { return "wechat"; } + if (/\.wxss$/i.test(filename)) { return "wechat"; } + if (/\.wy$/i.test(filename)) { return "wenyan"; } + if (/^wercker\.ya?ml$/i.test(filename)) { return "wercker"; } + if (/^windi\.config\.[tj]s$/i.test(filename)) { return "windi"; } + if (/\.bat$/i.test(filename)) { return "windows"; } + if (/\.cmd$/i.test(filename)) { return "windows"; } + if (/\.(exe|com|msi)$/i.test(filename)) { return "windows"; } + if (/\.reg$/i.test(filename)) { return "windows"; } + if (/\.xaml$/i.test(filename)) { return "winui"; } + if (/\.baml$/i.test(filename)) { return "winui"; } + if (/\.wixproj$/i.test(filename)) { return "wix"; } + if (/\.wixobj$/i.test(filename)) { return "wix"; } + if (/\.wxs$/i.test(filename)) { return "wix"; } + if (/\.wxi$/i.test(filename)) { return "wix"; } + if (/\.wxl$/i.test(filename)) { return "wix"; } + if (/\.wix$/i.test(filename)) { return "wix"; } + if (/\.wl$/i.test(filename)) { return "wolfram"; } + if (/\.wls$/i.test(filename)) { return "wolfram"; } + if (/\.wlt$/i.test(filename)) { return "wolfram"; } + if (/^workbox-config\.[cm]?js$/i.test(filename)) { return "workbox"; } + if (/\.wurst$/i.test(filename)) { return "wurst"; } + if (/WurstLang$/i.test(filename)) { return "wurst"; } + if (/\.x10$/i.test(filename)) { return "x10"; } + if (/xten$/i.test(filename)) { return "x10"; } + if (/\.X(authority|clients|initrc|inputrc|profile|resources|session-errors|screensaver)$/i.test(filename)) { return "x11"; } + if (/\.workbook$/i.test(filename)) { return "xamarin"; } + if (/\.xc$/i.test(filename)) { return "xmos"; } + if (/\.pbxproj$/i.test(filename)) { return "appstore"; } + if (/\.pbxuser$/i.test(filename)) { return "appstore"; } + if (/\.xccheckout$/i.test(filename)) { return "appstore"; } + if (/\.xcplugindata$/i.test(filename)) { return "appstore"; } + if (/\.xcrequiredplugins$/i.test(filename)) { return "appstore"; } + if (/\.xcscheme$/i.test(filename)) { return "appstore"; } + if (/\.xcscmblueprint$/i.test(filename)) { return "appstore"; } + if (/\.xcsettings$/i.test(filename)) { return "appstore"; } + if (/\.xcuserstate$/i.test(filename)) { return "appstore"; } + if (/\.xcworkspacedata$/i.test(filename)) { return "appstore"; } + if (/\.mode\dv3$/i.test(filename)) { return "appstore"; } + if (/^xmake\.lua$/i.test(filename)) { return "xmake"; } + if (/\.xojo_code$/i.test(filename)) { return "xojo"; } + if (/\.xojo_menu$/i.test(filename)) { return "xojo"; } + if (/\.xojo_report$/i.test(filename)) { return "xojo"; } + if (/\.xojo_script$/i.test(filename)) { return "xojo"; } + if (/\.xojo_toolbar$/i.test(filename)) { return "xojo"; } + if (/\.xojo_window$/i.test(filename)) { return "xojo"; } + if (/\.xsp-config$/i.test(filename)) { return "xpages"; } + if (/\.xsp\.metadata$/i.test(filename)) { return "xpages"; } + if (/\.xpl$/i.test(filename)) { return "xmos"; } + if (/\.xproc$/i.test(filename)) { return "xmos"; } + if (/\.(xquery|xq|xql|xqm|xqy)$/i.test(filename)) { return "sql"; } + if (/\.xtend$/i.test(filename)) { return "xtend"; } + if (/\.ya?ml$/i.test(filename)) { return "yaml"; } + if (/\.ya?ml\.mysql$/i.test(filename)) { return "yaml"; } + if (/\.ya?ml\.sed$/i.test(filename)) { return "yaml"; } + if (/^\.yamllint(\.ya?ml)?$/i.test(filename)) { return "yamllint"; } + if (/^\.yaspellerrc($|\.)|^\.yaspeller\.json$/i.test(filename)) { return "yandex"; } + if (/\.yang$/i.test(filename)) { return "yang"; } + if (/\.yara?$/i.test(filename)) { return "yara"; } + if (/^yarn\.lock$|\.yarn-metadata(\.json)?$/i.test(filename)) { return "yarn"; } + if (/\.(yarnrc|yarnclean|yarn-integrity)$/i.test(filename)) { return "yarn"; } + if (/\.yo-rc\.json$/i.test(filename)) { return "yeoman"; } + if (/\.yorick$/i.test(filename)) { return "yorick"; } + if (/^(yahoo-|yui)[^.]*\.[cm]?js$/i.test(filename)) { return "yui"; } + if (/\.zpr$/i.test(filename)) { return "zbrush"; } + if (/\.ztl$/i.test(filename)) { return "zbrush"; } + if (/\.zs$/i.test(filename)) { return "crafttweaker"; } + if (/^\.zsrc\.json$/i.test(filename)) { return "crafttweaker"; } + if (/\.zep$/i.test(filename)) { return "zephir"; } + if (/\.zig$/i.test(filename)) { return "zig"; } + if (/\.(zimpl|zmpl|zpl)$/i.test(filename)) { return "zimpl"; } + if (/\.zap$/i.test(filename)) { return "zork"; } + if (/\.xzap$/i.test(filename)) { return "zork"; } + if (/^s4\.errors$/i.test(filename)) { return "zork"; } + if (/\.zabstr?$/i.test(filename)) { return "zork"; } + if (/\.zil$/i.test(filename)) { return "zork"; } + if (/\.mud$/i.test(filename)) { return "zork"; } +} +module.exports = matchIcon; \ No newline at end of file diff --git a/src/assets/themes/chalkboard-ligatures.json b/src/assets/themes/chalkboard-ligatures.json new file mode 100644 index 000000000..c03b6a89f --- /dev/null +++ b/src/assets/themes/chalkboard-ligatures.json @@ -0,0 +1,44 @@ +{ + "colors": { + "r": 239, + "g": 240, + "b": 235, + "black": "#282a36", + "light_black": "#222430", + "grey": "#222430", + "red": "#ff5c57", + "green": "#5af78e", + "yellow": "#f3f99d", + "blue": "#57c7ff", + "magenta": "#ff6ac1", + "cyan": "#9aedfe", + "white": "#f1f1f0", + "brightBlack": "#686868", + "brightRed": "#ff5c57", + "brightGreen": "#5af78e", + "brightYellow": "#f3f99d", + "brightBlue": "#57c7ff", + "brightMagenta": "#ff6ac1", + "brightCyan": "#9aedfe", + "brightWhite": "#eff0eb" + }, + "cssvars": { + "font_main": "United Sans Medium", + "font_main_light": "United Sans Light" + }, + "terminal": { + "fontFamily": "Fira Code", + "cursorStyle": "block", + "foreground": "#eff0eb", + "background": "#282a36", + "cursor": "#97979b", + "cursorAccent": "#282a36", + "selection": "rgba(239,240,235,0.3)" + }, + "globe": { + "base": "#000000", + "marker": "#f3f99d", + "pin": "#eff0eb", + "satellite": "#ff5c57" + } +} diff --git a/src/assets/themes/chalkboard-notype.json b/src/assets/themes/chalkboard-notype.json new file mode 100644 index 000000000..7497f3721 --- /dev/null +++ b/src/assets/themes/chalkboard-notype.json @@ -0,0 +1,45 @@ +{ + "colors": { + "r": 239, + "g": 240, + "b": 235, + "black": "#282a36", + "light_black": "#222430", + "grey": "#222430", + "red": "#ff5c57", + "green": "#5af78e", + "yellow": "#f3f99d", + "blue": "#57c7ff", + "magenta": "#ff6ac1", + "cyan": "#9aedfe", + "white": "#f1f1f0", + "brightBlack": "#686868", + "brightRed": "#ff5c57", + "brightGreen": "#5af78e", + "brightYellow": "#f3f99d", + "brightBlue": "#57c7ff", + "brightMagenta": "#ff6ac1", + "brightCyan": "#9aedfe", + "brightWhite": "#eff0eb" + }, + "cssvars": { + "font_main": "United Sans Medium", + "font_main_light": "United Sans Light" + }, + "terminal": { + "fontFamily": "Fira Mono", + "cursorStyle": "block", + "foreground": "#eff0eb", + "background": "#282a36", + "cursor": "#97979b", + "cursorAccent": "#282a36", + "selection": "rgba(239,240,235,0.3)" + }, + "globe": { + "base": "#000000", + "marker": "#f3f99d", + "pin": "#eff0eb", + "satellite": "#ff5c57" + }, + "injectCSS": "section#filesystem{left:0;width:100vw}section#filesystem>h3.title,section#filesystem>div{width:100vw}section#keyboard{display:none;}" +} diff --git a/src/assets/themes/cyborg-focus.json b/src/assets/themes/cyborg-focus.json new file mode 100644 index 000000000..e7bb2bd76 --- /dev/null +++ b/src/assets/themes/cyborg-focus.json @@ -0,0 +1,45 @@ +{ + "colors": { + "r": 95, + "g": 215, + "b": 215, + "black": "#011f1f", + "light_black": "#0a3333", + "grey": "#034747", + "red": "#ad3e5a", + "green": "#3cd66f", + "yellow": "#c5d63c", + "blue": "#3c4dd6", + "magenta": "#ad31ad", + "cyan": "#31adad", + "white": "#a3c2c2", + "brightBlack": "#454585", + "brightRed": "#eb0954", + "brightGreen": "#85ff5c", + "brightYellow": "#ffff5c", + "brightBlue": "#5c5cff", + "brightMagenta": "#ff47d6", + "brightCyan": "#5cffff", + "brightWhite": "#e6fafa" + }, + "cssvars": { + "font_main": "United Sans Medium", + "font_main_light": "United Sans Light" + }, + "terminal": { + "fontFamily": "Fira Code", + "cursorStyle": "block", + "foreground": "#a3c2c2", + "background": "#0a3333", + "cursor": "#5cffff", + "cursorAccent": "#85ff5c", + "selection": "#ffff5c" + }, + "globe": { + "base": "#5c5cff", + "marker": "#eb0954", + "pin": "#85ff5c", + "satellite": "#ffff5c" + }, + "injectCSS": "section#keyboard{position:absolute;bottom:3%;right:0;width:17%}section#keyboard .keyboard_row{position:absolute;bottom:0;width:100%;text-align:center}section#keyboard .keyboard_key{position:absolute;bottom:0;display:none}section#keyboard .keyboard_key.active,section#keyboard .keyboard_key.blink{position:absolute;bottom:0;display:flex;color:#263a3a}section#keyboard div.keyboard_key#keyboard_spacebar{min-width:auto;width:80%;right:15%}section#keyboard div.keyboard_row#row_2 div.keyboard_key.keyboard_enter{display:none !important}section#keyboard div.keyboard_key[data-cmd^=\"ESCAPED\"]{left:0} section>h3.title:first-child{border-bottom:0}section>h3.title:first-child::before{border-left:0}section>h3.title:first-child::after{border-right:0} section#filesystem{position:absolute;top:auto;left:0;bottom:0;width:17%}section#filesystem>h3.title{width:17%}section#filesystem>h3.title:first-child>p{width:24%}section#filesystem>h3.title:first-child>p:last-child{position:static;right:auto;width:72%}section#filesystem div#fs_disp_container{width:100%}section#filesystem.list-view>div#fs_disp_container:not(.disks)>div>h4{font-size:0.8vh}section#filesystem.list-view>div#fs_disp_container:not(.disks)>div>h4:nth-of-type(1){display:none}section#filesystem.list-view>div#fs_disp_container:not(.disks)>div>h4:nth-of-type(2){width:25%}div#fs_space_bar{display:none} section#main_shell{height:94.5%;padding:0.37vh;position:absolute;top:2.5vh}ul#main_shell_tabs{margin-left:-0.37vh;margin-top:-0.35vh}ul#main_shell_tabs>li{padding-top:0.55vh;padding-bottom:0.2vh}.terminal .xterm-viewport{padding-bottom:0}.xterm{height:100%}.xterm .xterm-screen{top:0.8vh;left:0.4vh}" +} diff --git a/src/assets/themes/cyborg.json b/src/assets/themes/cyborg.json new file mode 100644 index 000000000..09c4907ad --- /dev/null +++ b/src/assets/themes/cyborg.json @@ -0,0 +1,45 @@ +{ + "colors": { + "r": 95, + "g": 215, + "b": 215, + "black": "#011f1f", + "light_black": "#0a3333", + "grey": "#034747", + "red": "#ad3e5a", + "green": "#3cd66f", + "yellow": "#c5d63c", + "blue": "#3c4dd6", + "magenta": "#ad31ad", + "cyan": "#31adad", + "white": "#a3c2c2", + "brightBlack": "#454585", + "brightRed": "#eb0954", + "brightGreen": "#85ff5c", + "brightYellow": "#ffff5c", + "brightBlue": "#5c5cff", + "brightMagenta": "#ff47d6", + "brightCyan": "#5cffff", + "brightWhite": "#e6fafa" + }, + "cssvars": { + "font_main": "United Sans Medium", + "font_main_light": "United Sans Light" + }, + "terminal": { + "fontFamily": "Fira Code", + "cursorStyle": "block", + "foreground": "#a3c2c2", + "background": "#0a3333", + "cursor": "#5cffff", + "cursorAccent": "#85ff5c", + "selection": "#ffff5c" + }, + "globe": { + "base": "#5c5cff", + "marker": "#eb0954", + "pin": "#85ff5c", + "satellite": "#ffff5c" + }, + "injectCSS": "" +} diff --git a/src/assets/themes/navy-disrupted.json b/src/assets/themes/navy-disrupted.json new file mode 100644 index 000000000..27deb19e8 --- /dev/null +++ b/src/assets/themes/navy-disrupted.json @@ -0,0 +1,45 @@ +{ + "colors": { + "r": 20, + "g": 119, + "b": 205, + "black": "#282a36", + "light_black": "#222430", + "grey": "#222430", + "red": "#ff5c57", + "green": "#5af78e", + "yellow": "#f3f99d", + "blue": "#57c7ff", + "magenta": "#ff6ac1", + "cyan": "#9aedfe", + "white": "#f1f1f0", + "brightBlack": "#686868", + "brightRed": "#ff5c57", + "brightGreen": "#5af78e", + "brightYellow": "#f3f99d", + "brightBlue": "#57c7ff", + "brightMagenta": "#ff6ac1", + "brightCyan": "#9aedfe", + "brightWhite": "#eff0eb" + }, + "cssvars": { + "font_main": "United Sans Medium", + "font_main_light": "United Sans Light" + }, + "terminal": { + "fontFamily": "Fira Mono", + "cursorStyle": "block", + "foreground": "#87b7cc", + "background": "#222430", + "cursor": "#87b7cc", + "cursorAccent": "#16739c", + "selection": "rgba(239,240,235,0.3)" + }, + "globe": { + "base": "#16739c", + "marker": "#ad0c0c", + "pin": "#04b80a", + "satellite": "#e3f213" + }, + "injectCSS": "section#main_shell{position:relative;left:29vh;}section#main_shell>h3.title{left:calc(29vh + 16.5vw)!important;}section#mod_column_right{left:28.5vh!important;}section#mod_column_right>h3.title{left:29.6vh!important;}div#mod_netstat_inner{height:6.85vh;padding-top:.5vh;}div#mod_globe_innercontainer{padding-bottom:.95vh;}div#mod_conninfo canvas{height:8vh!important;} @media (aspect-ratio:64/27) {section#mod_column_left > h3.title{left:1.6vh!important}section#mod_column_left{left:1vh !important}section#mod_column_right > h3.title{left:44vh!important}section#mod_column_right{left:43vh !important}section#main_shell > h3.title{left:37vw !important;width:60% !important}section#main_shell{left:41vh;width:60%}}" +} diff --git a/src/assets/themes/navy-notype.json b/src/assets/themes/navy-notype.json new file mode 100644 index 000000000..49c632c71 --- /dev/null +++ b/src/assets/themes/navy-notype.json @@ -0,0 +1,45 @@ +{ + "colors": { + "r": 20, + "g": 119, + "b": 205, + "black": "#282a36", + "light_black": "#222430", + "grey": "#222430", + "red": "#ff5c57", + "green": "#5af78e", + "yellow": "#f3f99d", + "blue": "#57c7ff", + "magenta": "#ff6ac1", + "cyan": "#9aedfe", + "white": "#f1f1f0", + "brightBlack": "#686868", + "brightRed": "#ff5c57", + "brightGreen": "#5af78e", + "brightYellow": "#f3f99d", + "brightBlue": "#57c7ff", + "brightMagenta": "#ff6ac1", + "brightCyan": "#9aedfe", + "brightWhite": "#eff0eb" + }, + "cssvars": { + "font_main": "United Sans Medium", + "font_main_light": "United Sans Light" + }, + "terminal": { + "fontFamily": "Fira Mono", + "cursorStyle": "block", + "foreground": "#87b7cc", + "background": "#222430", + "cursor": "#87b7cc", + "cursorAccent": "#16739c", + "selection": "rgba(239,240,235,0.3)" + }, + "globe": { + "base": "#16739c", + "marker": "#ad0c0c", + "pin": "#04b80a", + "satellite": "#e3f213" + }, + "injectCSS": "section#filesystem{left:0;width:100vw}section#filesystem>h3.title,section#filesystem>div{width:100vw}section#keyboard{display:none;}" +} diff --git a/src/assets/themes/navy.json b/src/assets/themes/navy.json new file mode 100644 index 000000000..70d5e2ece --- /dev/null +++ b/src/assets/themes/navy.json @@ -0,0 +1,44 @@ +{ + "colors": { + "r": 20, + "g": 119, + "b": 205, + "black": "#282a36", + "light_black": "#222430", + "grey": "#222430", + "red": "#ff5c57", + "green": "#5af78e", + "yellow": "#f3f99d", + "blue": "#57c7ff", + "magenta": "#ff6ac1", + "cyan": "#9aedfe", + "white": "#f1f1f0", + "brightBlack": "#686868", + "brightRed": "#ff5c57", + "brightGreen": "#5af78e", + "brightYellow": "#f3f99d", + "brightBlue": "#57c7ff", + "brightMagenta": "#ff6ac1", + "brightCyan": "#9aedfe", + "brightWhite": "#eff0eb" + }, + "cssvars": { + "font_main": "United Sans Medium", + "font_main_light": "United Sans Light" + }, + "terminal": { + "fontFamily": "Fira Mono", + "cursorStyle": "block", + "foreground": "#87b7cc", + "background": "#222430", + "cursor": "#87b7cc", + "cursorAccent": "#16739c", + "selection": "rgba(239,240,235,0.3)" + }, + "globe": { + "base": "#16739c", + "marker": "#ad0c0c", + "pin": "#04b80a", + "satellite": "#e3f213" + } +} diff --git a/src/assets/themes/tron-colorfilter.json b/src/assets/themes/tron-colorfilter.json new file mode 100644 index 000000000..8407df980 --- /dev/null +++ b/src/assets/themes/tron-colorfilter.json @@ -0,0 +1,34 @@ +{ + "colors": { + "r": 170, + "g": 207, + "b": 209, + "black": "#000000", + "light_black": "#05080d", + "grey": "#262828" + }, + "cssvars": { + "font_main": "United Sans Medium", + "font_main_light": "United Sans Light" + }, + "terminal": { + "fontFamily": "Fira Mono", + "cursorStyle": "block", + "foreground": "#aacfd1", + "background": "#05080d", + "cursor": "#aacfd1", + "cursorAccent": "#aacfd1", + "selection": "rgba(170,207,209,0.3)", + "colorFilter": [ + "rotate(180)", + "saturate(0.5)", + "mix(0.7)" + ] + }, + "globe": { + "base": "#000000", + "marker": "#aacfd1", + "pin": "#aacfd1", + "satellite": "#aacfd1" + } +} diff --git a/src/assets/vendor/encom-globe.js b/src/assets/vendor/encom-globe.js index 57b1fce44..dae37f3cf 100644 --- a/src/assets/vendor/encom-globe.js +++ b/src/assets/vendor/encom-globe.js @@ -23055,8 +23055,6 @@ THREE.ShaderLib = { THREE.WebGLRenderer = function ( parameters ) { - console.log( 'THREE.WebGLRenderer', THREE.REVISION ); - parameters = parameters || {}; var _canvas = parameters.canvas !== undefined ? parameters.canvas : document.createElement( 'canvas' ), @@ -28694,7 +28692,7 @@ THREE.WebGLRenderer = function ( parameters ) { if ( _gl.getProgramInfoLog( program ) !== '' ) { - console.error( 'gl.getProgramInfoLog()', _gl.getProgramInfoLog( program ) ); + // console.error( 'gl.getProgramInfoLog()', _gl.getProgramInfoLog( program ) ); } diff --git a/src/classes/audiofx.class.js b/src/classes/audiofx.class.js index 1517db842..83fb51208 100644 --- a/src/classes/audiofx.class.js +++ b/src/classes/audiofx.class.js @@ -4,50 +4,53 @@ class AudioManager { const {Howl, Howler} = require("howler"); if (window.settings.audio === true) { - this.beep1 = new Howl({ - src: [path.join(__dirname, "assets", "audio", "beep1.wav")] + if(window.settings.disableFeedbackAudio === false) { + this.stdout = new Howl({ + src: [path.join(__dirname, "assets", "audio", "stdout.wav")], + volume: 0.4 + }); + this.stdin = new Howl({ + src: [path.join(__dirname, "assets", "audio", "stdin.wav")], + volume: 0.4 + }); + this.folder = new Howl({ + src: [path.join(__dirname, "assets", "audio", "folder.wav")] + }); + this.granted = new Howl({ + src: [path.join(__dirname, "assets", "audio", "granted.wav")] + }); + } + this.keyboard = new Howl({ + src: [path.join(__dirname, "assets", "audio", "keyboard.wav")] }); - this.beep2 = new Howl({ - src: [path.join(__dirname, "assets", "audio", "beep2.wav")] + this.theme = new Howl({ + src: [path.join(__dirname, "assets", "audio", "theme.wav")] }); - this.beep3 = new Howl({ - src: [path.join(__dirname, "assets", "audio", "beep3.wav")], - volume: 0.6 + this.expand = new Howl({ + src: [path.join(__dirname, "assets", "audio", "expand.wav")] }); - this.beep4 = new Howl({ - src: [path.join(__dirname, "assets", "audio", "beep4.wav")] + this.panels = new Howl({ + src: [path.join(__dirname, "assets", "audio", "panels.wav")] }); - this.dismiss = new Howl({ - src: [path.join(__dirname, "assets", "audio", "dismiss.wav")] + this.scan = new Howl({ + src: [path.join(__dirname, "assets", "audio", "scan.wav")] }); - this.alarm = new Howl({ - src: [path.join(__dirname, "assets", "audio", "alarm.wav")] + this.denied = new Howl({ + src: [path.join(__dirname, "assets", "audio", "denied.wav")] }); this.info = new Howl({ src: [path.join(__dirname, "assets", "audio", "info.wav")] }); - } else { - Howler.volume(0.0); - } - - if (window.settings.audio === true && window.settings.extraAudio === true) { - this.beep5 = new Howl({ - src: [path.join(__dirname, "assets", "audio", "beep5.wav")] - }); - this.intro = new Howl({ - src: [path.join(__dirname, "assets", "audio", "intro.wav")] - }); - this.scan = new Howl({ - src: [path.join(__dirname, "assets", "audio", "scan.wav")] - }); - this.ping = new Howl({ - src: [path.join(__dirname, "assets", "audio", "ping.wav")], - volume: 0.02 + this.alarm = new Howl({ + src: [path.join(__dirname, "assets", "audio", "alarm.wav")] }); - this.pingFailed = new Howl({ - src: [path.join(__dirname, "assets", "audio", "pingFailed.wav")], - volume: 0.02 + this.error = new Howl({ + src: [path.join(__dirname, "assets", "audio", "error.wav")] }); + + Howler.volume(window.settings.audioVolume); + } else { + Howler.volume(0.0); } // Return a proxy to avoid errors if sounds aren't loaded diff --git a/src/classes/clipboardButtons.class.js b/src/classes/clipboardButtons.class.js deleted file mode 100644 index 86aa1b6f7..000000000 --- a/src/classes/clipboardButtons.class.js +++ /dev/null @@ -1,28 +0,0 @@ -class ClipboardButtons { - constructor(parentId) { - if (!parentId) throw "Missing parameters"; - - // Create DOM - this.parent = document.getElementById(parentId); - this._element = document.createElement("div"); - this._element.setAttribute("id", "mod_clipboardButtons"); - this._element.innerHTML = `
-

CLIPBOARD ACCESS

-
COPY
-
PASTE
-
`; - - this.parent.append(this._element); - - document.querySelector("div#mod_clipboardButtons_inner > div:nth-child(2)").addEventListener("click", e => { - window.term[window.currentTerm].clipboard.copy(); - }); - document.querySelector("div#mod_clipboardButtons_inner > div:last-child").addEventListener("click", e => { - window.term[window.currentTerm].clipboard.paste(); - }); - } -} - -module.exports = { - ClipboardButtons -}; diff --git a/src/classes/clock.class.js b/src/classes/clock.class.js index 418809b87..68bc80ea3 100644 --- a/src/classes/clock.class.js +++ b/src/classes/clock.class.js @@ -2,9 +2,12 @@ class Clock { constructor(parentId) { if (!parentId) throw "Missing parameters"; + // Load settings + this.twelveHours = (window.settings.clockHours === 12); + // Create DOM this.parent = document.getElementById(parentId); - this.parent.innerHTML += `
+ this.parent.innerHTML += `

??:??:??

`; @@ -19,8 +22,11 @@ class Clock { let time = new Date(); let array = [time.getHours(), time.getMinutes(), time.getSeconds()]; - if (this.lastTime.getMinutes() !== array[1]) { - window.audioManager.beep5.play(); + // 12-hour mode translation + if (this.twelveHours) { + this.ampm = (array[0] >= 12) ? "PM" : "AM"; + if (array[0] > 12) array[0] = array[0] - 12; + if (array[0] === 0) array[0] = 12; } array.forEach((e, i) => { @@ -31,10 +37,13 @@ class Clock { let clockString = `${array[0]}:${array[1]}:${array[2]}`; array = clockString.match(/.{1}/g); clockString = ""; - array.forEach((e) => { + array.forEach(e => { if (e === ":") clockString += ""+e+""; else clockString += ""+e+""; }); + + if (this.twelveHours) clockString += `${this.ampm}`; + document.getElementById("mod_clock_text").innerHTML = clockString; this.lastTime = time; } diff --git a/src/classes/conninfo.class.js b/src/classes/conninfo.class.js index 7c081f552..f9d74338a 100644 --- a/src/classes/conninfo.class.js +++ b/src/classes/conninfo.class.js @@ -14,6 +14,7 @@ class Conninfo {
`; + this.current = document.querySelector("#mod_conninfo_innercontainer > h1 > i"); this.total = document.querySelector("#mod_conninfo_innercontainer > h2 > i"); this._pb = require("pretty-bytes"); @@ -80,10 +81,11 @@ class Conninfo { this.series[0].maxValue = max1; } - this.series[0].append(time, data.tx_sec/125000); - this.series[1].append(time, -data.rx_sec/125000); + this.series[0].append(time, data[0].tx_sec/125000); + this.series[1].append(time, -data[0].rx_sec/125000); - this.total.innerText = `${this._pb(data.tx)} OUT, ${this._pb(data.rx)} IN`.toUpperCase(); + this.total.innerText = `${this._pb(data[0].tx_bytes)} OUT, ${this._pb(data[0].rx_bytes)} IN`.toUpperCase(); + this.current.innerText = "UP " + parseFloat(data[0].tx_sec/125000).toFixed(2) + " DOWN " + parseFloat(data[0].rx_sec/125000).toFixed(2); }); } } diff --git a/src/classes/cpuinfo.class.js b/src/classes/cpuinfo.class.js index 5bfaeba58..b3425cf4e 100644 --- a/src/classes/cpuinfo.class.js +++ b/src/classes/cpuinfo.class.js @@ -14,7 +14,7 @@ class Cpuinfo { this.series = []; this.charts = []; - window.si.cpu().then((data) => { + window.si.cpu().then(data => { let divide = Math.floor(data.cores/2); this.divide = divide; @@ -41,7 +41,7 @@ class Cpuinfo { ${(process.platform === "win32") ? data.cores : "--°C"}
-

MIN
+

SPD
--GHz

@@ -97,9 +97,12 @@ class Cpuinfo { } // Init updater + this.updatingCPUload = false; this.updateCPUload(); if (process.platform !== "win32") {this.updateCPUtemp();} + this.updatingCPUspeed = false; this.updateCPUspeed(); + this.updatingCPUtasks = false; this.updateCPUtasks(); this.loadUpdater = setInterval(() => { this.updateCPUload(); @@ -118,7 +121,9 @@ class Cpuinfo { }); } updateCPUload() { - window.si.currentLoad().then((data) => { + if (this.updatingCPUload) return; + this.updatingCPUload = true; + window.si.currentLoad().then(data => { let average = [[], []]; if (!data.cpus) return; // Prevent memleak in rare case where systeminformation takes extra time to retrieve CPU info (see github issue #216) @@ -141,10 +146,11 @@ class Cpuinfo { // Fail silently, DOM element is probably getting refreshed (new theme, etc) } }); + this.updatingCPUload = false; }); } updateCPUtemp() { - window.si.cpuTemperature().then((data) => { + window.si.cpuTemperature().then(data => { try { document.getElementById("mod_cpuinfo_temp").innerText = `${data.max}°C`; } catch(e) { @@ -153,22 +159,28 @@ class Cpuinfo { }); } updateCPUspeed() { - window.si.cpuCurrentspeed().then((data) => { + if (this.updatingCPUspeed) return; + this.updatingCPUspeed = true + window.si.cpu().then(data => { try { - document.getElementById("mod_cpuinfo_speed_min").innerText = `${data.min}GHz`; - document.getElementById("mod_cpuinfo_speed_max").innerText = `${data.max}GHz`; + document.getElementById("mod_cpuinfo_speed_min").innerText = `${data.speed}GHz`; + document.getElementById("mod_cpuinfo_speed_max").innerText = `${data.speedMax}GHz`; } catch(e) { // See above notice } + this.updatingCPUspeed = false; }); } updateCPUtasks() { - window.si.processes().then((data) => { + if (this.updatingCPUtasks) return; + this.updatingCPUtasks = true; + window.si.processes().then(data => { try { document.getElementById("mod_cpuinfo_tasks").innerText = `${data.all}`; } catch(e) { // See above notice } + this.updatingCPUtasks = false; }); } } diff --git a/src/classes/docReader.class.js b/src/classes/docReader.class.js new file mode 100644 index 000000000..bb94b4edf --- /dev/null +++ b/src/classes/docReader.class.js @@ -0,0 +1,96 @@ +class DocReader { + constructor(opts) { + pdfjsLib.GlobalWorkerOptions.workerSrc = './node_modules/pdfjs-dist/build/pdf.worker.js'; + const modalElementId = "modal_" + opts.modalId; + const path = opts.path; + const scale = 1; + const canvas = document.getElementById(modalElementId).querySelector(".pdf_canvas"); + const context = canvas.getContext('2d'); + const loadingTask = pdfjsLib.getDocument(path); + let pdfDoc = null, + pageNum = 1, + pageRendering = false, + pageNumPending = null, + zoom = 100 + + this.renderPage = (num) => { + pageRendering = true; + loadingTask.promise.then(function (pdf) { + pdfDoc.getPage(num).then(function (page) { + const viewport = page.getViewport({ scale: scale }); + canvas.height = viewport.height; + canvas.width = viewport.width; + + const renderContext = { + canvasContext: context, + viewport: viewport, + }; + const renderTask = page.render(renderContext); + renderTask.promise.then(function () { + pageRendering = false; + if (pageNumPending !== null) { + renderPage(pageNumPending); + pageNumPending = null; + } + }); + }); + }); + document.getElementById(modalElementId).querySelector(".page_num").textContent = num; + } + + this.queueRenderPage = (num) => { + if (pageRendering) { + pageNumPending = num; + } else { + this.renderPage(num); + } + } + + this.onPrevPage = () => { + if (pageNum <= 1) { + return; + } + pageNum--; + this.queueRenderPage(pageNum); + } + + this.onNextPage = () => { + if (pageNum >= pdfDoc.numPages) { + return; + } + pageNum++; + this.queueRenderPage(pageNum); + } + + this.zoomIn = () => { + if (zoom >= 200) { + return; + } + zoom = zoom + 10; + canvas.style.zoom = zoom + "%"; + } + + this.zoomOut = () => { + if (zoom <= 50) { + return; + } + zoom = zoom - 10; + canvas.style.zoom = zoom + "%"; + } + + document.getElementById(modalElementId).querySelector(".previous_page").addEventListener('click', this.onPrevPage); + document.getElementById(modalElementId).querySelector(".next_page").addEventListener('click', this.onNextPage); + document.getElementById(modalElementId).querySelector(".zoom_in").addEventListener('click', this.zoomIn); + document.getElementById(modalElementId).querySelector(".zoom_out").addEventListener('click', this.zoomOut); + + pdfjsLib.getDocument(path).promise.then((pdfDoc_) => { + pdfDoc = pdfDoc_; + document.getElementById(modalElementId).querySelector(".page_count").textContent = pdfDoc.numPages; + this.renderPage(pageNum); + }); + } +} + +module.exports = { + DocReader +}; \ No newline at end of file diff --git a/src/classes/filesystem.class.js b/src/classes/filesystem.class.js index 69127c994..b02847f79 100644 --- a/src/classes/filesystem.class.js +++ b/src/classes/filesystem.class.js @@ -5,23 +5,36 @@ class FilesystemDisplay { const fs = require("fs"); const path = require("path"); this.cwd = []; + this.cwd_path = null; this.iconcolor = `rgb(${window.theme.r}, ${window.theme.g}, ${window.theme.b})`; - this.icons = { - showDisks: ``, - up: ``, - dir: ``, - symlink: ``, - file: ``, - other: ``, - disk: ``, - rom: ``, - usb: ``, - edex: { - theme: ``, - themesDir: ``, - kblayout: ``, - kblayoutsDir: ``, - settings: `` + this._formatBytes = (a,b) => {if(0==a)return"0 Bytes";var c=1024,d=b||2,e=["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"],f=Math.floor(Math.log(a)/Math.log(c));return parseFloat((a/Math.pow(c,f)).toFixed(d))+" "+e[f]}; + this.fileIconsMatcher = require("./assets/misc/file-icons-match.js"); + this.icons = require("./assets/icons/file-icons.json"); + this.edexIcons = { + theme: { + width: 24, + height: 24, + svg: '' + }, + themesDir: { + width: 24, + height: 24, + svg: `` + }, + kblayout: { + width: 24, + height: 24, + svg: '' + }, + kblayoutsDir: { + width: 24, + height: 24, + svg: `` + }, + settings: { + width: 24, + height: 24, + svg: '' } }; @@ -44,6 +57,7 @@ class FilesystemDisplay { this.failed = false; this._noTracking = false; this._runNextTick = false; + this._reading = false; this._timer = setInterval(() => { if (this._runNextTick === true) { @@ -52,6 +66,25 @@ class FilesystemDisplay { } }, 1000); + this._asyncFSwrapper = new Proxy(fs, { + get: function(fs, prop) { + if (prop in fs) { + return function(...args) { + return new Promise((resolve, reject) => { + fs[prop](...args, (err, d) => { + if (typeof err !== "undefined" && err !== null) reject(err); + if (typeof d !== "undefined") resolve(d); + if (typeof d === "undefined" && typeof err === "undefined") resolve(); + }); + }); + } + } + }, + set: function() { + return false; + } + }); + this.setFailedState = () => { this.failed = true; container.innerHTML = ` @@ -60,10 +93,17 @@ class FilesystemDisplay { }; this.followTab = () => { + // Don't follow tabs when running in detached mode, see #432 + if (this._noTracking) return false; + let num = window.currentTerm; - window.term[num].oncwdchange = (cwd) => { - if (cwd && window.currentTerm === num) { + window.term[num].oncwdchange = cwd => { + // See #501 + if (this._noTracking) return false; + + if (cwd && cwd !== this.cwd_path && window.currentTerm === num) { + this.cwd_path = cwd; if (this._fsWatcher) { this._fsWatcher.close(); } @@ -79,236 +119,282 @@ class FilesystemDisplay { }; this.followTab(); - this.watchFS = (dir) => { + this.watchFS = dir => { if (this._fsWatcher) { this._fsWatcher.close(); } - this._fsWatcher = fs.watch(dir, () => { - this._runNextTick = true; + this._fsWatcher = fs.watch(dir, (eventType, filename) => { + if (eventType != "change") { // #758 - Don't refresh file view if only file contents have changed. + this._runNextTick = true; + } }); }; - this.readFS = (dir) => { - if (this.failed === true) return false; + this.toggleHidedotfiles = () => { + if (window.settings.hideDotfiles) { + container.classList.remove("hideDotfiles"); + window.settings.hideDotfiles = false; + } else { + container.classList.add("hideDotfiles"); + window.settings.hideDotfiles = true; + } + }; + + this.toggleListview = () => { + if (window.settings.fsListView) { + container.classList.remove("list-view"); + window.settings.fsListView = false; + } else { + container.classList.add("list-view"); + window.settings.fsListView = true; + } + }; + + this.readFS = async dir => { + if (this.failed === true || this._reading) return false; + this._reading = true; + + document.getElementById("fs_disp_title_dir").innerText = this.dirpath; + this.filesContainer.setAttribute("class", ""); + this.filesContainer.innerHTML = ""; + if (this._noTracking) { + document.querySelector("section#filesystem > h3.title > p:first-of-type").innerText = "FILESYSTEM - TRACKING FAILED, RUNNING DETACHED FROM TTY"; + } + + if (process.platform === "win32" && dir.endsWith(":")) dir = dir+"\\"; let tcwd = dir; - fs.readdir(tcwd, (err, content) => { - if (err !== null) { - console.warn(err); - if (this._noTracking === true && this.dirpath) { // #262 - this.setFailedState(); - setTimeout(() => { - this.readFS(this.dirpath); - }, 1000); - } else { - this.setFailedState(); - } + let content = await this._asyncFSwrapper.readdir(tcwd).catch(err => { + console.warn(err); + if (this._noTracking === true && this.dirpath) { // #262 + this.setFailedState(); + setTimeout(() => { + this.readFS(this.dirpath); + }, 1000); } else { - this.cwd = []; - this._tmp = { - dirs: [], - symlinks: [], - files: [], - others: [] - }; - let i = 0; - content.forEach(file => { - fs.lstat(path.join(tcwd, file), (err, fstat) => { - if (err !== null) { - this.setFailedState(); - } else { - if (fstat.isDirectory()) { - this._tmp.dirs.push(file); - } else if (fstat.isSymbolicLink()) { - this._tmp.symlinks.push(file); - } else if (fstat.isFile()) { - this._tmp.files.push(file); - } else { - this._tmp.others.push(file); - } + this.setFailedState(); + } + }); - i++; - if (i === content.length) { - this.cwd.push({ - name: "Show disks", - type: "showDisks" - }); - - if (tcwd !== "/" && tcwd !== "\\") { - this.cwd.push({ - name: "Go up", - type: "up" - }); - } - - this._tmp.dirs.forEach(e => { - if (tcwd === settingsDir && e === "themes") { - this.cwd.push({ - name: window._escapeHtml(e), - type: "edex-themesDir" - }); - } else if (tcwd === settingsDir && e === "keyboards") { - this.cwd.push({ - name: window._escapeHtml(e), - type: "edex-kblayoutsDir" - }); - } else { - this.cwd.push({ - name: window._escapeHtml(e), - type: "dir" - }); - } - }); - this._tmp.symlinks.forEach(e => { - this.cwd.push({ - name: window._escapeHtml(e), - type: "symlink" - }); - }); - this._tmp.files.forEach(e => { - if (tcwd === themesDir && e.endsWith(".json")) { - this.cwd.push({ - name: window._escapeHtml(e), - type: "edex-theme" - }); - } else if (tcwd === keyboardsDir && e.endsWith(".json")) { - this.cwd.push({ - name: window._escapeHtml(e), - type: "edex-kblayout" - }); - } else if (tcwd === settingsDir && e === "settings.json") { - this.cwd.push({ - name: window._escapeHtml(e), - type: "edex-settings" - }); - } else { - this.cwd.push({ - name: window._escapeHtml(e), - type: "file" - }); - } - }); - this._tmp.others.forEach(e => { - this.cwd.push({ - name: window._escapeHtml(e), - type: "other" - }); - }); - - window.si.fsSize().then(d => { - d.forEach(fsBlock => { - if (tcwd.startsWith(fsBlock.mount)) { - this.fsBlock = fsBlock; - } - }); - - this.dirpath = tcwd; - this.render(this.cwd); - }); - } - } - }); + this.reCalculateDiskUsage(tcwd); + + this.cwd = []; + + await new Promise((resolve, reject) => { + if (content.length === 0) resolve(); + + content.forEach(async (file, i) => { + let fstat = await this._asyncFSwrapper.lstat(path.join(tcwd, file)).catch(e => { + if (!e.message.includes("EPERM") && !e.message.includes("EBUSY")) { + reject(); + } }); - } + + let e = { + name: window._escapeHtml(file), + path: path.resolve(tcwd, file), + type: "other", + category: "other", + hidden: false + }; + + if (typeof fstat !== "undefined") { + e.lastAccessed = fstat.mtime.getTime(); + + if (fstat.isDirectory()) { + e.category = "dir"; + e.type = "dir"; + } + if (e.category === "dir" && tcwd === settingsDir && file === "themes") e.type="edex-themesDir"; + if (e.category === "dir" && tcwd === settingsDir && file === "keyboards") e.type = "edex-kblayoutsDir"; + + if (fstat.isSymbolicLink()) { + e.category = "symlink"; + e.type = "symlink"; + } + + if (fstat.isFile()) { + e.category = "file"; + e.type = "file"; + e.size = fstat.size; + } + } else { + e.type = "system"; + e.hidden = true; + } + + if (e.category === "file" && tcwd === themesDir && file.endsWith(".json")) e.type = "edex-theme"; + if (e.category === "file" && tcwd === keyboardsDir && file.endsWith(".json")) e.type = "edex-kblayout"; + if (e.category === "file" && tcwd === settingsDir && file === "settings.json") e.type = "edex-settings"; + if (e.category === "file" && tcwd === settingsDir && file === "shortcuts.json") e.type = "edex-shortcuts"; + + if (file.startsWith(".")) e.hidden = true; + + this.cwd.push(e); + if (i === content.length-1) resolve(); + }); + }).catch(() => { this.setFailedState() }); + + if (this.failed) return false; + + let ordering = { + dir: 0, + symlink: 1, + file: 2, + other: 3 + }; + + this.cwd.sort((a, b) => { + return (ordering[a.category] - ordering[b.category] || a.name.localeCompare(b.name)); + }); + + this.cwd.splice(0, 0, { + name: "Show disks", + type: "showDisks" }); + + if (tcwd !== "/" && /^[A-Z]:\\$/i.test(tcwd) === false) { + this.cwd.splice(1, 0, { + name: "Go up", + type: "up" + }); + } + + this.dirpath = tcwd; + this.render(this.cwd); + this._reading = false; }; - this.readDevices = () => { + this.readDevices = async () => { if (this.failed === true) return false; - window.si.blockDevices().then(blocks => { - let devices = []; - blocks.forEach(block => { - if (fs.existsSync(block.mount)) { - let type = (block.type === "rom") ? "rom" : "disk"; - if (block.removable && block.type !== "rom") { - type = "usb"; - } - devices.push({ - name: (block.label !== "") ? `${block.label} (${block.name})` : `${block.mount} (${block.name})`, - type, - path: block.mount - }); + let blocks = await window.si.blockDevices(); + let devices = []; + blocks.forEach(block => { + if (fs.existsSync(block.mount)) { + let type = (block.type === "rom") ? "rom" : "disk"; + if (block.removable && block.type !== "rom") { + type = "usb"; } - }); - this.render(devices); + devices.push({ + name: (block.label !== "") ? `${block.label} (${block.name})` : `${block.mount} (${block.name})`, + type, + path: block.mount + }); + } }); + + this.render(devices, true); }; - this.render = async blockList => { + this.render = async (originBlockList, isDiskView) => { + // Work on a clone of the blocklist to avoid altering fsDisp.cwd + let blockList = JSON.parse(JSON.stringify(originBlockList)); + if (this.failed === true) return false; - document.getElementById("fs_disp_title_dir").innerText = this.dirpath; - this.filesContainer.setAttribute("class", ""); + if (isDiskView) { + document.getElementById("fs_disp_title_dir").innerText = "Showing available block devices"; + this.filesContainer.setAttribute("class", "disks"); + } else { + document.getElementById("fs_disp_title_dir").innerText = this.dirpath; + this.filesContainer.setAttribute("class", ""); + } if (this._noTracking) { document.querySelector("section#filesystem > h3.title > p:first-of-type").innerText = "FILESYSTEM - TRACKING FAILED, RUNNING DETACHED FROM TTY"; } let filesDOM = ``; - blockList.forEach(e => { - let hidden = ""; - if (e.name.startsWith(".")) { - hidden = " hidden"; - } - - let cmd = `window.term[window.currentTerm].write('\\'${e.name}\\'')`; - if (e.type === "dir" || e.type === "up" || e.type.endsWith("Dir")) { - cmd = `window.term[window.currentTerm].writelr('cd \\'${e.name.replace("\\", "\\\\")}\\'')`; + blockList.forEach((e, blockIndex) => { + let hidden = e.hidden ? " hidden" : ""; + + let cmdPrefix = `if (window.keyboard.container.dataset.isCtrlOn == "true") { + electron.shell.openPath(fsDisp.cwd[${blockIndex}].path); + electronWin.minimize(); + } else if (window.keyboard.container.dataset.isShiftOn == "true") { + window.term[window.currentTerm].write("\\""+fsDisp.cwd[${blockIndex}].path+"\\""); + } else { + `.replace(/\n+ */g, ''); // Minify + + let cmdSuffix = `}`; + + let cmd; + + if (!this._noTracking) { + if (e.type === "dir" || e.type.endsWith("Dir")) { + cmd = `window.term[window.currentTerm].writelr("cd \\""+fsDisp.cwd[${blockIndex}].name+"\\"")`; + } else if (e.type === "up") { + cmd = `window.term[window.currentTerm].writelr("cd ..")`; + } else if (e.type === "disk" || e.type === "rom" || e.type === "usb") { + if (process.platform === "win32") { + cmd = `window.term[window.currentTerm].writelr("${e.path.replace(/\\/g, '')}")`; + } else { + cmd = `window.term[window.currentTerm].writelr("cd \\"${e.path.replace(/\\/g, '')}\\"")`; + } + } else { + cmd = `window.term[window.currentTerm].write("\\""+fsDisp.cwd[${blockIndex}].path+"\\"")`; + } + } else { + if (e.type === "dir" || e.type.endsWith("Dir")) { + cmd = `window.fsDisp.readFS(fsDisp.cwd[${blockIndex}].path)`; + } else if (e.type === "up") { + cmd = `window.fsDisp.readFS(path.resolve(window.fsDisp.dirpath, ".."))`; + } else if (e.type === "disk" || e.type === "rom" || e.type === "usb") { + cmd = `window.fsDisp.readFS("${e.path.replace(/\\/g, '')}")`; + } else { + cmd = `window.term[window.currentTerm].write("\\""+fsDisp.cwd[${blockIndex}].path+"\\"")`; + } } - if (e.type === "up") { - cmd = `window.term[window.currentTerm].writelr('cd ..')`; + if (e.type === "file") { + cmd = `window.fsDisp.openFile(${blockIndex})`; } - if (e.type === "up" && this._noTracking) { - cmd = `window.fsDisp.readFS('${path.resolve(this.dirpath, '..').replace(/\\/g, '\\\\')}')`; - } - if ((e.type === "dir" || e.type.endsWith("Dir")) && this._noTracking) { - cmd = `window.fsDisp.readFS('${path.resolve(this.dirpath, e.name).replace(/\\/g, '\\\\')}')`; + if (e.type === "system") { + cmd = ""; } if (e.type === "showDisks") { cmd = `window.fsDisp.readDevices()`; + cmdPrefix = ''; + cmdSuffix = ''; } - if (e.type === "disk" || e.type === "rom" || e.type === "usb") { - let extraSwitch = (process.platform === "win32") ? " /D" : ""; - cmd = `window.term[window.currentTerm].writelr('cd${extraSwitch} \\'${e.path.replace("\\", "\\\\")}\\'')`; - - document.getElementById("fs_disp_title_dir").innerText = "Showing available block devices"; - this.filesContainer.setAttribute("class", "disks"); - } - if ((e.type === "disk" || e.type === "rom" || e.type === "usb") && this._noTracking) { - cmd = `window.fsDisp.readFS('${e.path.replace(/\\/g, '\\\\')}')`; + if (e.type === "up") { + // cmd is OS-specific and defined above + cmdPrefix = ''; + cmdSuffix = ''; } if (e.type === "edex-theme") { - cmd = `window.themeChanger('${e.name.slice(0, -5)}')`; + cmd = `window.themeChanger("${e.name.slice(0, -5)}")`; } if (e.type === "edex-kblayout") { - cmd = `window.remakeKeyboard('${e.name.slice(0, -5)}')`; + cmd = `window.remakeKeyboard("${e.name.slice(0, -5)}")`; } if (e.type === "edex-settings") { cmd = `window.openSettings()`; } + if (e.type === "edex-shortcuts") { + cmd = `window.openShortcutsHelp()`; + } let icon = ""; + let type = ""; switch(e.type) { case "showDisks": icon = this.icons.showDisks; + type = "--"; + e.category = "showDisks"; break; case "up": icon = this.icons.up; - break; - case "dir": - icon = this.icons.dir; + type = "--"; + e.category = "up"; break; case "symlink": icon = this.icons.symlink; break; - case "file": - icon = this.icons.file; - break; case "disk": icon = this.icons.disk; break; @@ -319,28 +405,75 @@ class FilesystemDisplay { icon = this.icons.usb; break; case "edex-theme": - icon = this.icons.edex.theme; + icon = this.edexIcons.theme; + type = "eDEX-UI theme"; break; case "edex-kblayout": - icon = this.icons.edex.kblayout; + icon = this.edexIcons.kblayout; + type = "eDEX-UI keyboard layout"; break; case "edex-settings": - icon = this.icons.edex.settings; + case "edex-shortcuts": + icon = this.edexIcons.settings; + type = "eDEX-UI config file"; + break; + case "system": + icon = this.edexIcons.settings; break; case "edex-themesDir": - icon = this.icons.edex.themesDir; + icon = this.edexIcons.themesDir; + type = "eDEX-UI themes folder"; break; case "edex-kblayoutsDir": - icon = this.icons.edex.kblayoutsDir; + icon = this.edexIcons.kblayoutsDir; + type = "eDEX-UI keyboards folder"; break; default: - icon = this.icons.other; + let iconName = this.fileIconsMatcher(e.name); + icon = this.icons[iconName]; + if (typeof icon === "undefined") { + if (e.type === "file") icon = this.icons.file; + if (e.type === "dir") { + icon = this.icons.dir; + type = "folder"; + } + if (typeof icon === "undefined") icon = this.icons.other; + } else if (e.category !== "dir") { + type = iconName.replace("icon-", ""); + } else { + type = "special folder"; + } break; } - filesDOM += `
- ${icon} + if (type === "") type = e.type; + e.type = type; + + // Handle displayable media + if (e.type === 'video' || e.type === 'audio' || e.type === 'image') { + this.cwd[blockIndex].type = e.type; + cmd = `window.fsDisp.openMedia(${blockIndex})`; + } + + if (typeof e.size === "number") { + e.size = this._formatBytes(e.size); + } else { + e.size = "--"; + } + if (typeof e.lastAccessed === "number") { + e.lastAccessed = new Date(e.lastAccessed).toLocaleString(); + } else { + e.lastAccessed = "--"; + } + + filesDOM += `
+ + ${icon.svg} +

${e.name}

+

${type}

+

${e.size}

+

${e.lastAccessed}

`; }); this.filesContainer.innerHTML = filesDOM; @@ -349,42 +482,258 @@ class FilesystemDisplay { document.getElementById("fs_space_bar").setAttribute("onclick", "window.fsDisp.render(window.fsDisp.cwd)"); } else { document.getElementById("fs_space_bar").setAttribute("onclick", ""); - - let splitter = (process.platform === "win32") ? "\\" : "/"; - let displayMount = (this.fsBlock.mount.length < 18) ? this.fsBlock.mount : "..."+splitter+this.fsBlock.mount.split(splitter).pop(); - - // See #226 - if (!isNaN(this.fsBlock.use)) { - this.space_bar.text.innerHTML = `Mount ${displayMount} used ${Math.round(this.fsBlock.use)}%`; - this.space_bar.bar.value = Math.round(this.fsBlock.use); - } else if (!isNaN((this.fsBlock.size / this.fsBlock.used) * 100)) { - let usage = Math.round((this.fsBlock.size / this.fsBlock.used) * 100); - - this.space_bar.text.innerHTML = `Mount ${displayMount} used ${usage}%`; - this.space_bar.bar.value = usage; - } else { - this.space_bar.text.innerHTML = "Could not calculate mountpoint usage."; - this.space_bar.bar.value = 100; - } } - function delay(ms) { - return new Promise((resolve, reject) => { - setTimeout(resolve, ms); - }); - } // Render animation let id = 0; while (this.filesContainer.childNodes[id]) { - this.filesContainer.childNodes[id].setAttribute("class", this.filesContainer.childNodes[id].getAttribute("class").replace(" animationWait", "")); - await delay(50); + let e = this.filesContainer.childNodes[id]; + e.setAttribute("class", e.className.replace(" animationWait", "")); + + if (window.settings.hideDotfiles !== true || e.className.indexOf("hidden") === -1) { + window.audioManager.folder.play(); + await _delay(30); + } + id++; } }; + this.reCalculateDiskUsage = async path => { + this.fsBlock = null; + this.space_bar.text.innerHTML = "Calculating available space..."; + this.space_bar.bar.removeAttribute("value"); + + window.si.fsSize().catch(() => { + this.space_bar.text.innerHTML = "Could not calculate mountpoint usage."; + this.space_bar.bar.value = 100; + }).then(d => { + d.forEach(fsBlock => { + if (path.startsWith(fsBlock.mount)) { + this.fsBlock = fsBlock; + } + }); + this.renderDiskUsage(this.fsBlock); + }); + }; + + this.renderDiskUsage = async fsBlock => { + if (document.getElementById("fs_space_bar").getAttribute("onclick") !== "" || fsBlock === null) return; + + let splitter = (process.platform === "win32") ? "\\" : "/"; + let displayMount = (fsBlock.mount.length < 18) ? fsBlock.mount : "..."+splitter+fsBlock.mount.split(splitter).pop(); + + // See #226 + if (!isNaN(fsBlock.use)) { + this.space_bar.text.innerHTML = `Mount ${displayMount} used ${Math.round(fsBlock.use)}%`; + this.space_bar.bar.value = Math.round(fsBlock.use); + } else if (!isNaN((fsBlock.size / fsBlock.used) * 100)) { + let usage = Math.round((fsBlock.size / fsBlock.used) * 100); + + this.space_bar.text.innerHTML = `Mount ${displayMount} used ${usage}%`; + this.space_bar.bar.value = usage; + } else { + this.space_bar.text.innerHTML = "Could not calculate mountpoint usage."; + this.space_bar.bar.value = 100; + } + }; + // Automatically start indexing supposed beginning CWD // See #365 - this.readFS(window.term[window.currentTerm].cwd || window.settings.cwd); + // ...except if we're hot-reloading, in which case this can mess up the rendering + // See #392 + if (window.performance.navigation.type === 0) { + this.readFS(window.term[window.currentTerm].cwd || window.settings.cwd); + } + + this.openFile = (name, path, type) => { //Might add text formatting at some point, not now though - Surge + let block; + + if (typeof name === "number") { + block = this.cwd[name]; + name = block.name; + } + + let mime = require("mime-types"); + + block.path = block.path.replace(/\\/g, "/"); + + let filetype = mime.lookup(name.split(".")[name.split(".").length - 1]); + switch (filetype) { + case "application/pdf": + let html = `
+
+ + + + Page: / + +
+
+ +
+
`; + const newModal = new Modal( + { + type: "custom", + title: _escapeHtml(name), + html: html + } + ); + new DocReader( + { + modalId: newModal.id, + path: block.path + } + ); + break; + default: + if (mime.charset(filetype) === "UTF-8") { + fs.readFile(block.path, 'utf-8', (err, data) => { + if (err) { + new Modal({ + type: "info", + title: "Failed to load file: " + block.path, + html: err + }); + console.log(err); + }; + window.keyboard.detach(); + new Modal( + { + type: "custom", + title: _escapeHtml(name), + html: `

`, + buttons: [ + {label:"Save to Disk",action:`window.writeFile('${block.path}')`} + ] + }, () => { + window.keyboard.attach(); + window.term[window.currentTerm].term.focus(); + } + ); + }); + break; + } + } + }; + + this.openMedia = (name, path, type) => { + let block, html; + + if (typeof name === "number") { + block = this.cwd[name]; + name = block.name; + } + + block.path = block.path.replace(/\\/g, "/"); + + switch (type || block.type) { + case "image": + html = ``; + break; + case "audio": + html = `
+
+ +
+
+ + ${this.icons["play"].svg} + +
+
+
+ +
+
+
00:00:00
+
+ + ${this.icons["volume"].svg} + +
+
+
+
+
+
+
+
`; + break; + case "video": + html = `
+
+ +
+
+ + ${this.icons["play"].svg} + +
+
+
+ +
+
+
00:00:00
+
+ + ${this.icons["volume"].svg} + +
+
+
+
+
+
+ + ${this.icons["fullscreen"].svg} + +
+
+
+
`; + break; + default: + throw new Error("fsDisp media displayer: unknown type " + (type || block.type)); + } + + const newModal = new Modal({ + type: "custom", + title: _escapeHtml(name), + html + }); + if (block.type === "audio" || block.type === "video") { + new MediaPlayer({ + modalId: newModal.id, + path: block.path, + type: block.type + }); + } + }; } } diff --git a/src/classes/fuzzyFinder.class.js b/src/classes/fuzzyFinder.class.js new file mode 100644 index 000000000..75e52ce94 --- /dev/null +++ b/src/classes/fuzzyFinder.class.js @@ -0,0 +1,135 @@ +class FuzzyFinder { + constructor() { + if (document.getElementById("fuzzyFinder") || document.getElementById("settingsEditor")) { + return false; + } + + window.keyboard.detach(); + + this.disp = new Modal({ + type: "custom", + title: "Fuzzy cwd file search", + html: ` +
    +
  • +
  • +
  • +
  • +
  • +
`, + buttons: [ + {label: "Select", action: "window.activeFuzzyFinder.submit()"} + ] + }, () => { + delete window.activeFuzzyFinder; + window.keyboard.attach(); + window.term[window.currentTerm].term.focus(); + }); + + this.input = document.getElementById("fuzzyFinder"); + this.results = document.getElementById("fuzzyFinder-results"); + + this.input.addEventListener('input', e => { + if ((e.inputType && e.inputType.startsWith("delete")) || (e.detail && e.detail.startsWith("delete"))) { + this.input.value = ""; + this.search(""); + } else { + this.search(this.input.value); + } + }); + this.input.addEventListener('change', e => { + if (e.detail === "enter") { + this.submit(); + } + }); + this.input.addEventListener('keydown', e => { + let selectedEl,selected,next,nextEl; + switch(e.key) { + case 'Enter': + this.submit(); + e.preventDefault(); + break; + case 'ArrowDown': + selectedEl = document.querySelector('li.fuzzyFinderMatchSelected'); + selected = Number(selectedEl.id.substr(17)); + next = (document.getElementById(`fuzzyFinderMatch-${selected+1}`)) ? selected+1 : 0; + nextEl = document.getElementById(`fuzzyFinderMatch-${next}`); + selectedEl.removeAttribute("class"); + nextEl.setAttribute("class", "fuzzyFinderMatchSelected"); + e.preventDefault(); + break; + case 'ArrowUp': + selectedEl = document.querySelector('li.fuzzyFinderMatchSelected'); + selected = Number(selectedEl.id.substr(17)); + next = (document.getElementById(`fuzzyFinderMatch-${selected-1}`)) ? selected-1: 0; + nextEl = document.getElementById(`fuzzyFinderMatch-${next}`); + selectedEl.removeAttribute("class"); + nextEl.setAttribute("class", "fuzzyFinderMatchSelected"); + e.preventDefault(); + break; + default: + // Do nothing, input event will be triggered + } + }); + + this.search(""); + this.input.focus(); + } + + search(text) { + let files = window.fsDisp.cwd; + let i = 0; + let results = files.filter(file => { + if (i >= 5 || file.type === "showDisks" || file.type === "up") { + return false; + } else if (file.name.toLowerCase().includes(text.toLowerCase())) { + i++ + return true; + } + }); + + results.sort((a, b) => { + if (a.name.toLowerCase().startsWith(text.toLowerCase()) && !b.name.toLowerCase().startsWith(text.toLowerCase())) { + return -1; + } else if (!a.name.toLowerCase().startsWith(text.toLowerCase()) && b.name.toLowerCase().startsWith(text.toLowerCase())) { + return 1; + } else { + return 0; + } + }); + + if (results.length === 0) { + this.results.innerHTML = `
  • No results
  • +
  • +
  • +
  • +
  • `; + } + let html = ""; + results.forEach((file, i) => { + html += `
  • ${file.name}
  • `; + }); + if (results.length !== 5) { + for (let i = results.length; i < 5; i++) { + html += "
  • "; + } + } + this.results.innerHTML = html; + } + submit() { + let file = document.querySelector("li.fuzzyFinderMatchSelected").innerText; + if (file === "No results" || file.length <= 0) { + this.disp.close(); + return; + } + + let filePath = path.resolve(window.fsDisp.dirpath, file); + + window.term[window.currentTerm].write(`'${filePath}'`); + this.disp.close(); + } +} + +module.exports = { + FuzzyFinder +}; diff --git a/src/classes/hardwareInspector.class.js b/src/classes/hardwareInspector.class.js new file mode 100644 index 000000000..ac2a7f73a --- /dev/null +++ b/src/classes/hardwareInspector.class.js @@ -0,0 +1,51 @@ +class HardwareInspector { + constructor(parentId) { + if (!parentId) throw "Missing parameters"; + + // Create DOM + this.parent = document.getElementById(parentId); + this._element = document.createElement("div"); + this._element.setAttribute("id", "mod_hardwareInspector"); + this._element.innerHTML = `
    +
    +

    MANUFACTURER

    +

    NONE

    +
    +
    +

    MODEL

    +

    NONE

    +
    +
    +

    CHASSIS

    +

    NONE

    +
    +
    `; + + this.parent.append(this._element); + + this.updateInfo(); + this.infoUpdater = setInterval(() => { + this.updateInfo(); + }, 20000); + } + updateInfo() { + window.si.system().then(d => { + window.si.chassis().then(e => { + document.getElementById("mod_hardwareInspector_manufacturer").innerText = this._trimDataString(d.manufacturer); + document.getElementById("mod_hardwareInspector_model").innerText = this._trimDataString(d.model, d.manufacturer, e.type); + document.getElementById("mod_hardwareInspector_chassis").innerText = e.type; + }); + }); + } + _trimDataString(str, ...filters) { + return str.trim().split(" ").filter(word => { + if (typeof filters !== "object") return true; + + return !filters.includes(word); + }).slice(0, 2).join(" "); + } +} + +module.exports = { + HardwareInspector +}; diff --git a/src/classes/keyboard.class.js b/src/classes/keyboard.class.js index 26c985fea..cefd4d937 100644 --- a/src/classes/keyboard.class.js +++ b/src/classes/keyboard.class.js @@ -2,9 +2,9 @@ class Keyboard { constructor(opts) { if (!opts.layout || !opts.container) throw "Missing options"; - const ctrlseq = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]; const layout = JSON.parse(require("fs").readFileSync(opts.layout, {encoding: "utf-8"})); - const container = document.getElementById(opts.container); + this.ctrlseq = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]; + this.container = document.getElementById(opts.container); this.linkedToTerm = true; this.detach = () => { @@ -15,16 +15,53 @@ class Keyboard { }; // Set default keyboard properties - container.dataset.isShiftOn = false; - container.dataset.isCapsLckOn = false; - container.dataset.isAltOn = false; - container.dataset.isCtrlOn = false; - container.dataset.isFnOn = false; + this.container.dataset.isShiftOn = false; + this.container.dataset.isCapsLckOn = false; + this.container.dataset.isAltOn = false; + this.container.dataset.isCtrlOn = false; + this.container.dataset.isFnOn = false; + + this.container.dataset.passwordMode = false; + + // Build arrays for enabling keyboard shortcuts + this._shortcuts = { + CtrlAltShift: [], + CtrlAlt: [], + CtrlShift: [], + AltShift: [], + Ctrl: [], + Alt: [], + Shift: [] + }; + window.shortcuts.forEach(scut => { + let cut = Object.assign({}, scut); + let mods = cut.trigger.split("+"); + cut.trigger = mods.pop(); + + let order = ["Ctrl", "Alt", "Shift"]; + mods.sort((a, b) => { + return order.indexOf(a) - order.indexOf(b); + }); + + let cat = mods.join(""); + + if (cut.type === "app" && cut.action === "TAB_X" && cut.trigger === "X") { + for (let i = 1; i <= 5; i++) { + let ncut = Object.assign({}, cut); + ncut.trigger = `${i}`; + ncut.action = `TAB_${i}`; + this._shortcuts[cat].push(ncut); + } + } else { + this._shortcuts[cat].push(cut); + } + }); // Parse keymap and create DOM - Object.keys(layout).forEach((row) => { - container.innerHTML += `
    `; - layout[row].forEach((keyObj) => { + Object.keys(layout).forEach(row => { + this.container.innerHTML += `
    `; + layout[row].forEach(keyObj => { + let key = document.createElement("div"); key.setAttribute("class", "keyboard_key"); @@ -42,9 +79,34 @@ class Keyboard {

    ${keyObj.name || ""}

    `; } - Object.keys(keyObj).forEach((property) => { - for (let i = 1; i < ctrlseq.length; i++) { - keyObj[property] = keyObj[property].replace("~~~CTRLSEQ"+i+"~~~", ctrlseq[i]); + // Icon support, overrides previously defined innerHTML + // Arrow and other icons + let icon = null; + if (keyObj.name.startsWith("ESCAPED|-- ICON: ")) { + keyObj.name = keyObj.name.substr(17); + switch(keyObj.name) { + case "ARROW_UP": + icon = ``; + break; + case "ARROW_LEFT": + icon = ``; + break; + case "ARROW_DOWN": + icon = ``; + break; + case "ARROW_RIGHT": + icon = ``; + break; + default: + icon = ``; + } + + key.innerHTML = icon; + } + + Object.keys(keyObj).forEach(property => { + for (let i = 1; i < this.ctrlseq.length; i++) { + keyObj[property] = keyObj[property].replace("~~~CTRLSEQ"+i+"~~~", this.ctrlseq[i]); } if (property.endsWith("cmd")) { key.dataset[property] = keyObj[property]; @@ -55,133 +117,578 @@ class Keyboard { }); }); - // Helper functions for latin diacritics - let addCircum = (char) => { - switch(char) { - case "a": - return "â"; - case "A": - return "Â"; - case "z": - return "ẑ"; - case "Z": - return "Ẑ"; - case "e": - return "ê"; - case "E": - return "Ê"; - case "y": - return "ŷ"; - case "Y": - return "Ŷ"; - case "u": - return "û"; - case "U": - return "Û"; - case "i": - return "î"; - case "I": - return "Î"; - case "o": - return "ô"; - case "O": - return "Ô"; - case "s": - return "ŝ"; - case "S": - return "Ŝ"; - case "g": - return "ĝ"; - case "G": - return "Ĝ"; - case "h": - return "ĥ"; - case "H": - return "Ĥ"; - case "j": - return "ĵ"; - case "J": - return "Ĵ"; - case "w": - return "ŵ"; - case "W": - return "Ŵ"; - case "c": - return "ĉ"; - case "C": - return "Ĉ"; - // the circumflex can also be used for superscript numbers - case "1": - return "¹"; - case "2": - return "²"; - case "3": - return "³"; - case "4": - return "⁴"; - case "5": - return "⁵"; - case "6": - return "⁶"; - case "7": - return "⁷"; - case "8": - return "⁸"; - case "9": - return "⁹"; - case "0": - return "⁰"; - default: - return char; + this.container.childNodes.forEach(row => { + row.childNodes.forEach(key => { + + let enterElements = document.querySelectorAll(".keyboard_enter"); + + if (key.attributes["class"].value.endsWith("keyboard_enter")) { + // The enter key is divided in two dom elements, so we bind their animations here + + key.onmousedown = e => { + this.pressKey(key); + key.holdTimeout = setTimeout(() => { + key.holdInterval = setInterval(() => { + this.pressKey(key); + }, 70); + }, 400); + + enterElements.forEach(key => { + key.setAttribute("class", "keyboard_key active keyboard_enter"); + }); + + // Keep focus on the terminal + if (window.keyboard.linkedToTerm) window.term[window.currentTerm].term.focus(); + if (this.container.dataset.passwordMode == "false") + window.audioManager.granted.play(); + e.preventDefault(); + }; + key.onmouseup = () => { + clearTimeout(key.holdTimeout); + clearInterval(key.holdInterval); + + enterElements.forEach(key => { + key.setAttribute("class", "keyboard_key blink keyboard_enter"); + }); + setTimeout(() => { + enterElements.forEach(key => { + key.setAttribute("class", "keyboard_key keyboard_enter"); + }); + }, 100); + }; + } else { + key.onmousedown = e => { + if (/^ESCAPED\|-- (CTRL|SHIFT|ALT){1}.*/.test(key.dataset.cmd)) { + let cmd = key.dataset.cmd.substr(11); + if (cmd.startsWith("CTRL")) { + this.container.dataset.isCtrlOn = "true"; + } + if (cmd.startsWith("SHIFT")) { + this.container.dataset.isShiftOn = "true"; + } + if (cmd.startsWith("ALT")) { + this.container.dataset.isAltOn = "true"; + } + } else { + key.holdTimeout = setTimeout(() => { + key.holdInterval = setInterval(() => { + this.pressKey(key); + }, 70); + }, 400); + this.pressKey(key); + } + + // Keep focus on the terminal + if (window.keyboard.linkedToTerm) window.term[window.currentTerm].term.focus(); + if(this.container.dataset.passwordMode == "false") + window.audioManager.stdin.play(); + e.preventDefault(); + }; + key.onmouseup = e => { + if (/^ESCAPED\|-- (CTRL|SHIFT|ALT){1}.*/.test(key.dataset.cmd)) { + let cmd = key.dataset.cmd.substr(11); + if (cmd.startsWith("CTRL")) { + this.container.dataset.isCtrlOn = "false"; + } + if (cmd.startsWith("SHIFT")) { + this.container.dataset.isShiftOn = "false"; + } + if (cmd.startsWith("ALT")) { + this.container.dataset.isAltOn = "false"; + } + } else { + clearTimeout(key.holdTimeout); + clearInterval(key.holdInterval); + } + + key.setAttribute("class", "keyboard_key blink"); + setTimeout(() => { + key.setAttribute("class", "keyboard_key"); + }, 100); + }; + } + + // See #229 + key.onmouseleave = () => { + clearTimeout(key.holdTimeout); + clearInterval(key.holdInterval); + }; + }); + }); + + // Tactile multi-touch support (#100) + this.container.addEventListener("touchstart", e => { + e.preventDefault(); + for (let i = 0; i < e.changedTouches.length; i++) { + let key = e.changedTouches[i].target.parentElement; + if (key.tagName === 'svg') key = key.parentElement; + if (key.getAttribute("class").startsWith("keyboard_key")) { + key.setAttribute("class", key.getAttribute("class")+" active"); + key.onmousedown({preventDefault: () => {return true}}); + } else { + key = e.changedTouches[i].target; + if (key.getAttribute("class").startsWith("keyboard_key")) { + key.setAttribute("class", key.getAttribute("class")+" active"); + key.onmousedown({preventDefault: () => {return true}}); + } + } + } + }); + let dropKeyTouchHandler = e => { + e.preventDefault(); + for (let i = 0; i < e.changedTouches.length; i++) { + let key = e.changedTouches[i].target.parentElement; + if (key.tagName === 'svg') key = key.parentElement; + if (key.getAttribute("class").startsWith("keyboard_key")) { + key.setAttribute("class", key.getAttribute("class").replace("active", "")); + key.onmouseup({preventDefault: () => {return true}}); + } else { + key = e.changedTouches[i].target; + if (key.getAttribute("class").startsWith("keyboard_key")) { + key.setAttribute("class", key.getAttribute("class").replace("active", "")); + key.onmouseup({preventDefault: () => {return true}}); + } + } + } + }; + this.container.addEventListener("touchend", dropKeyTouchHandler); + this.container.addEventListener("touchcancel", dropKeyTouchHandler); + + // Bind actual keyboard actions to on-screen animations (for use without a touchscreen) + let findKey = e => { + // Fix incorrect querySelector error + let physkey; + (e.key === "\"") ? physkey = `\\"` : physkey = e.key; + + // Find basic keys (typically letters, upper and lower-case) + let key = document.querySelector('div.keyboard_key[data-cmd="'+physkey+'"]'); + if (key === null) key = document.querySelector('div.keyboard_key[data-shift_cmd="'+physkey+'"]'); + + // Find special keys (shift, control, arrows, etc.) + if (key === null && e.code === "ShiftLeft") key = document.querySelector('div.keyboard_key[data-cmd="ESCAPED|-- SHIFT: LEFT"]'); + if (key === null && e.code === "ShiftRight") key = document.querySelector('div.keyboard_key[data-cmd="ESCAPED|-- SHIFT: RIGHT"]'); + if (key === null && e.code === "ControlLeft") key = document.querySelector('div.keyboard_key[data-cmd="ESCAPED|-- CTRL: LEFT"]'); + if (key === null && e.code === "ControlRight") key = document.querySelector('div.keyboard_key[data-cmd="ESCAPED|-- CTRL: RIGHT"]'); + if (key === null && e.code === "AltLeft") key = document.querySelector('div.keyboard_key[data-cmd="ESCAPED|-- FN: ON"]'); + if (key === null && e.code === "AltRight") key = document.querySelector('div.keyboard_key[data-cmd="ESCAPED|-- ALT: RIGHT"]'); + if (key === null && e.code === "CapsLock") key = document.querySelector('div.keyboard_key[data-cmd="ESCAPED|-- CAPSLCK: ON"]'); + if (key === null && e.code === "Escape") key = document.querySelector('div.keyboard_key[data-cmd=""]'); + if (key === null && e.code === "Backspace") key = document.querySelector('div.keyboard_key[data-cmd=""]'); + if (key === null && e.code === "ArrowUp") key = document.querySelector('div.keyboard_key[data-cmd="OA"]'); + if (key === null && e.code === "ArrowLeft") key = document.querySelector('div.keyboard_key[data-cmd="OD"]'); + if (key === null && e.code === "ArrowDown") key = document.querySelector('div.keyboard_key[data-cmd="OB"]'); + if (key === null && e.code === "ArrowRight") key = document.querySelector('div.keyboard_key[data-cmd="OC"]'); + if (key === null && e.code === "Enter") key = document.querySelectorAll('div.keyboard_key.keyboard_enter'); + + // Find "rare" keys (ctrl and alt symbols) + if (key === null) key = document.querySelector('div.keyboard_key[data-ctrl_cmd="'+e.key+'"]'); + if (key === null) key = document.querySelector('div.keyboard_key[data-alt_cmd="'+e.key+'"]'); + + return key; + }; + + this.keydownHandler = e => { + // See #330 + if (e.getModifierState("AltGraph") && e.code === "AltRight") { + document.querySelector('div.keyboard_key[data-cmd="ESCAPED|-- CTRL: LEFT"]').setAttribute("class", "keyboard_key"); + } + + // See #440 + if (e.code === "ControlLeft" || e.code === "ControlRight") this.container.dataset.isCtrlOn = true; + if (e.code === "ShiftLeft" || e.code === "ShiftRight") this.container.dataset.isShiftOn = true; + if (e.code === "AltLeft" || e.code === "AltRight") this.container.dataset.isAltOn = true; + if (e.code === "CapsLock" && this.container.dataset.isCapsLckOn !== "true") this.container.dataset.isCapsLckOn = true; + if (e.code === "CapsLock" && this.container.dataset.isCapsLckOn === "true") this.container.dataset.isCapsLckOn = false; + + let key = findKey(e); + if (key === null) return; + if (key.length) { + key.forEach(enterElement => { + enterElement.setAttribute("class", "keyboard_key active keyboard_enter"); + }); + } else { + key.setAttribute("class", "keyboard_key active"); + } + + // See #516 + if (e.repeat === false || (e.repeat === true && !e.code.startsWith('Shift') && !e.code.startsWith('Alt') && !e.code.startsWith('Control') && !e.code.startsWith('Caps'))) { + if(this.container.dataset.passwordMode == "false") + window.audioManager.stdin.play(); } }; - let addTrema = (char) => { - switch(char) { - case "a": - return "ä"; - case "A": - return "Ä"; - case "e": - return "ë"; - case "E": - return "Ë"; - case "t": - return "ẗ"; - // My keyboard says no uppercase ẗ - case "y": - return "ÿ"; - case "Y": - return "Ÿ"; - case "u": - return "ü"; - case "U": - return "Ü"; - case "i": - return "ï"; - case "I": - return "Ï"; - case "o": - return "ö"; - case "O": - return "Ö"; - case "h": - return "ḧ"; - case "H": - return "Ḧ"; - case "w": - return "ẅ"; - case "W": - return "Ẅ"; - case "x": - return "ẍ"; - case "X": - return "Ẍ"; - default: - return char; + + document.onkeydown = this.keydownHandler; + + document.onkeyup = e => { + // See #330 + if (e.key === "Control" && e.getModifierState("AltGraph")) return; + + // See #440 + if (e.code === "ControlLeft" || e.code === "ControlRight") this.container.dataset.isCtrlOn = false; + if (e.code === "ShiftLeft" || e.code === "ShiftRight") this.container.dataset.isShiftOn = false; + if (e.code === "AltLeft" || e.code === "AltRight") this.container.dataset.isAltOn = false; + + let key = findKey(e); + if (key === null) return; + if (key.length) { + key.forEach(enterElement => { + enterElement.setAttribute("class", "keyboard_key blink keyboard_enter"); + }); + setTimeout(() => { + key.forEach(enterElement => { + enterElement.setAttribute("class", "keyboard_key keyboard_enter"); + }); + }, 100); + } else { + key.setAttribute("class", "keyboard_key blink"); + setTimeout(() => { + key.setAttribute("class", "keyboard_key"); + }, 100); } + + if(this.container.dataset.passwordMode == "false" && e.key === "Enter") + window.audioManager.granted.play(); }; - let addAcute = (char) => { - switch(char) { + + window.addEventListener("blur", () => { + document.querySelectorAll("div.keyboard_key.active").forEach(key => { + key.setAttribute("class", key.getAttribute("class").replace("active", "")); + key.onmouseup({preventDefault: () => {return true}}); + }); + }); + } + pressKey(key) { + let cmd = key.dataset.cmd || ""; + + // Keyboard shortcuts + let shortcutsCat = ""; + if (this.container.dataset.isCtrlOn === "true") shortcutsCat += "Ctrl"; + if (this.container.dataset.isAltOn === "true") shortcutsCat += "Alt"; + if (this.container.dataset.isShiftOn === "true") shortcutsCat += "Shift"; + + let shortcutsTriggered = false; + + if (shortcutsCat.length > 1) { + this._shortcuts[shortcutsCat].forEach(cut => { + if (!cut.enabled) return; + + let trig = cut.trigger.toLowerCase() + .replace("plus", "+") + .replace("space", " ") + .replace("tab", "\t") + .replace(/backspace|delete/, "\b") + .replace(/esc|escape/, this.ctrlseq[1]) + .replace(/return|enter/, "\r"); + + if (cmd !== trig) return; + + if (cut.type === "app") { + window.useAppShortcut(cut.action); + shortcutsTriggered = true; + } else if (cut.type === "shell") { + let fn = (cut.linebreak) ? writelr : write; + window.term[window.currentTerm][fn](cut.action); + } else { + console.warn(`${cut.trigger} has unknown type`); + } + }); + } + + if (shortcutsTriggered) return; + + // Modifiers + if (this.container.dataset.isShiftOn === "true" && key.dataset.shift_cmd || this.container.dataset.isCapsLckOn === "true" && key.dataset.shift_cmd) cmd = key.dataset.shift_cmd; + if (this.container.dataset.isCapsLckOn === "true" && key.dataset.capslck_cmd) cmd = key.dataset.capslck_cmd; + if (this.container.dataset.isCtrlOn === "true" && key.dataset.ctrl_cmd) cmd = key.dataset.ctrl_cmd; + if (this.container.dataset.isAltOn === "true" && key.dataset.alt_cmd) cmd = key.dataset.alt_cmd; + if (this.container.dataset.isAltOn === "true" && this.container.dataset.isShiftOn === "true" && key.dataset.altshift_cmd) cmd = key.dataset.altshift_cmd; + if (this.container.dataset.isFnOn === "true" && key.dataset.fn_cmd) cmd = key.dataset.fn_cmd; + if (this.container.dataset.isNextCircum === "true") { + cmd = this.addCircum(cmd); + this.container.dataset.isNextCircum = "false"; + } + if (this.container.dataset.isNextTrema === "true") { + cmd = this.addTrema(cmd); + this.container.dataset.isNextTrema = "false"; + } + if (this.container.dataset.isNextAcute === "true") { + cmd = this.addAcute(cmd); + this.container.dataset.isNextAcute = "false"; + } + if (this.container.dataset.isNextGrave === "true") { + cmd = this.addGrave(cmd); + this.container.dataset.isNextGrave = "false"; + } + if (this.container.dataset.isNextCaron === "true") { + cmd = this.addCaron(cmd); + this.container.dataset.isNextCaron = "false"; + } + if (this.container.dataset.isNextBar === "true") { + cmd = this.addBar(cmd); + this.container.dataset.isNextBar = "false"; + } + if (this.container.dataset.isNextBreve === "true") { + cmd = this.addBreve(cmd); + this.container.dataset.isNextBreve = "false"; + } + if (this.container.dataset.isNextTilde === "true") { + cmd = this.addTilde(cmd); + this.container.dataset.isNextTilde = "false"; + } + if (this.container.dataset.isNextMacron === "true") { + cmd = this.addMacron(cmd); + this.container.dataset.isNextMacron = "false"; + } + if (this.container.dataset.isNextCedilla === "true") { + cmd = this.addCedilla(cmd); + this.container.dataset.isNextCedilla = "true"; + } + if (this.container.dataset.isNextOverring === "true") { + cmd = this.addOverring(cmd); + this.container.dataset.isNextOverring = "false"; + } + if (this.container.dataset.isNextGreek === "true") { + cmd = this.toGreek(cmd); + this.container.dataset.isNextGreek = "false"; + } + if (this.container.dataset.isNextIotasub === "true") { + cmd = this.addIotasub(cmd); + this.container.dataset.isNextIotasub = "false"; + } + + // Escaped commands + if (cmd.startsWith("ESCAPED|-- ")) { + cmd = cmd.substr(11); + switch(cmd) { + case "CAPSLCK: ON": + this.container.dataset.isCapsLckOn = "true"; + return true; + case "CAPSLCK: OFF": + this.container.dataset.isCapsLckOn = "false"; + return true; + case "FN: ON": + this.container.dataset.isFnOn = "true"; + return true; + case "FN: OFF": + this.container.dataset.isFnOn = "false"; + return true; + case "CIRCUM": + this.container.dataset.isNextCircum = "true"; + return true; + case "TREMA": + this.container.dataset.isNextTrema = "true"; + return true; + case "ACUTE": + this.container.dataset.isNextAcute = "true"; + return true; + case "GRAVE": + this.container.dataset.isNextGrave = "true"; + return true; + case "CARON": + this.container.dataset.isNextCaron = "true"; + return true; + case "BAR": + this.container.dataset.isNextBar = "true"; + return true; + case "BREVE": + this.container.dataset.isNextBreve = "true"; + return true; + case "TILDE": + this.container.dataset.isNextTilde = "true"; + return true; + case "MACRON": + this.container.dataset.isNextMacron = "true"; + return true; + case "CEDILLA": + this.container.dataset.isNextCedilla = "true"; + return true; + case "OVERRING": + this.container.dataset.isNextOverring = "true"; + return true; + case "GREEK": + this.container.dataset.isNextGreek = "true"; + return true; + case "IOTASUB": + this.container.dataset.isNextIotasub = "true"; + return true; + } + } + + + if (cmd === "\n") { + if (window.keyboard.linkedToTerm) { + window.term[window.currentTerm].writelr(""); + } else { + document.activeElement.dispatchEvent(new CustomEvent("change", {detail: "enter" })); + } + return true; + } + + + if (window.keyboard.linkedToTerm) { + window.term[window.currentTerm].write(cmd); + } else { + let isDelete = false; + if (typeof document.activeElement.value !== "undefined") { + switch(cmd) { + case "": + document.activeElement.value = document.activeElement.value.slice(0, -1); + isDelete = true; + break; + case "OD": + document.activeElement.selectionStart--; + document.activeElement.selectionEnd = document.activeElement.selectionStart; + break; + case "OC": + document.activeElement.selectionEnd++; + document.activeElement.selectionStart = document.activeElement.selectionEnd; + break; + default: + if (this.ctrlseq.indexOf(cmd.slice(0, 1)) !== -1) { + // Prevent trying to write other control sequences + } else { + document.activeElement.value = document.activeElement.value+cmd; + } + } + } + // Emulate oninput events + document.activeElement.dispatchEvent(new CustomEvent("input", {detail: ((isDelete)? "delete" : "insert") })); + document.activeElement.focus(); + } + } + togglePasswordMode() { + let d = this.container.dataset.passwordMode; + (d === "true") ? d = "false" : d = "true"; + this.container.dataset.passwordMode = d; + window.passwordMode = d; + return d; + } + addCircum(char) { + switch(char) { + case "a": + return "â"; + case "A": + return "Â"; + case "z": + return "ẑ"; + case "Z": + return "Ẑ"; + case "e": + return "ê"; + case "E": + return "Ê"; + case "y": + return "ŷ"; + case "Y": + return "Ŷ"; + case "u": + return "û"; + case "U": + return "Û"; + case "i": + return "î"; + case "I": + return "Î"; + case "o": + return "ô"; + case "O": + return "Ô"; + case "s": + return "ŝ"; + case "S": + return "Ŝ"; + case "g": + return "ĝ"; + case "G": + return "Ĝ"; + case "h": + return "ĥ"; + case "H": + return "Ĥ"; + case "j": + return "ĵ"; + case "J": + return "Ĵ"; + case "w": + return "ŵ"; + case "W": + return "Ŵ"; + case "c": + return "ĉ"; + case "C": + return "Ĉ"; + // the circumflex can also be used for superscript numbers + case "1": + return "¹"; + case "2": + return "²"; + case "3": + return "³"; + case "4": + return "⁴"; + case "5": + return "⁵"; + case "6": + return "⁶"; + case "7": + return "⁷"; + case "8": + return "⁸"; + case "9": + return "⁹"; + case "0": + return "⁰"; + default: + return char; + } + } + addTrema(char) { + switch(char) { + case "a": + return "ä"; + case "A": + return "Ä"; + case "e": + return "ë"; + case "E": + return "Ë"; + case "t": + return "ẗ"; + // My keyboard says no uppercase ẗ + case "y": + return "ÿ"; + case "Y": + return "Ÿ"; + case "u": + return "ü"; + case "U": + return "Ü"; + case "i": + return "ï"; + case "I": + return "Ï"; + case "o": + return "ö"; + case "O": + return "Ö"; + case "h": + return "ḧ"; + case "H": + return "Ḧ"; + case "w": + return "ẅ"; + case "W": + return "Ẅ"; + case "x": + return "ẍ"; + case "X": + return "Ẍ"; + default: + return char; + } + } + addAcute(char) { + switch(char) { case "a": return "á"; case "A": @@ -268,10 +775,10 @@ class Keyboard { return "Ḉ"; default: return char; - } - }; - let addGrave = (char) => { - switch (char) { + } + } + addGrave(char) { + switch (char) { case "a": return "à"; case "A": @@ -318,10 +825,10 @@ class Keyboard { return "Ề"; default: return char; - } - }; - let addCaron = (char) => { - switch (char) { + } + } + addCaron(char) { + switch (char) { case "a": return "ǎ"; case "A": @@ -388,7 +895,7 @@ class Keyboard { return "ž"; case "Z": return "Ž"; - // caron can also be used for subscript numbers + // caron can also be used for subscript numbers case "1": return "₁"; case "2": @@ -411,10 +918,10 @@ class Keyboard { return "₀"; default: return char; - } - }; - let addBar = (char) => { - switch (char) { + } + } + addBar(char) { + switch (char) { case "a": return "ⱥ"; case "A": @@ -485,10 +992,10 @@ class Keyboard { return "Ƶ"; default: return char; - } - }; - let addBreve = (char) => { - switch (char) { + } + } + addBreve(char) { + switch (char) { case "a": return "ă"; case "A": @@ -519,10 +1026,10 @@ class Keyboard { return "Ằ"; default: return char; - } - }; - let addTilde = (char) => { - switch (char) { + } + } + addTilde(char) { + switch (char) { case "a": return "ã"; case "A": @@ -561,10 +1068,10 @@ class Keyboard { return "Ễ"; default: return char; - } - }; - let addMacron = (char) => { - switch (char) { + } + } + addMacron(char) { + switch (char) { case "a": return "ā"; case "A": @@ -603,10 +1110,10 @@ class Keyboard { return "Ḕ"; default: return char; - } - }; - let addCedilla = (char) => { - switch (char) { + } + } + addCedilla(char) { + switch (char) { case "c": return "ç"; case "C": @@ -653,10 +1160,10 @@ class Keyboard { return "Ţ"; default: return char; - } - }; - let addOverring = (char) => { - switch (char) { + } + } + addOverring(char) { + switch (char) { case "a": return "å"; case "A": @@ -671,10 +1178,10 @@ class Keyboard { return "ẙ"; // same for capital y with overring default: return char; - } - }; - let toGreek = (char) => { - switch (char) { + } + } + toGreek(char) { + switch (char) { case "b": return "β"; case "p": @@ -749,10 +1256,10 @@ class Keyboard { return "Φ"; default: return char; - } - }; - let addIotasub = (char) => { - switch (char) { + } + } + addIotasub(char) { + switch (char) { case "o": return "ǫ"; case "O": @@ -775,368 +1282,7 @@ class Keyboard { return "Ę"; default: return char; - } - }; - - // Apply click (and/or touch) handler functions (write to socket and animations) - let pressKey = (key) => { - let cmd = key.dataset.cmd || ""; - if (container.dataset.isShiftOn === "true" && key.dataset.shift_cmd || container.dataset.isCapsLckOn === "true" && key.dataset.shift_cmd) cmd = key.dataset.capslck_cmd || key.dataset.shift_cmd; - if (container.dataset.isCtrlOn === "true" && key.dataset.ctrl_cmd) cmd = key.dataset.ctrl_cmd; - if (container.dataset.isAltOn === "true" && key.dataset.alt_cmd) cmd = key.dataset.alt_cmd; - if (container.dataset.isAltOn === "true" && container.dataset.isShiftOn === "true" && key.dataset.altshift_cmd) cmd = key.dataset.altshift_cmd; - if (container.dataset.isFnOn === "true" && key.dataset.fn_cmd) cmd = key.dataset.fn_cmd; - - if (container.dataset.isNextCircum === "true") { - cmd = addCircum(cmd); - container.dataset.isNextCircum = "false"; - } - if (container.dataset.isNextTrema === "true") { - cmd = addTrema(cmd); - container.dataset.isNextTrema = "false"; - } - if (container.dataset.isNextAcute === "true") { - cmd = addAcute(cmd); - container.dataset.isNextAcute = "false"; - } - if (container.dataset.isNextGrave === "true") { - cmd = addGrave(cmd); - container.dataset.isNextGrave = "false"; - } - if (container.dataset.isNextCaron === "true") { - cmd = addCaron(cmd); - container.dataset.isNextCaron = "false"; - } - if (container.dataset.isNextBar === "true") { - cmd = addBar(cmd); - container.dataset.isNextBar = "false"; - } - if (container.dataset.isNextBreve === "true") { - cmd = addBreve(cmd); - container.dataset.isNextBreve = "false"; - } - if (container.dataset.isNextTilde === "true") { - cmd = addTilde(cmd); - container.dataset.isNextTilde = "false"; - } - if (container.dataset.isNextMacron === "true") { - cmd = addMacron(cmd); - container.dataset.isNextMacron = "false"; - } - if (container.dataset.isNextCedilla === "true") { - cmd = addCedilla(cmd); - container.dataset.isNextCedilla = "true"; - } - if (container.dataset.isNextOverring === "true") { - cmd = addOverring(cmd); - container.dataset.isNextOverring = "false"; - } - if (container.dataset.isNextGreek === "true") { - cmd = toGreek(cmd); - container.dataset.isNextGreek = "false"; - } - if (container.dataset.isNextIotasub === "true") { - cmd = addIotasub(cmd); - container.dataset.isNextIotasub = "false"; - } - - - if (cmd.startsWith("ESCAPED|-- ")) { - cmd = cmd.substr(11); - switch(cmd) { - case "CAPSLCK: ON": - container.dataset.isCapsLckOn = "true"; - break; - case "CAPSLCK: OFF": - container.dataset.isCapsLckOn = "false"; - break; - case "FN: ON": - container.dataset.isFnOn = "true"; - break; - case "FN: OFF": - container.dataset.isFnOn = "false"; - break; - case "CIRCUM": - container.dataset.isNextCircum = "true"; - break; - case "TREMA": - container.dataset.isNextTrema = "true"; - break; - case "ACUTE": - container.dataset.isNextAcute = "true"; - break; - case "GRAVE": - container.dataset.isNextGrave = "true"; - break; - case "CARON": - container.dataset.isNextCaron = "true"; - break; - case "BAR": - container.dataset.isNextBar = "true"; - break; - case "BREVE": - container.dataset.isNextBreve = "true"; - break; - case "MACRON": - container.dataset.isNextMacron = "true"; - break; - case "CEDILLA": - container.dataset.isNextCedilla = "true"; - break; - case "OVERRING": - container.dataset.isNextOverring = "true"; - break; - case "GREEK": - container.dataset.isNextGreek = "true"; - break; - case "IOTASUB": - container.dataset.isNextIotasub = "true"; - break; - } - } else if (cmd === "\n") { - if (window.keyboard.linkedToTerm) { - window.term[window.currentTerm].writelr(""); - } else { - // Do nothing, return not accepted in inputs - } - } else if (cmd === ctrlseq[19] && window.keyboard.linkedToTerm && window.term[window.currentTerm].term.hasSelection()) { - window.term[window.currentTerm].clipboard.copy(); - } else if (cmd === ctrlseq[20] && window.keyboard.linkedToTerm && window.term[window.currentTerm].clipboard.didCopy) { - window.term[window.currentTerm].clipboard.paste(); - } else { - if (window.keyboard.linkedToTerm) { - window.term[window.currentTerm].write(cmd); - } else { - if (typeof document.activeElement.value !== "undefined") { - switch(cmd) { - case "": - document.activeElement.value = document.activeElement.value.slice(0, -1); - break; - case "OD": - document.activeElement.selectionStart--; - document.activeElement.selectionEnd = document.activeElement.selectionStart; - break; - case "OC": - document.activeElement.selectionEnd++; - document.activeElement.selectionStart = document.activeElement.selectionEnd; - break; - default: - if (ctrlseq.indexOf(cmd.slice(0, 1)) !== -1) { - // Prevent trying to write other control sequences - } else { - document.activeElement.value = document.activeElement.value+cmd; - } - } - } - document.activeElement.focus(); - } - } - }; - - container.childNodes.forEach((row) => { - row.childNodes.forEach((key) => { - - let enterElements = document.querySelectorAll(".keyboard_enter"); - - if (key.attributes["class"].value.endsWith("keyboard_enter")) { - // The enter key is divided in two dom elements, so we bind their animations here - - key.onmousedown = (e) => { - pressKey(key); - key.holdTimeout = setTimeout(() => { - key.holdInterval = setInterval(() => { - pressKey(key); - }, 70); - }, 400); - - enterElements.forEach((key) => { - key.setAttribute("class", "keyboard_key active keyboard_enter"); - }); - - // Keep focus on the terminal - if (window.keyboard.linkedToTerm) window.term[window.currentTerm].term.focus(); - - window.audioManager.beep2.play(); - e.preventDefault(); - }; - key.onmouseup = () => { - clearTimeout(key.holdTimeout); - clearInterval(key.holdInterval); - - enterElements.forEach((key) => { - key.setAttribute("class", "keyboard_key blink keyboard_enter"); - }); - setTimeout(() => { - enterElements.forEach((key) => { - key.setAttribute("class", "keyboard_key keyboard_enter"); - }); - }, 100); - }; - } else { - key.onmousedown = (e) => { - if (key.dataset.cmd.startsWith("ESCAPED|-- ")) { - let cmd = key.dataset.cmd.substr(11); - if (cmd.startsWith("CTRL")) { - container.dataset.isCtrlOn = "true"; - } - if (cmd.startsWith("SHIFT")) { - container.dataset.isShiftOn = "true"; - } - if (cmd.startsWith("ALT")) { - container.dataset.isAltOn = "true"; - } - } else { - key.holdTimeout = setTimeout(() => { - key.holdInterval = setInterval(() => { - pressKey(key); - }, 70); - }, 400); - } - pressKey(key); - - // Keep focus on the terminal - if (window.keyboard.linkedToTerm) window.term[window.currentTerm].term.focus(); - - window.audioManager.beep3.play(); - e.preventDefault(); - }; - key.onmouseup = (e) => { - if (key.dataset.cmd.startsWith("ESCAPED|-- ")) { - let cmd = key.dataset.cmd.substr(11); - if (cmd.startsWith("CTRL")) { - container.dataset.isCtrlOn = "false"; - } - if (cmd.startsWith("SHIFT")) { - container.dataset.isShiftOn = "false"; - } - if (cmd.startsWith("ALT")) { - container.dataset.isAltOn = "false"; - } - } else { - clearTimeout(key.holdTimeout); - clearInterval(key.holdInterval); - } - - key.setAttribute("class", "keyboard_key blink"); - setTimeout(() => { - key.setAttribute("class", "keyboard_key"); - }, 100); - }; - } - - // See #229 - key.onmouseleave = () => { - clearTimeout(key.holdTimeout); - clearInterval(key.holdInterval); - }; - }); - }); - - // Tactile multi-touch support (#100) - container.addEventListener("touchstart", e => { - e.preventDefault(); - for (let i = 0; i < e.changedTouches.length; i++) { - let key = e.changedTouches[i].target.offsetParent; - if (key.getAttribute("class").startsWith("keyboard_key")) { - key.setAttribute("class", key.getAttribute("class")+" active"); - key.onmousedown({preventDefault: () => {return true}}); - } else { - key = e.changedTouches[i].target; - if (key.getAttribute("class").startsWith("keyboard_key")) { - key.setAttribute("class", key.getAttribute("class")+" active"); - key.onmousedown({preventDefault: () => {return true}}); - } - } - } - }); - let dropKeyTouchHandler = e => { - e.preventDefault(); - for (let i = 0; i < e.changedTouches.length; i++) { - let key = e.changedTouches[i].target.offsetParent; - if (key.getAttribute("class").startsWith("keyboard_key")) { - key.setAttribute("class", key.getAttribute("class").replace("active", "")); - key.onmouseup({preventDefault: () => {return true}}); - } else { - key = e.changedTouches[i].target; - if (key.getAttribute("class").startsWith("keyboard_key")) { - key.setAttribute("class", key.getAttribute("class").replace("active", "")); - key.onmouseup({preventDefault: () => {return true}}); - } - } - } - }; - container.addEventListener("touchend", dropKeyTouchHandler); - container.addEventListener("touchcancel", dropKeyTouchHandler); - - // Bind actual keyboard actions to on-screen animations (for use without a touchscreen) - let findKey = (e) => { - // Fix incorrect querySelector error - let physkey; - (e.key === "\"") ? physkey = `\\"` : physkey = e.key; - - // Find basic keys (typically letters, upper and lower-case) - let key = document.querySelector('div.keyboard_key[data-cmd="'+physkey+'"]'); - if (key === null) key = document.querySelector('div.keyboard_key[data-shift_cmd="'+physkey+'"]'); - - // Find special keys (shift, control, arrows, etc.) - if (key === null && e.code === "ShiftLeft") key = document.querySelector('div.keyboard_key[data-cmd="ESCAPED|-- SHIFT: LEFT"]'); - if (key === null && e.code === "ShiftRight") key = document.querySelector('div.keyboard_key[data-cmd="ESCAPED|-- SHIFT: RIGHT"]'); - if (key === null && e.code === "ControlLeft") key = document.querySelector('div.keyboard_key[data-cmd="ESCAPED|-- CTRL: LEFT"]'); - if (key === null && e.code === "ControlRight") key = document.querySelector('div.keyboard_key[data-cmd="ESCAPED|-- CTRL: RIGHT"]'); - if (key === null && e.code === "AltLeft") key = document.querySelector('div.keyboard_key[data-cmd="ESCAPED|-- FN: ON"]'); - if (key === null && e.code === "AltRight") key = document.querySelector('div.keyboard_key[data-cmd="ESCAPED|-- ALT: RIGHT"]'); - if (key === null && e.code === "CapsLock") key = document.querySelector('div.keyboard_key[data-cmd="ESCAPED|-- CAPSLCK: ON"]'); - if (key === null && e.code === "Escape") key = document.querySelector('div.keyboard_key[data-cmd=""]'); - if (key === null && e.code === "Backspace") key = document.querySelector('div.keyboard_key[data-cmd=""]'); - if (key === null && e.code === "ArrowUp") key = document.querySelector('div.keyboard_key[data-cmd="OA"]'); - if (key === null && e.code === "ArrowLeft") key = document.querySelector('div.keyboard_key[data-cmd="OD"]'); - if (key === null && e.code === "ArrowDown") key = document.querySelector('div.keyboard_key[data-cmd="OB"]'); - if (key === null && e.code === "ArrowRight") key = document.querySelector('div.keyboard_key[data-cmd="OC"]'); - if (key === null && e.code === "Enter") key = document.querySelectorAll('div.keyboard_key.keyboard_enter'); - - // Find "rare" keys (ctrl and alt symbols) - if (key === null) key = document.querySelector('div.keyboard_key[data-ctrl_cmd="'+e.key+'"]'); - if (key === null) key = document.querySelector('div.keyboard_key[data-alt_cmd="'+e.key+'"]'); - - return key; - }; - - document.onkeydown = (e) => { - let key = findKey(e); - if (key === null) return; - if (key.length) { - key.forEach((enterElement) => { - enterElement.setAttribute("class", "keyboard_key active keyboard_enter"); - }); - } else { - key.setAttribute("class", "keyboard_key active"); - } - window.audioManager.beep3.play(); - }; - - document.onkeyup = (e) => { - let key = findKey(e); - if (key === null) return; - if (key.length) { - key.forEach((enterElement) => { - enterElement.setAttribute("class", "keyboard_key blink keyboard_enter"); - }); - setTimeout(() => { - key.forEach((enterElement) => { - enterElement.setAttribute("class", "keyboard_key keyboard_enter"); - }); - }, 100); - } else { - key.setAttribute("class", "keyboard_key blink"); - setTimeout(() => { - key.setAttribute("class", "keyboard_key"); - }, 100); - } - - if (e.key === "Enter") { - window.audioManager.beep2.play(); - } - }; + } } } diff --git a/src/classes/locationGlobe.class.js b/src/classes/locationGlobe.class.js index f38fd98a0..3461a323f 100644 --- a/src/classes/locationGlobe.class.js +++ b/src/classes/locationGlobe.class.js @@ -67,6 +67,7 @@ class LocationGlobe { }; this.globe.init(window.theme.colors.light_black, () => { this._animate(); + window.audioManager.scan.play(); }); // resize handler @@ -81,21 +82,21 @@ class LocationGlobe { // Connections this.conns = []; this.addConn = ip => { - require("https").get({host: "ipinfo.now.sh", port: 443, path: "/"+ip, localAddress: window.mods.netstat.internalIPv4, agent: false}, (res) => { - let rawData = ""; - res.on("data", (chunk) => { - rawData += chunk; - }); - res.on("end", () => { - this.parseResponse(rawData, ip).catch(() => { - let electron = require("electron"); - electron.ipcRenderer.send("log", "note", "LocationGlobe: Error parsing data from ipinfo.now.sh"); - electron.ipcRenderer.send("log", "debug", `Error: ${e}`); - }) + let data = null; + try { + data = window.mods.netstat.geoLookup.get(ip); + } catch { + // do nothing + } + let geo = (data !== null ? data.location : {}); + if (geo.latitude && geo.longitude) { + const lat = Number(geo.latitude); + const lon = Number(geo.longitude); + window.mods.globe.conns.push({ + ip, + pin: window.mods.globe.globe.addPin(lat, lon, "", 1.2), }); - }).on("error", (e) => { - // Drop it - }); + } }; this.removeConn = ip => { let index = this.conns.findIndex(x => x.ip === ip); @@ -132,25 +133,29 @@ class LocationGlobe { }, 4000); } - async parseResponse(rawData, ip) { - const json = JSON.parse(rawData); - if (json.geo) { - const lat = Number(json.geo.latitude); - const lon = Number(json.geo.longitude); + addRandomConnectedMarkers() { + const randomLat = this.getRandomInRange(40, 90, 3); + const randomLong = this.getRandomInRange(-180, 0, 3); + this.globe.addMarker(randomLat, randomLong, ''); + this.globe.addMarker(randomLat - 20, randomLong + 150, '', true); + } + addTemporaryConnectedMarker(ip) { + let data = window.mods.netstat.geoLookup.get(ip); + let geo = (data !== null ? data.location : {}); + if (geo.latitude && geo.longitude) { + const lat = Number(geo.latitude); + const lon = Number(geo.longitude); window.mods.globe.conns.push({ ip, - pin: window.mods.globe.globe.addPin(lat, lon, "", 1.2), + pin: window.mods.globe.globe.addPin(lat, lon, "", 1.2) }); + let mark = window.mods.globe.globe.addMarker(lat, lon, '', true); + setTimeout(() => { + mark.remove(); + }, 3000); } } - - addRandomConnectedPoints() { - const randomLat = this.getRandomInRange(40, 90, 3); - const randomLong = this.getRandomInRange(-180, 0, 3); - this.globe.addMarker(randomLat, randomLong, ''); - this.globe.addMarker(randomLat - 20, randomLong + 150, '', true); - } removeMarkers() { this.globe.markers.forEach(marker => { marker.remove(); }); this.globe.markers = []; diff --git a/src/classes/mediaPlayer.class.js b/src/classes/mediaPlayer.class.js new file mode 100644 index 000000000..b426582d0 --- /dev/null +++ b/src/classes/mediaPlayer.class.js @@ -0,0 +1,182 @@ +class MediaPlayer { + constructor(opts) { + const modalElementId = "modal_" + opts.modalId; + const type = opts.type; + const icons = require("./assets/icons/file-icons.json"); + const iconcolor = `rgb(${window.theme.r}, ${window.theme.g}, ${window.theme.b})`; + const mediaContainer = document.getElementById(modalElementId).querySelector(".media_container"); + const media = document.getElementById(modalElementId).querySelector(type); + const mediaControls = document.getElementById(modalElementId).querySelector(".media_controls"); + const playpause = document.getElementById(modalElementId).querySelector(".playpause"); + const volumeIcon = document.getElementById(modalElementId).querySelector(".volume_icon"); + const volume = document.getElementById(modalElementId).querySelector(".volume"); + const volumeBar = document.getElementById(modalElementId).querySelector(".volume_bar"); + const progress = document.getElementById(modalElementId).querySelector(".progress"); + const progressBar = document.getElementById(modalElementId).querySelector(".progress_bar"); + const fullscreen = document.getElementById(modalElementId).querySelector(".fs"); + const mediaTime = document.getElementById(modalElementId).querySelector(".media_time"); + + let volumeDrag = false; + let fullscreenVisible = true; + let fullscreenTimeout; + media.controls = false; + mediaControls.setAttribute("data-state", "visible"); + + this.changeButtonState = (type) => { + if (media.paused || media.ended) { + playpause.setAttribute("data-state", "play"); + playpause.innerHTML = ` + + ${icons["play"].svg} + `; + } else { + playpause.setAttribute("data-state", "pause"); + playpause.innerHTML = ` + + ${icons["pause"].svg} + `; + } + }; + + this.setFullscreenData = (state) => { + if (fullscreen === null) { return; } + mediaContainer.setAttribute("data-fullscreen", !!state); + fullscreen.setAttribute("data-state", !!state ? "cancel-fullscreen" : "go-fullscreen"); + const buttonIcon = !!state ? "fullscreen-exit" : "fullscreen"; + fullscreen.innerHTML = ` + + ${icons[buttonIcon].svg} + `; + }; + + this.handleFullscreen = () => { + if (document.fullscreenElement) { + document.exitFullscreen(); + this.setFullscreenData(false); + + mediaContainer.removeEventListener('mousemove', this.handleFullscreenControls); + fullscreenVisible = true; + clearTimeout(fullscreenTimeout); + this.fullscreenVisible(); + } else { + mediaContainer.requestFullscreen(); + this.setFullscreenData(true); + + fullscreenVisible = false; + this.fullscreenHidden(); + mediaContainer.addEventListener('mousemove', this.handleFullscreenControls); + } + }; + + this.handleFullscreenControls = () => { + if (!fullscreenVisible) { + fullscreenVisible = true + this.fullscreenVisible(); + + clearTimeout(fullscreenTimeout); + + fullscreenTimeout = setTimeout(() => { + fullscreenVisible = false; + this.fullscreenHidden(); + }, 2000); + } + }; + + this.fullscreenHidden = () => { + mediaContainer.style.cursor = "none"; + mediaControls.classList.add("fullscreen_hidden"); + }; + + this.fullscreenVisible = () => { + mediaContainer.style.cursor = "default"; + mediaControls.classList.remove("fullscreen_hidden"); + }; + + this.mediaTimeToHMS = (time) => { + let seconds = parseInt(time) + const hours = parseInt(seconds / 3600); + seconds = seconds % 3600; + const minutes = parseInt(seconds / 60); + seconds = seconds % 60; + return (hours < 10 ? "0" : "") + hours + ":" + + (minutes < 10 ? "0" : "") + minutes + ":" + + (seconds < 10 ? "0" : "") + seconds; + }; + + this.updateVolume = (x) => { + let vol = (x - (volumeBar.offsetLeft + volumeBar.offsetParent.offsetLeft)) / volumeBar.clientWidth; + if (vol > 1) { + vol = 1; + } + if (vol < 0) { + vol = 0; + } + volumeBar.style.clip = "rect(0px, " + ((vol * 100) / 20) + "vw,2vh,0px)"; + media.volume = vol; + this.updateVolumeIcon(vol); + }; + + this.updateVolumeIcon = (vol) => { + let icon = (vol > 0) ? "volume" : "mute"; + volumeIcon.innerHTML = ` + ${icons[icon].svg} + `; + }; + + media.addEventListener("loadedmetadata", () => { + mediaTime.textContent = "00:00:00"; + }); + media.addEventListener("play", () => { this.changeButtonState("playpause") }, false); + media.addEventListener("pause", () => { this.changeButtonState("playpause") }, false); + media.addEventListener("timeupdate", () => { + progressBar.style.width = Math.floor((media.currentTime / media.duration) * 100) + "%"; + mediaTime.textContent = this.mediaTimeToHMS(media.currentTime); + }); + + volume.addEventListener("mousedown", (e) => { + volumeDrag = true; + media.muted = false; + this.updateVolume(e.pageX); + }); + + volumeIcon.addEventListener("click", () => { + media.muted = !media.muted; + if (media.muted) { + let icon = "mute"; + volumeIcon.innerHTML = ` + ${icons[icon].svg} + `; + } else { + this.updateVolumeIcon(media.volume); + } + }); + + progress.addEventListener("click", function(e) { + const pos = (e.pageX - (this.offsetLeft + this.offsetParent.offsetLeft)) / this.offsetWidth; + media.currentTime = pos * media.duration; + }); + playpause.addEventListener("click", () => { + (media.paused || media.ended) ? media.play(): media.pause(); + }); + if (fullscreen) fullscreen.addEventListener("click", () => { this.handleFullscreen() }); + + document.addEventListener("fullscreenchange", () => { + this.setFullscreenData(!!(document.fullscreenElement)); + }); + document.addEventListener("mouseup", (e) => { + if (volumeDrag) { + volumeDrag = false; + this.updateVolume(e.pageX); + } + }); + document.addEventListener("mousemove", (e) => { + if (volumeDrag) { + this.updateVolume(e.pageX); + } + }); + } +} + +module.exports = { + MediaPlayer +}; diff --git a/src/classes/modal.class.js b/src/classes/modal.class.js index c090600f5..c32d30987 100644 --- a/src/classes/modal.class.js +++ b/src/classes/modal.class.js @@ -1,16 +1,20 @@ -window.modals = []; +window.modals = {}; class Modal { constructor(options, onclose) { if (!options || !options.type) throw "Missing parameters"; this.type = options.type; - this.id = window.modals.length; + this.id = require("nanoid").nanoid(); + while (typeof window.modals[this.id] !== "undefined") { + this.id = require("nanoid")(); + } this.title = options.title || options.type || "Modal window"; this.message = options.message || "Lorem ipsum dolor sit amet."; this.onclose = onclose; - let classes = "modal_popup"; + this.classes = "modal_popup"; let buttons = []; + let augs = []; let zindex = 0; // Reserve a slot in window.modals @@ -18,33 +22,37 @@ class Modal { switch(this.type) { case "error": - classes += " error"; + this.classes += " error"; zindex = 1500; - buttons.push({label:"PANIC", action:"window.modals["+this.id+"].close();"}, {label:"RELOAD", action:"window.location.reload(true);"}); + buttons.push({label:"PANIC", action:"window.modals['"+this.id+"'].close();"}, {label:"RELOAD", action:"window.location.reload(true);"}); + augs.push("tr-clip", "bl-rect", "r-clip"); break; case "warning": - classes += " warning"; + this.classes += " warning"; zindex = 1000; - buttons.push({label:"OK", action:"window.modals["+this.id+"].close();"}); + buttons.push({label:"OK", action:"window.modals['"+this.id+"'].close();"}); + augs.push("bl-clip", "tr-clip", "r-rect", "b-rect"); break; case "custom": - classes += " info custom"; + this.classes += " info custom"; zindex = 500; - buttons = options.buttons; - buttons.push({label:"Close", action:"window.modals["+this.id+"].close();"}); + buttons = options.buttons || []; + buttons.push({label:"Close", action:"window.modals['"+this.id+"'].close();"}); + augs.push("tr-clip", "bl-clip"); break; default: - classes += " info"; + this.classes += " info"; zindex = 500; - buttons.push({label:"OK", action:"window.modals["+this.id+"].close();"}); + buttons.push({label:"OK", action:"window.modals['"+this.id+"'].close();"}); + augs.push("tr-clip", "bl-clip"); break; } - let DOMstring = ` +
    +

    SWAP

    + +

    0.0 GiB

    +
    `; modExtContainer.innerHTML = ramwatcherDOM; @@ -24,48 +29,52 @@ class RAMwatcher { this.shuffleArray(this.points); // Init updaters + this.currentlyUpdating = false; this.updateInfo(); this.infoUpdater = setInterval(() => { this.updateInfo(); }, 1500); } updateInfo() { - window.si.mem().then((data) => { - let total = data.free+data.used; - let free = data.free; - let available = data.used-data.active; - let active = data.active; - - if (process.platform === "win32") available = data.available; - - if (free+available+active !== total && process.platform !== "win32") throw("RAM Watcher Error: Bad memory values"); - if (free+data.used !== total && process.platform === "win32") console.warn("RAM Watcher Error: Bad memory values"); + if (this.currentlyUpdating) return; + this.currentlyUpdating = true; + window.si.mem().then(data => { + if (data.free+data.used !== data.total) throw("RAM Watcher Error: Bad memory values"); // Convert the data for the 440-points grid - active = Math.round((440*active)/total); - available = Math.round((440*available)/total); + let active = Math.round((440*data.active)/data.total); + let available = Math.round((440*(data.available-data.free))/data.total); // Update grid - this.points.slice(0, active).forEach((domPoint) => { + this.points.slice(0, active).forEach(domPoint => { if (domPoint.attributes.class.value !== "mod_ramwatcher_point active") { domPoint.setAttribute("class", "mod_ramwatcher_point active"); } }); - this.points.slice(active, available).forEach((domPoint) => { + this.points.slice(active, active+available).forEach(domPoint => { if (domPoint.attributes.class.value !== "mod_ramwatcher_point available") { domPoint.setAttribute("class", "mod_ramwatcher_point available"); } }); - this.points.slice(available, this.points.length).forEach((domPoint) => { + this.points.slice(active+available, this.points.length).forEach(domPoint => { if (domPoint.attributes.class.value !== "mod_ramwatcher_point free") { domPoint.setAttribute("class", "mod_ramwatcher_point free"); } }); // Update info text - let totalGiB = Math.round((total/1073742000)*2)/2; // 1073742000 bytes = 1 Gibibyte (GiB) - let usedGiB = Math.round((data.active/1073742000)*2)/2; + let totalGiB = Math.round((data.total/1073742000)*10)/10; // 1073742000 bytes = 1 Gibibyte (GiB), the *10 is to round to .1 decimal + let usedGiB = Math.round((data.active/1073742000)*10)/10; document.getElementById("mod_ramwatcher_info").innerText = `USING ${usedGiB} OUT OF ${totalGiB} GiB`; + + // Update swap indicator + let usedSwap = Math.round((100*data.swapused)/data.swaptotal); + document.getElementById("mod_ramwatcher_swapbar").value = usedSwap || 0; + + let usedSwapGiB = Math.round((data.swapused/1073742000)*10)/10; + document.getElementById("mod_ramwatcher_swaptext").innerText = `${usedSwapGiB} GiB`; + + this.currentlyUpdating = false; }); } shuffleArray(array) { diff --git a/src/classes/sysinfo.class.js b/src/classes/sysinfo.class.js index 299d22db8..e9b60dfc2 100644 --- a/src/classes/sysinfo.class.js +++ b/src/classes/sysinfo.class.js @@ -114,15 +114,15 @@ class Sysinfo { if (uptime.hours.toString().length !== 2) uptime.hours = "0"+uptime.hours; if (uptime.minutes.toString().length !== 2) uptime.minutes = "0"+uptime.minutes; - document.querySelector("#mod_sysinfo > div:nth-child(2) > h2").innerHTML = uptime.days+":"+uptime.hours+":"+uptime.minutes; + document.querySelector("#mod_sysinfo > div:nth-child(2) > h2").innerHTML = uptime.days + 'd' + uptime.hours + ':' + uptime.minutes; } updateBattery() { window.si.battery().then(bat => { let indicator = document.querySelector("#mod_sysinfo > div:last-child > h2"); - if (bat.hasbattery) { - if (bat.ischarging) { + if (bat.hasBattery) { + if (bat.isCharging) { indicator.innerHTML = "CHARGE"; - } else if (bat.acconnected || bat.timeremaining === -1) { + } else if (bat.acConnected) { indicator.innerHTML = "WIRED"; } else { indicator.innerHTML = bat.percent+"%"; diff --git a/src/classes/terminal.class.js b/src/classes/terminal.class.js index df9891c1a..742af8b07 100644 --- a/src/classes/terminal.class.js +++ b/src/classes/terminal.class.js @@ -4,17 +4,16 @@ class Terminal { if (!opts.parentId) throw "Missing options"; this.xTerm = require("xterm").Terminal; + const {AttachAddon} = require("xterm-addon-attach"); + const {FitAddon} = require("xterm-addon-fit"); + const {LigaturesAddon} = require("xterm-addon-ligatures"); + const {WebglAddon} = require("xterm-addon-webgl"); this.Ipc = require("electron").ipcRenderer; this.port = opts.port || 3000; this.cwd = ""; this.oncwdchange = () => {}; - let attachAddon = require("./node_modules/xterm/lib/addons/attach/attach.js"); - let fitAddon = require("./node_modules/xterm/lib/addons/fit/fit.js"); - this.xTerm.applyAddon(attachAddon); - this.xTerm.applyAddon(fitAddon); - this._sendSizeToServer = () => { let cols = this.term.cols.toString(); let rows = this.term.rows.toString(); @@ -27,10 +26,75 @@ class Terminal { this.Ipc.send("terminal_channel-"+this.port, "Resize", cols, rows); }; + // Support for custom color filters on the terminal - see #483 + let doCustomFilter = (window.isTermFilterValidated) ? true : false; + + // Parse & validate color filter + if (window.isTermFilterValidated !== true && typeof window.theme.terminal.colorFilter === "object" && window.theme.terminal.colorFilter.length > 0) { + doCustomFilter = window.theme.terminal.colorFilter.every((step, i, a) => { + let func = step.slice(0, step.indexOf("(")); + + switch(func) { + case "negate": + case "grayscale": + a[i] = { + func, + arg: [] + }; + return true; + case "lighten": + case "darken": + case "saturate": + case "desaturate": + case "whiten": + case "blacken": + case "fade": + case "opaquer": + case "rotate": + case "mix": + break; + default: + return false; + } + + let arg = step.slice(step.indexOf("(")+1, step.indexOf(")")); + + if (typeof Number(arg) === "number") { + a[i] = { + func, + arg: [Number(arg)] + }; + window.isTermFilterValidated = true; + return true; + } + + return false; + }); + } + let color = require("color"); - let colorify = (base, target) => { - return color(base).grayscale().mix(color(target), 0.3).hex(); - }; + let colorify; + if (doCustomFilter) { + colorify = (base, target) => { + let newColor = color(base); + target = color(target); + + for (let i = 0; i < window.theme.terminal.colorFilter.length; i++) { + if (window.theme.terminal.colorFilter[i].func === "mix") { + newColor = newColor[window.theme.terminal.colorFilter[i].func](target, ...window.theme.terminal.colorFilter[i].arg); + } else { + newColor = newColor[window.theme.terminal.colorFilter[i].func](...window.theme.terminal.colorFilter[i].arg); + } + } + + return newColor.hex(); + }; + } else { + colorify = (base, target) => { + return color(base).grayscale().mix(color(target), 0.3).hex(); + }; + } + let themeColor = `rgb(${window.theme.r}, ${window.theme.g}, ${window.theme.b})`; this.term = new this.xTerm({ @@ -40,7 +104,7 @@ class Terminal { cursorStyle: window.theme.terminal.cursorStyle || "block", allowTransparency: window.theme.terminal.allowTransparency || false, fontFamily: window.theme.terminal.fontFamily || "Fira Mono", - fontSize: window.theme.terminal.fontSize || 15, + fontSize: window.theme.terminal.fontSize || window.settings.termFontSize || 15, fontWeight: window.theme.terminal.fontWeight || "normal", fontWeightBold: window.theme.terminal.fontWeightBold || "bold", letterSpacing: window.theme.terminal.letterSpacing || 0, @@ -71,7 +135,18 @@ class Terminal { brightWhite: window.theme.colors.brightWhite || colorify("#eeeeec", themeColor) } }); + let fitAddon = new FitAddon(); + this.term.loadAddon(fitAddon); this.term.open(document.getElementById(opts.parentId)); + this.term.loadAddon(new WebglAddon()); + let ligaturesAddon = new LigaturesAddon(); + this.term.loadAddon(ligaturesAddon); + this.term.attachCustomKeyEventHandler(e => { + window.keyboard.keydownHandler(e); + return true; + }); + // Prevent soft-keyboard on touch devices #733 + document.querySelectorAll('.xterm-helper-textarea').forEach(textarea => textarea.setAttribute('readonly', 'readonly')) this.term.focus(); this.Ipc.send("terminal_channel-"+this.port, "Renderer startup"); @@ -103,7 +178,8 @@ class Terminal { this.socket = new WebSocket("ws://"+sockHost+":"+sockPort); this.socket.onopen = () => { - this.term.attach(this.socket); + let attachAddon = new AttachAddon(this.socket); + this.term.loadAddon(attachAddon); this.fit(); }; this.socket.onerror = e => {throw JSON.stringify(e)}; @@ -112,11 +188,29 @@ class Terminal { this.onclose(e); } }; - this.socket.addEventListener("message", () => { - window.audioManager.beep1.play(); - if (Date.now() - this.lastRefit > 10000) { + + this.lastSoundFX = Date.now(); + this.socket.addEventListener("message", e => { + let d = Date.now(); + + if (d - this.lastSoundFX > 30) { + if(window.passwordMode == "false") + window.audioManager.stdout.play(); + this.lastSoundFX = d; + } + if (d - this.lastRefit > 10000) { this.fit(); } + + // See #397 + if (!window.settings.experimentalGlobeFeatures) return; + let ips = e.data.match(/((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/g); + if (ips !== null && ips.length >= 1) { + ips = ips.filter((val, index, self) => { return self.indexOf(val) === index; }); + ips.forEach(ip => { + window.mods.globe.addTemporaryConnectedMarker(ip); + }); + } }); let parent = document.getElementById(opts.parentId); @@ -145,15 +239,13 @@ class Terminal { document.querySelector(".xterm-helper-textarea").addEventListener("keydown", e => { if (e.key === "F11" && window.settings.allowWindowed) { e.preventDefault(); - let win = require("electron").remote.BrowserWindow.getFocusedWindow(); - let bool = (win.isFullScreen() ? false : true); - win.setFullScreen(bool); + window.toggleFullScreen(); } }); this.fit = () => { this.lastRefit = Date.now(); - let {cols, rows} = this.term.proposeGeometry(); + let {cols, rows} = fitAddon.proposeDimensions(); // Apply custom fixes based on screen ratio, see #302 let w = screen.width; @@ -166,7 +258,11 @@ class Terminal { } let d = gcd(w, h); - if (d === 120) y = 1; + if (d === 100) { y = 1; x = 3;} + // if (d === 120) y = 1; + if (d === 256) x = 2; + + if (window.settings.termFontSize < 15) y = y - 1; cols = cols+x; rows = rows+y; @@ -197,11 +293,8 @@ class Terminal { this.clipboard.didCopy = true; }, paste: () => { - this.Ipc.once("clipboard-reply", (e, txt) => { - this.write(txt); - this.clipboard.didCopy = false; - }); - this.Ipc.send("clipboard", "read"); + this.write(remote.clipboard.readText()); + this.clipboard.didCopy = false; }, didCopy: false }; @@ -222,7 +315,7 @@ class Terminal { this.ondisconnected = () => {}; this._disableCWDtracking = false; - this._getTtyCWD = (tty) => { + this._getTtyCWD = tty => { return new Promise((resolve, reject) => { let pid = tty._pid; switch(require("os").type()) { @@ -236,11 +329,7 @@ class Terminal { }); break; case "Darwin": - // OK, the following is quite of a hacky solution - // Each $XX after the $9 in the awk commands provide support for one more space - // character in the path (otherwise it just gets cut) - // There's probably a better way to do this, PRs welcome - require("child_process").exec(`lsof -a -d cwd -p ${pid} | tail -1 | awk '{print $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20}'`, (e, cwd) => { + require("child_process").exec(`lsof -a -d cwd -p ${pid} | tail -1 | awk '{ for (i=9; i<=NF; i++) printf "%s ", $i }'`, (e, cwd) => { if (e !== null) { reject(e); } else { @@ -253,6 +342,25 @@ class Terminal { } }); }; + this._getTtyProcess = tty => { + return new Promise((resolve, reject) => { + let pid = tty._pid; + switch(require("os").type()) { + case "Linux": + case "Darwin": + require("child_process").exec(`ps -o comm --no-headers --sort=+pid -g ${pid} | tail -1`, (e, proc) => { + if (e !== null) { + reject(e); + } else { + resolve(proc.trim()); + } + }); + break; + default: + reject("Unsupported OS"); + } + }); + }; this._nextTickUpdateTtyCWD = false; this._nextTickUpdateProcess = false; this._tick = setInterval(() => { @@ -268,28 +376,45 @@ class Terminal { if (!this._closed) { console.log("Error while tracking TTY working directory: ", e); this._disableCWDtracking = true; - if (this.renderer) { + try { this.renderer.send("terminal_channel-"+this.port, "Fallback cwd", opts.cwd || process.env.PWD); + } catch(e) { + // renderer closed } } }); } if (this.renderer && this._nextTickUpdateProcess) { - this.renderer.send("terminal_channel-"+this.port, "New process", this.tty._file); this._nextTickUpdateProcess = false; + this._getTtyProcess(this.tty).then(process => { + if (this.tty._process === process) return; + this.tty._process = process; + if (this.renderer) { + this.renderer.send("terminal_channel-"+this.port, "New process", process); + } + }).catch(e => { + if (!this._closed) { + console.log("Error while retrieving TTY subprocess: ", e); + try { + this.renderer.send("terminal_channel-"+this.port, "New process", ""); + } catch(e) { + // renderer closed + } + } + }); } }, 1000); - this.tty = this.Pty.spawn(opts.shell || "bash", opts.params || [], { - name: "xterm-color", + this.tty = this.Pty.spawn(opts.shell || "bash", (opts.params.length > 0 ? opts.params : (process.platform === "win32" ? [] : ["--login"])), { + name: opts.env.TERM || "xterm-256color", cols: 80, rows: 24, cwd: opts.cwd || process.env.PWD, env: opts.env || process.env }); - this.tty.on("exit", (code, signal) => { + this.tty.onExit((code, signal) => { this._closed = true; this.onclosed(code, signal); }); @@ -297,7 +422,7 @@ class Terminal { this.wss = new this.Websocket({ port: this.port, clientTracking: true, - verifyClient: (info) => { + verifyClient: info => { if (this.wss.clients.length >= 1) { return false; } else { @@ -319,22 +444,26 @@ class Terminal { case "Resize": let cols = args[1]; let rows = args[2]; - this.tty.resize(Number(cols), Number(rows)); + try { + this.tty.resize(Number(cols), Number(rows)); + } catch (error) { + //Keep going, it'll work anyways. + } this.onresized(cols, rows); break; default: return; } }); - this.wss.on("connection", (ws) => { - this.onopened(); + this.wss.on("connection", ws => { + this.onopened(this.tty._pid); ws.on("close", (code, reason) => { this.ondisconnected(code, reason); }); - ws.on("message", (msg) => { + ws.on("message", msg => { this.tty.write(msg); }); - this.tty.on("data", (data) => { + this.tty.onData(data => { this._nextTickUpdateTtyCWD = true; this._nextTickUpdateProcess = true; try { diff --git a/src/classes/toplist.class.js b/src/classes/toplist.class.js index d73b05e32..a4ffcc688 100644 --- a/src/classes/toplist.class.js +++ b/src/classes/toplist.class.js @@ -8,26 +8,38 @@ class Toplist { this._element.setAttribute("id", "mod_toplist"); this._element.innerHTML = `

    TOP PROCESSESPID | NAME | CPU | MEM


    `; + this._element.onclick = this.processList; this.parent.append(this._element); + this.currentlyUpdating = false; + this.updateList(); this.listUpdater = setInterval(() => { this.updateList(); - }, 5000); + }, 2000); } updateList() { + if (this.currentlyUpdating) return; + + this.currentlyUpdating = true; window.si.processes().then(data => { - if (window.settings.excludeSelfFromToplist === true) { - data.list = data.list.filter(proc => { - if (proc.name.startsWith("eDEX-UI")) return false; - if (proc.name === "electron" && proc.command.includes("edex-ui")) return false; + if (window.settings.excludeThreadsFromToplist === true) { + data.list = data.list.sort((a, b) => { + return (a.pid-b.pid); + }).filter((e, index, a) => { + let i = a.findIndex(x => x.name === e.name); + if (i !== -1 && i !== index) { + a[i].cpu = a[i].cpu+e.cpu; + a[i].mem = a[i].mem+e.mem; + return false; + } return true; }); } let list = data.list.sort((a, b) => { - return ((b.pcpu-a.pcpu)*100 + b.pmem-a.pmem); + return ((b.cpu-a.cpu)*100 + b.mem-a.mem); }).splice(0, 5); document.querySelectorAll("#mod_toplist_table > tr").forEach(el => { @@ -37,12 +49,196 @@ class Toplist { let el = document.createElement("tr"); el.innerHTML = `${proc.pid} ${proc.name} - ${Math.round(proc.pcpu*10)/10}% - ${Math.round(proc.pmem*10)/10}%`; + ${Math.round(proc.cpu*10)/10}% + ${Math.round(proc.mem*10)/10}%`; document.getElementById("mod_toplist_table").append(el); }); + this.currentlyUpdating = false; }); } + + processList(){ + let sortKey; + let ascending = false; + let removed = false; + let currentlyUpdating = false; + + function setSortKey(fieldName){ + if (sortKey === fieldName){ + if (ascending){ + sortKey = undefined; + ascending = false; + } + else{ + ascending = true; + } + } + else { + sortKey = fieldName; + ascending = false; + } + } + + function formatRuntime(ms){ + const msInDay = 24 * 60 * 60 * 1000; + let days = Math.floor(ms / msInDay); + let remainingMS = ms % msInDay; + + const msInHour = 60 * 60 * 1000; + let hours = Math.floor(remainingMS / msInHour); + remainingMS = ms % msInHour; + + let msInMin = 60 * 1000; + let minutes = Math.floor(remainingMS / msInMin); + remainingMS = ms % msInMin; + + let seconds = Math.floor(remainingMS / 1000); + + return `${days < 10 ? "0" : ""}${days}:${hours < 10 ? "0" : ""}${hours}:${minutes < 10 ? "0" : ""}${minutes}:${seconds < 10 ? "0" : ""}${seconds}`; + } + + function updateProcessList() { + if (currentlyUpdating) return; + currentlyUpdating = true; + window.si.processes().then(data => { + if (window.settings.excludeThreadsFromToplist === true) { + data.list = data.list.sort((a, b) => { + return (a.pid - b.pid); + }).filter((e, index, a) => { + let i = a.findIndex(x => x.name === e.name); + if (i !== -1 && i !== index) { + a[i].cpu = a[i].cpu + e.cpu; + a[i].mem = a[i].mem + e.mem; + return false; + } + return true; + }); + } + + data.list.forEach(proc => { + proc.runtime = new Date(Date.now() - Date.parse(proc.started)); + }); + + currentlyUpdating = false; + let list = data.list.sort((a, b) => { + switch (sortKey) { + case "PID": + if (ascending) return a.pid - b.pid; + else return b.pid - a.pid; + case "Name": + if (ascending) { + if (a.name > b.name) return -1; + if (a.name < b.name) return 1; + return 0; + } + else { + if (a.name < b.name) return -1; + if (a.name > b.name) return 1; + return 0; + } + case "User": + if (ascending) { + if (a.user > b.user) return -1; + if (a.user < b.user) return 1; + return 0; + } + else { + if (a.user < b.user) return -1; + if (a.user > b.user) return 1; + return 0; + } + case "CPU": + if (ascending) return a.cpu - b.cpu; + else return b.cpu - a.cpu; + case "Memory": + if (ascending) return a.mem - b.mem; + else return b.mem - a.mem; + case "State": + if (a.state < b.state) return -1; + if (a.state > b.state) return 1; + return 0; + case "Started": + if (ascending) return Date.parse(a.started) - Date.parse(b.started); + else return Date.parse(b.started) - Date.parse(a.started); + case "Runtime": + if (ascending) return a.runtime - b.runtime; + else return b.runtime - a.runtime; + default: + // default to the same sorting as the toplist + return ((b.cpu - a.cpu) * 100 + b.mem - a.mem); + } + }); + + if (removed) clearInterval(updateInterval); + else { + document.querySelectorAll("#processList > tr").forEach(el => { + el.remove(); + }); + + list.forEach(proc => { + let el = document.createElement("tr"); + el.innerHTML = `${proc.pid} + ${proc.name} + ${proc.user} + ${Math.round(proc.cpu * 10) / 10}% + ${Math.round(proc.mem * 10) / 10}% + ${proc.state} + ${proc.started} + ${formatRuntime(proc.runtime)}`; + document.getElementById("processList").append(el); + }); + } + }); + } + + window.keyboard.detach(); + new Modal( + { + type: "custom", + title: "Active Processes", + html: ` + + + + + + + + + + + + + + + +
    PIDNameUserCPUMemoryStateStartedRuntime
    `, + }, + () => { + removed = true; + //clearInterval(updateInterval); + } + ); + + let headers = document.getElementsByClassName("header"); + for (let header of headers){ + let title = header.textContent; + header.addEventListener("click", () => { + for (let header of headers) { + header.textContent = header.textContent.replace('\u25B2', "").replace('\u25BC', ""); + } + setSortKey(title); + if (sortKey){ + header.textContent = `${title}${ascending ? '\u25B2' : '\u25BC'}`; + } + }); + } + + updateProcessList(); + window.keyboard.attach(); + window.term[window.currentTerm].term.focus(); + var updateInterval = setInterval(updateProcessList, 1000); + } } module.exports = { diff --git a/src/classes/updateChecker.class.js b/src/classes/updateChecker.class.js index 7e8adb602..51ba30da6 100644 --- a/src/classes/updateChecker.class.js +++ b/src/classes/updateChecker.class.js @@ -2,11 +2,12 @@ class UpdateChecker { constructor() { let https = require("https"); let electron = require("electron"); - let current = electron.remote.app.getVersion(); + let remote = require("@electron/remote"); + let current = remote.app.getVersion(); this._failed = false; this._willfail = false; - this._fail = (e) => { + this._fail = e => { this._failed = true; electron.ipcRenderer.send("log", "note", "UpdateChecker: Could not fetch latest release from GitHub's API."); electron.ipcRenderer.send("log", "debug", `Error: ${e}`); diff --git a/src/package-lock.json b/src/package-lock.json index 85f95d2ba..2ff49878a 100644 --- a/src/package-lock.json +++ b/src/package-lock.json @@ -1,13 +1,3001 @@ { "name": "edex-ui", - "version": "2.0.0-pre", - "lockfileVersion": 1, + "version": "2.2.8", + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "edex-ui", + "version": "2.2.8", + "license": "GPL-3.0", + "dependencies": { + "@electron/remote": "^1.2.2", + "augmented-ui": "^1.1.2", + "color": "3.2.1", + "geolite2-redist": "^2.0.4", + "howler": "2.2.3", + "maxmind": "4.3.2", + "mime-types": "^2.1.33", + "nanoid": "3.1.30", + "node-pty": "0.10.1", + "pdfjs-dist": "2.11.338", + "pretty-bytes": "5.6.0", + "shell-env": "3.0.1", + "signale": "1.4.0", + "smoothie": "1.35.0", + "systeminformation": "5.9.7", + "tail": "2.2.4", + "username": "5.1.0", + "which": "2.0.2", + "ws": "7.5.5", + "xterm": "4.14.1", + "xterm-addon-attach": "0.6.0", + "xterm-addon-fit": "0.5.0", + "xterm-addon-ligatures": "0.5.1", + "xterm-addon-webgl": "^0.11.2" + }, + "optionalDependencies": { + "osx-temperature-sensor": "1.0.7" + } + }, + "node_modules/@electron/get": { + "version": "1.12.4", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.4.tgz", + "integrity": "sha512-6nr9DbJPUR9Xujw6zD3y+rS95TyItEVM0NVjt1EehY2vUWfIgPiIPVHxCvaTS0xr2B+DRxovYVKbuOWqC35kjg==", + "peer": true, + "dependencies": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "got": "^9.6.0", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "engines": { + "node": ">=8.6" + }, + "optionalDependencies": { + "global-agent": "^2.0.2", + "global-tunnel-ng": "^2.7.1" + } + }, + "node_modules/@electron/get/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@electron/remote": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@electron/remote/-/remote-1.2.2.tgz", + "integrity": "sha512-PfnXpQGWh4vpX866NNucJRnNOzDRZcsLcLaT32fUth9k0hccsohfxprqEDYLzRg+ZK2xRrtyUN5wYYoHimMCJg==", + "peerDependencies": { + "electron": ">= 10.0.0-beta.1" + } + }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "peer": true, + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@types/eslint": { + "version": "7.2.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.10.tgz", + "integrity": "sha512-kUEPnMKrqbtpCq/KTaGFFKAcz6Ethm2EjCoKIDaCmfRBWLbFuTcOJfTlorwbnboXBzahqWLgUp1BQeKHiJzPUQ==", + "optional": true, + "peer": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz", + "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==", + "optional": true, + "peer": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.47", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.47.tgz", + "integrity": "sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg==", + "optional": true, + "peer": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", + "optional": true, + "peer": true + }, + "node_modules/@types/node": { + "version": "15.0.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.0.2.tgz", + "integrity": "sha512-p68+a+KoxpoB47015IeYZYRrdqMUcpbK8re/zpFB8Ld46LHC1lPEbp3EXgkEhAYEcPvjJF6ZO+869SQ0aH1dcA==", + "optional": true, + "peer": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", + "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==", + "optional": true, + "peer": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz", + "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==", + "optional": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz", + "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==", + "optional": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz", + "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==", + "optional": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz", + "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==", + "optional": true, + "peer": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.0", + "@webassemblyjs/helper-api-error": "1.11.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz", + "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==", + "optional": true, + "peer": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz", + "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==", + "optional": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz", + "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==", + "optional": true, + "peer": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz", + "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==", + "optional": true, + "peer": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz", + "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==", + "optional": true, + "peer": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz", + "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==", + "optional": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/helper-wasm-section": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0", + "@webassemblyjs/wasm-opt": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0", + "@webassemblyjs/wast-printer": "1.11.0" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz", + "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==", + "optional": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/ieee754": "1.11.0", + "@webassemblyjs/leb128": "1.11.0", + "@webassemblyjs/utf8": "1.11.0" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz", + "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==", + "optional": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz", + "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==", + "optional": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-api-error": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/ieee754": "1.11.0", + "@webassemblyjs/leb128": "1.11.0", + "@webassemblyjs/utf8": "1.11.0" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz", + "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==", + "optional": true, + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "optional": true, + "peer": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "optional": true, + "peer": true + }, + "node_modules/acorn": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.2.4.tgz", + "integrity": "sha512-Ibt84YwBDDA890eDiDCEqcbwvHlBvzzDkU2cGBBDDI1QWT12jTiXIOn2CIw5KK4i6N5Z2HUxwYjzriDyqaqqZg==", + "optional": true, + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.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==", + "optional": true, + "peer": 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/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "optional": true, + "peer": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/augmented-ui": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/augmented-ui/-/augmented-ui-1.1.2.tgz", + "integrity": "sha512-sAcv/qZ21sQzNF+gOKNerULDwAIMOHfuLCuHlNpzwi55OexWgndD+G+H2/CS8zmK7ymBFA0uUyf6N/dTnLIiXw==" + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "optional": true, + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/boolean": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.0.4.tgz", + "integrity": "sha512-5pyOr+w2LNN72F2mAq6J0ckHUfJYSgRKma7e/wlcMMhgOLV9OI0ERhERYXxUqo+dPyVxcbXKy9n+wg13+LpNnA==", + "optional": true, + "peer": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "optional": true, + "peer": true, + "dependencies": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "peer": true + }, + "node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "peer": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "peer": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001223", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001223.tgz", + "integrity": "sha512-k/RYs6zc/fjbxTjaWZemeSmOjO0JJV+KguOBA3NwPup8uzxM1cMhR2BD9XmO86GuqaqTCO8CgkgH9Rz//vdDiA==", + "optional": true, + "peer": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "peer": true, + "dependencies": { + "mimic-response": "^1.0.0" + } + }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/color-string": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.6.0.tgz", + "integrity": "sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "optional": true, + "peer": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "optional": true, + "peer": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "optional": true, + "peer": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/core-js": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.12.1.tgz", + "integrity": "sha512-Ne9DKPHTObRuB09Dru5AjwKjY4cJHVGu+y5f7coGn1E9Grkc3p2iBwE9AI/nJzsE29mQF7oq+mhYYRqOMFN1Bw==", + "hasInstallScript": true, + "optional": true, + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "peer": true + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "peer": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "peer": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/default-shell": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/default-shell/-/default-shell-1.0.1.tgz", + "integrity": "sha1-dSMEvdxhdPSespy5iP7qC4gTyLw=", + "engines": { + "node": ">=4" + } + }, + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "peer": true + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "optional": true, + "peer": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "optional": true, + "peer": true + }, + "node_modules/duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "peer": true + }, + "node_modules/electron": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-13.0.0.tgz", + "integrity": "sha512-5SgpU7BgR4DJM1TPuZmKQ89A0AMN9vq7J7OfJebbHjsAuYP+rmJwosVna/RpLYFBuQNM90gnny5sffYGDZFQ4w==", + "hasInstallScript": true, + "peer": true, + "dependencies": { + "@electron/get": "^1.0.1", + "@types/node": "^14.6.2", + "extract-zip": "^1.0.3" + }, + "bin": { + "electron": "cli.js" + }, + "engines": { + "node": ">= 8.6" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.3.727", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.727.tgz", + "integrity": "sha512-Mfz4FIB4FSvEwBpDfdipRIrwd6uo8gUDoRDF4QEYb4h4tSuI3ov594OrjU6on042UlFHouIJpClDODGkPcBSbg==", + "optional": true, + "peer": true + }, + "node_modules/electron/node_modules/@types/node": { + "version": "14.17.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.1.tgz", + "integrity": "sha512-/tpUyFD7meeooTRwl3sYlihx2BrJE7q9XF71EguPFIySj9B7qgnRtHsHTho+0AUm4m1SvWGm6uSncrR94q6Vtw==", + "peer": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "optional": true, + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.0.tgz", + "integrity": "sha512-Sl3KRpJA8OpprrtaIswVki3cWPiPKxXuFxJXBp+zNb6s6VwNWwFRUdtmzd2ReUut8n+sCPx7QCtQ7w5wfJhSgQ==", + "optional": true, + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-ex/node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "node_modules/es-module-lexer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz", + "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==", + "optional": true, + "peer": true + }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "optional": true, + "peer": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "optional": true, + "peer": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "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==", + "optional": true, + "peer": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "peer": true, + "dependencies": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + } + }, + "node_modules/extract-zip/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "peer": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/extract-zip/node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "peer": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/extract-zip/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "peer": true + }, + "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==", + "optional": true, + "peer": true + }, + "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==", + "optional": true, + "peer": true + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "peer": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/font-finder": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/font-finder/-/font-finder-1.1.0.tgz", + "integrity": "sha512-wpCL2uIbi6GurJbU7ZlQ3nGd61Ho+dSU6U83/xJT5UPFfN35EeCW/rOtS+5k+IuEZu2SYmHzDIPL9eA5tSYRAw==", + "dependencies": { + "get-system-fonts": "^2.0.0", + "promise-stream-reader": "^1.0.1" + }, + "engines": { + "node": ">8.0.0" + } + }, + "node_modules/font-ligatures": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/font-ligatures/-/font-ligatures-1.4.0.tgz", + "integrity": "sha512-n7DFnnEpJ0NrVoLqZIL4tMGVs+CnFwQc92m80LWyrbgAFO4x234+t2/H9o4eOYA1eh6ta9dZAEEsJAwsBdNezA==", + "dependencies": { + "font-finder": "^1.0.3", + "lru-cache": "^6.0.0", + "opentype.js": "^0.8.0" + }, + "engines": { + "node": ">8.0.0" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/geolite2-redist": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/geolite2-redist/-/geolite2-redist-2.0.4.tgz", + "integrity": "sha512-pkKr7v55QYdmKcHmM1qW2EAKVpIPzyR15peCdSH3eoR2IBOgiZ19RQtBVqOV7PGTODBbhU+MyHN9em1xPFtZsQ==", + "dependencies": { + "rimraf": "^3.0.2", + "tar": "^6.1.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/get-system-fonts": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-system-fonts/-/get-system-fonts-2.0.2.tgz", + "integrity": "sha512-zzlgaYnHMIEgHRrfC7x0Qp0Ylhw/sHpM6MHXeVBTYIsvGf5GpbnClB+Q6rAPdn+0gd2oZZIo6Tj3EaWrt4VhDQ==", + "engines": { + "node": ">8.0.0" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "optional": true, + "peer": true + }, + "node_modules/global-agent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.2.0.tgz", + "integrity": "sha512-+20KpaW6DDLqhG7JDiJpD1JvNvb8ts+TNl7BPOYcURqCrXqnN1Vf+XVOrkKJAFPqfX+oEhsdzOj1hLWkBTdNJg==", + "optional": true, + "peer": true, + "dependencies": { + "boolean": "^3.0.1", + "core-js": "^3.6.5", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/global-agent/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "optional": true, + "peer": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/global-tunnel-ng": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", + "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==", + "optional": true, + "peer": true, + "dependencies": { + "encodeurl": "^1.0.2", + "lodash": "^4.17.10", + "npm-conf": "^1.1.3", + "tunnel": "^0.0.6" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/globalthis": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.2.tgz", + "integrity": "sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==", + "optional": true, + "peer": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "peer": true, + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/howler": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/howler/-/howler-2.2.3.tgz", + "integrity": "sha512-QM0FFkw0LRX1PR8pNzJVAY25JhIWvbKMBFM4gqk+QdV+kPXOhleWGCB6AiAF/goGjIHK2e/nIElplvjQwhr0jg==" + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "peer": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "optional": true, + "peer": true + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "peer": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "optional": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/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==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "peer": true + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "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==", + "optional": true, + "peer": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "optional": true, + "peer": true + }, + "node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "optional": true, + "peer": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "peer": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "peer": true, + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "optional": true, + "peer": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "optional": true, + "peer": true + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "optional": true, + "peer": true, + "dependencies": { + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/matcher/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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/maxmind": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/maxmind/-/maxmind-4.3.2.tgz", + "integrity": "sha512-cZ4nsLeYbFWVbhkBU3VTPJ10SDCGAKQ8kGpuYh1AesN4NvMQGab+NIBqcReA4dxQqPjA/CM6e6mQGCusvUSp6Q==", + "dependencies": { + "mmdb-lib": "1.3.0", + "tiny-lru": "7.0.6" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dependencies": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "optional": true, + "peer": true + }, + "node_modules/mime-db": { + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", + "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.33", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", + "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", + "dependencies": { + "mime-db": "1.50.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "peer": true + }, + "node_modules/minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mmdb-lib": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mmdb-lib/-/mmdb-lib-1.3.0.tgz", + "integrity": "sha512-KrRrAuC+X9ZkkPZNsqgHUGrop28vcmqISILyUXG0xOYt82ObU9d9XowVsjOVOr5CegyjrkmxEN5ut9r576vq2g==", + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "peer": true + }, + "node_modules/nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + }, + "node_modules/nanoid": { + "version": "3.1.30", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", + "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "optional": true, + "peer": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "node_modules/node-pty": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/node-pty/-/node-pty-0.10.1.tgz", + "integrity": "sha512-JTdtUS0Im/yRsWJSx7yiW9rtpfmxqxolrtnyKwPLI+6XqTAPW/O2MjS8FYL4I5TsMbH2lVgDb2VMjp+9LoQGNg==", + "hasInstallScript": true, + "dependencies": { + "nan": "^2.14.0" + } + }, + "node_modules/node-releases": { + "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "optional": true, + "peer": true + }, + "node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "optional": true, + "peer": true, + "dependencies": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/opentype.js": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/opentype.js/-/opentype.js-0.8.0.tgz", + "integrity": "sha1-rKvPoWQvvolKPk11nkO6aU4CvTU=", + "dependencies": { + "tiny-inflate": "^1.0.2" + }, + "bin": { + "ot": "bin/ot" + } + }, + "node_modules/osx-temperature-sensor": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/osx-temperature-sensor/-/osx-temperature-sensor-1.0.7.tgz", + "integrity": "sha512-5hijMYtDVmcrR/LTZ8702SZOO2TVt5868KeraD02WyEI+3/YZJI4Cl9fvzCOc5vzizGGjvsfaCKZOKHF+RJ0wA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "engines": { + "node": ">=4" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "engines": { + "node": ">=4" + } + }, + "node_modules/pdfjs-dist": { + "version": "2.11.338", + "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.11.338.tgz", + "integrity": "sha512-Ti5VTB0VvSdtTtc7TG71ghMx0SEuNcEs4ghVuZxW0p6OqLjMc0xekZV1B+MmlxEG2Du2e5jgazucWIG/SXTcdA==", + "peerDependencies": { + "worker-loader": "^3.0.8" + }, + "peerDependenciesMeta": { + "worker-loader": { + "optional": true + } + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "peer": true + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", + "dependencies": { + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "peer": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "peer": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise-stream-reader": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-stream-reader/-/promise-stream-reader-1.0.1.tgz", + "integrity": "sha512-Tnxit5trUjBAqqZCGWwjyxhmgMN4hGrtpW3Oc/tRI4bpm/O2+ej72BB08l6JBnGQgVDGCLvHFGjGgQS6vzhwXg==", + "engines": { + "node": ">8.0.0" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "optional": true, + "peer": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "optional": true, + "peer": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "peer": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "peer": true + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "peer": true, + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "optional": true, + "peer": true, + "dependencies": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "optional": true, + "peer": true + }, + "node_modules/schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "optional": true, + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "optional": true, + "peer": true + }, + "node_modules/serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "optional": true, + "peer": true, + "dependencies": { + "type-fest": "^0.13.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "optional": true, + "peer": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shell-env": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shell-env/-/shell-env-3.0.1.tgz", + "integrity": "sha512-b09fpMipAQ9ObwvIeKoQFLDXcEcCpYUUZanlad4OYQscw2I49C/u97OPQg9jWYo36bRDn62fbe07oWYqovIvKA==", + "dependencies": { + "default-shell": "^1.0.1", + "execa": "^1.0.0", + "strip-ansi": "^5.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "node_modules/signale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", + "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", + "dependencies": { + "chalk": "^2.3.2", + "figures": "^2.0.0", + "pkg-conf": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/smoothie": { + "version": "1.35.0", + "resolved": "https://registry.npmjs.org/smoothie/-/smoothie-1.35.0.tgz", + "integrity": "sha512-tA+p9hDOeLOkETO6HyTgo3ZzGF2mHOGS+Vbc9d9M/iHMlSIsQvVJYuOBIYW21naaAi+eU1NxvVDQ8V9UM56hvQ==" + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "optional": true, + "peer": true + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "optional": true, + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "optional": true, + "peer": true + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "peer": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "peer": true + }, + "node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "peer": true, + "dependencies": { + "debug": "^4.1.0" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/systeminformation": { + "version": "5.9.7", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.9.7.tgz", + "integrity": "sha512-Vcmc8HaWPMFM4DoasuKN2lpvIwS2AqaoPuEGZc4HCT6tlRJH+IQ5GhA2BrUgjpBDJjFMj2Bti6qLOzP3T1arCw==", + "os": [ + "darwin", + "linux", + "win32", + "freebsd", + "openbsd", + "netbsd", + "sunos" + ], + "bin": { + "systeminformation": "lib/cli.js" + }, + "engines": { + "node": ">=4.0.0" + }, + "funding": { + "type": "Buy me a coffee", + "url": "https://www.buymeacoffee.com/systeminfo" + } + }, + "node_modules/tail": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/tail/-/tail-2.2.4.tgz", + "integrity": "sha512-PX8klSxW1u3SdgDrDeewh5GNE+hkJ4h02JvHfV6YrHqWOVJ88nUdSQqtsUf/gWhgZlPAws3fiZ+F1f8euspcuQ==", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/tapable": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", + "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.1.10", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.10.tgz", + "integrity": "sha512-kvvfiVvjGMxeUNB6MyYv5z7vhfFRwbwCXJAeL0/lnbrttBVqcMOnpHUf0X42LrPMR8mMpgapkJMchFH4FSHzNA==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/terser": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.0.tgz", + "integrity": "sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g==", + "optional": true, + "peer": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz", + "integrity": "sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==", + "optional": true, + "peer": true, + "dependencies": { + "jest-worker": "^26.6.2", + "p-limit": "^3.1.0", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "source-map": "^0.6.1", + "terser": "^5.5.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/terser-webpack-plugin/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==", + "optional": true, + "peer": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==" + }, + "node_modules/tiny-lru": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-7.0.6.tgz", + "integrity": "sha512-zNYO0Kvgn5rXzWpL0y3RS09sMK67eGaQj9805jlK9G6pSadfriTczzLHFXa/xcW4mIRfmlB9HyQ/+SgL0V1uow==", + "engines": { + "node": ">=6" + } + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "peer": true + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "peer": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "optional": true, + "peer": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "peer": true, + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/username": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/username/-/username-5.1.0.tgz", + "integrity": "sha512-PCKbdWw85JsYMvmCv5GH3kXmM66rCd9m1hBEDutPNv94b/pqCMT4NtcKyeWYvLFiE8b+ha1Jdl8XAaUdPn5QTg==", + "dependencies": { + "execa": "^1.0.0", + "mem": "^4.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "peer": true + }, + "node_modules/watchpack": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz", + "integrity": "sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==", + "optional": true, + "peer": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.36.2.tgz", + "integrity": "sha512-XJumVnnGoH2dV+Pk1VwgY4YT6AiMKpVoudUFCNOXMIVrEKPUgEwdIfWPjIuGLESAiS8EdIHX5+TiJz/5JccmRg==", + "optional": true, + "peer": true, + "dependencies": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.47", + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/wasm-edit": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0", + "acorn": "^8.2.1", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.8.0", + "es-module-lexer": "^0.4.0", + "eslint-scope": "^5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.4", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.1", + "watchpack": "^2.0.0", + "webpack-sources": "^2.1.1" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-sources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", + "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", + "optional": true, + "peer": true, + "dependencies": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/worker-loader": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/worker-loader/-/worker-loader-3.0.8.tgz", + "integrity": "sha512-XQyQkIFeRVC7f7uRhFdNMe/iJOdO6zxAaR3EWbDp45v3mDhrTi+++oswKNxShUNjPC/1xUp5DB29YKLhFo129g==", + "optional": true, + "peer": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/ws": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", + "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xterm": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/xterm/-/xterm-4.14.1.tgz", + "integrity": "sha512-jgzNg5BuGPwq5/M4dGnmbghZvHx2jaj+9crSEt15bV34Za49VziBmCu7zIy88zUKKiGTxeo7aVzirFSJArIMFw==" + }, + "node_modules/xterm-addon-attach": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xterm-addon-attach/-/xterm-addon-attach-0.6.0.tgz", + "integrity": "sha512-Mo8r3HTjI/EZfczVCwRU6jh438B4WLXxdFO86OB7bx0jGhwh2GdF4ifx/rP+OB+Cb2vmLhhVIZ00/7x3YSP3dg==" + }, + "node_modules/xterm-addon-fit": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xterm-addon-fit/-/xterm-addon-fit-0.5.0.tgz", + "integrity": "sha512-DsS9fqhXHacEmsPxBJZvfj2la30Iz9xk+UKjhQgnYNkrUIN5CYLbw7WEfz117c7+S86S/tpHPfvNxJsF5/G8wQ==" + }, + "node_modules/xterm-addon-ligatures": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/xterm-addon-ligatures/-/xterm-addon-ligatures-0.5.1.tgz", + "integrity": "sha512-L70vyVAapDvBBti1bqFTUQOd6R6LH5qKzqZ76sERKkf75+u++sylqflCdwT8zmorK6zxcc3vq4+I4GDYawgYrQ==", + "dependencies": { + "font-finder": "^1.1.0", + "font-ligatures": "^1.4.0" + }, + "engines": { + "node": ">8.0.0" + }, + "peerDependencies": { + "xterm": "^4.0.0" + } + }, + "node_modules/xterm-addon-webgl": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/xterm-addon-webgl/-/xterm-addon-webgl-0.11.2.tgz", + "integrity": "sha512-eEOKEIMZO0IRb+UTHhTaUwxpD1cu7Zqr+jdUfhDv9cfVieg9c4mcRn9RWvNGlprGdlLmOSTUByhm8ve6qAc4HQ==", + "peerDependencies": { + "xterm": "^4.0.0" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "peer": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "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==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, "dependencies": { + "@electron/get": { + "version": "1.12.4", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.4.tgz", + "integrity": "sha512-6nr9DbJPUR9Xujw6zD3y+rS95TyItEVM0NVjt1EehY2vUWfIgPiIPVHxCvaTS0xr2B+DRxovYVKbuOWqC35kjg==", + "peer": true, + "requires": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "global-agent": "^2.0.2", + "global-tunnel-ng": "^2.7.1", + "got": "^9.6.0", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "peer": true + } + } + }, + "@electron/remote": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@electron/remote/-/remote-1.2.2.tgz", + "integrity": "sha512-PfnXpQGWh4vpX866NNucJRnNOzDRZcsLcLaT32fUth9k0hccsohfxprqEDYLzRg+ZK2xRrtyUN5wYYoHimMCJg==", + "requires": {} + }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "peer": true + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "peer": true, + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@types/eslint": { + "version": "7.2.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.10.tgz", + "integrity": "sha512-kUEPnMKrqbtpCq/KTaGFFKAcz6Ethm2EjCoKIDaCmfRBWLbFuTcOJfTlorwbnboXBzahqWLgUp1BQeKHiJzPUQ==", + "optional": true, + "peer": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz", + "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==", + "optional": true, + "peer": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.47", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.47.tgz", + "integrity": "sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg==", + "optional": true, + "peer": true + }, + "@types/json-schema": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", + "optional": true, + "peer": true + }, + "@types/node": { + "version": "15.0.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.0.2.tgz", + "integrity": "sha512-p68+a+KoxpoB47015IeYZYRrdqMUcpbK8re/zpFB8Ld46LHC1lPEbp3EXgkEhAYEcPvjJF6ZO+869SQ0aH1dcA==", + "optional": true, + "peer": true + }, + "@webassemblyjs/ast": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", + "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==", + "optional": true, + "peer": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz", + "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==", + "optional": true, + "peer": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz", + "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==", + "optional": true, + "peer": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz", + "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==", + "optional": true, + "peer": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz", + "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==", + "optional": true, + "peer": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.0", + "@webassemblyjs/helper-api-error": "1.11.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz", + "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==", + "optional": true, + "peer": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz", + "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==", + "optional": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz", + "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==", + "optional": true, + "peer": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz", + "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==", + "optional": true, + "peer": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz", + "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==", + "optional": true, + "peer": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz", + "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==", + "optional": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/helper-wasm-section": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0", + "@webassemblyjs/wasm-opt": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0", + "@webassemblyjs/wast-printer": "1.11.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz", + "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==", + "optional": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/ieee754": "1.11.0", + "@webassemblyjs/leb128": "1.11.0", + "@webassemblyjs/utf8": "1.11.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz", + "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==", + "optional": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz", + "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==", + "optional": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-api-error": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/ieee754": "1.11.0", + "@webassemblyjs/leb128": "1.11.0", + "@webassemblyjs/utf8": "1.11.0" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz", + "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==", + "optional": true, + "peer": true, + "requires": { + "@webassemblyjs/ast": "1.11.0", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "optional": true, + "peer": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "optional": true, + "peer": true + }, + "acorn": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.2.4.tgz", + "integrity": "sha512-Ibt84YwBDDA890eDiDCEqcbwvHlBvzzDkU2cGBBDDI1QWT12jTiXIOn2CIw5KK4i6N5Z2HUxwYjzriDyqaqqZg==", + "optional": true, + "peer": true + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "optional": true, + "peer": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "optional": true, + "peer": true, + "requires": {} + }, "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, "ansi-styles": { "version": "3.2.1", @@ -17,74 +3005,259 @@ "color-convert": "^1.9.0" } }, - "arch": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz", - "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==" + "augmented-ui": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/augmented-ui/-/augmented-ui-1.1.2.tgz", + "integrity": "sha512-sAcv/qZ21sQzNF+gOKNerULDwAIMOHfuLCuHlNpzwi55OexWgndD+G+H2/CS8zmK7ymBFA0uUyf6N/dTnLIiXw==" }, - "async-limiter": { + "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "optional": true, + "peer": true + }, + "boolean": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.0.4.tgz", + "integrity": "sha512-5pyOr+w2LNN72F2mAq6J0ckHUfJYSgRKma7e/wlcMMhgOLV9OI0ERhERYXxUqo+dPyVxcbXKy9n+wg13+LpNnA==", + "optional": true, + "peer": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "optional": true, + "peer": true, + "requires": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "peer": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "peer": true + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "peer": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "peer": true, + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "peer": true + } + } + }, + "caniuse-lite": { + "version": "1.0.30001223", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001223.tgz", + "integrity": "sha512-k/RYs6zc/fjbxTjaWZemeSmOjO0JJV+KguOBA3NwPup8uzxM1cMhR2BD9XmO86GuqaqTCO8CgkgH9Rz//vdDiA==", + "optional": true, + "peer": true }, "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, - "clipboardy": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.3.tgz", - "integrity": "sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA==", + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "optional": true, + "peer": true + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "peer": true, "requires": { - "arch": "^2.1.0", - "execa": "^0.8.0" + "mimic-response": "^1.0.0" } }, "color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.0.tgz", - "integrity": "sha512-CwyopLkuRYO5ei2EpzpIh6LqJMt6Mt+jZhO5VI5f/wJLZriXQE32/SSqzmrh+QB+AZT81Cj8yv+7zwToW8ahZg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" + "color-convert": "^1.9.3", + "color-string": "^1.6.0" } }, "color-convert": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", - "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "requires": { - "color-name": "1.1.1" + "color-name": "1.1.3" } }, "color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "color-string": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.6.0.tgz", + "integrity": "sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA==", "requires": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" } }, + "colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "optional": true, + "peer": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "optional": true, + "peer": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "peer": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "optional": true, + "peer": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "core-js": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.12.1.tgz", + "integrity": "sha512-Ne9DKPHTObRuB09Dru5AjwKjY4cJHVGu+y5f7coGn1E9Grkc3p2iBwE9AI/nJzsE29mQF7oq+mhYYRqOMFN1Bw==", + "optional": true, + "peer": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "peer": true + }, "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "requires": { - "lru-cache": "^4.0.1", + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", "shebang-command": "^1.2.0", "which": "^1.2.9" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "peer": true, + "requires": { + "ms": "2.1.2" + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "peer": true, + "requires": { + "mimic-response": "^1.0.0" } }, "default-shell": { @@ -92,6 +3265,75 @@ "resolved": "https://registry.npmjs.org/default-shell/-/default-shell-1.0.1.tgz", "integrity": "sha1-dSMEvdxhdPSespy5iP7qC4gTyLw=" }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "peer": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "optional": true, + "peer": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "optional": true, + "peer": true + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "peer": true + }, + "electron": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-13.0.0.tgz", + "integrity": "sha512-5SgpU7BgR4DJM1TPuZmKQ89A0AMN9vq7J7OfJebbHjsAuYP+rmJwosVna/RpLYFBuQNM90gnny5sffYGDZFQ4w==", + "peer": true, + "requires": { + "@electron/get": "^1.0.1", + "@types/node": "^14.6.2", + "extract-zip": "^1.0.3" + }, + "dependencies": { + "@types/node": { + "version": "14.17.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.1.tgz", + "integrity": "sha512-/tpUyFD7meeooTRwl3sYlihx2BrJE7q9XF71EguPFIySj9B7qgnRtHsHTho+0AUm4m1SvWGm6uSncrR94q6Vtw==", + "peer": true + } + } + }, + "electron-to-chromium": { + "version": "1.3.727", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.727.tgz", + "integrity": "sha512-Mfz4FIB4FSvEwBpDfdipRIrwd6uo8gUDoRDF4QEYb4h4tSuI3ov594OrjU6on042UlFHouIJpClDODGkPcBSbg==", + "optional": true, + "peer": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "optional": true, + "peer": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "optional": true, + "peer": true + }, "end-of-stream": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", @@ -100,6 +3342,23 @@ "once": "^1.4.0" } }, + "enhanced-resolve": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.0.tgz", + "integrity": "sha512-Sl3KRpJA8OpprrtaIswVki3cWPiPKxXuFxJXBp+zNb6s6VwNWwFRUdtmzd2ReUut8n+sCPx7QCtQ7w5wfJhSgQ==", + "optional": true, + "peer": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "peer": true + }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -115,18 +3374,83 @@ } } }, + "es-module-lexer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz", + "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==", + "optional": true, + "peer": true + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "optional": true, + "peer": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "optional": true, + "peer": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "optional": true, + "peer": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "optional": true, + "peer": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "optional": true, + "peer": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "optional": true, + "peer": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "optional": true, + "peer": true + }, "execa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", - "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", "is-stream": "^1.1.0", "npm-run-path": "^2.0.0", "p-finally": "^1.0.0", @@ -134,6 +3458,67 @@ "strip-eof": "^1.0.0" } }, + "extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "peer": true, + "requires": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "peer": true, + "requires": { + "ms": "2.0.0" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "peer": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "peer": true + } + } + }, + "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==", + "optional": true, + "peer": true + }, + "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==", + "optional": true, + "peer": true + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "peer": true, + "requires": { + "pend": "~1.2.0" + } + }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", @@ -150,25 +3535,202 @@ "locate-path": "^2.0.0" } }, + "font-finder": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/font-finder/-/font-finder-1.1.0.tgz", + "integrity": "sha512-wpCL2uIbi6GurJbU7ZlQ3nGd61Ho+dSU6U83/xJT5UPFfN35EeCW/rOtS+5k+IuEZu2SYmHzDIPL9eA5tSYRAw==", + "requires": { + "get-system-fonts": "^2.0.0", + "promise-stream-reader": "^1.0.1" + } + }, + "font-ligatures": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/font-ligatures/-/font-ligatures-1.4.0.tgz", + "integrity": "sha512-n7DFnnEpJ0NrVoLqZIL4tMGVs+CnFwQc92m80LWyrbgAFO4x234+t2/H9o4eOYA1eh6ta9dZAEEsJAwsBdNezA==", + "requires": { + "font-finder": "^1.0.3", + "lru-cache": "^6.0.0", + "opentype.js": "^0.8.0" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "peer": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "geolite2-redist": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/geolite2-redist/-/geolite2-redist-2.0.4.tgz", + "integrity": "sha512-pkKr7v55QYdmKcHmM1qW2EAKVpIPzyR15peCdSH3eoR2IBOgiZ19RQtBVqOV7PGTODBbhU+MyHN9em1xPFtZsQ==", + "requires": { + "rimraf": "^3.0.2", + "tar": "^6.1.0" + } + }, "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "get-system-fonts": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-system-fonts/-/get-system-fonts-2.0.2.tgz", + "integrity": "sha512-zzlgaYnHMIEgHRrfC7x0Qp0Ylhw/sHpM6MHXeVBTYIsvGf5GpbnClB+Q6rAPdn+0gd2oZZIo6Tj3EaWrt4VhDQ==" + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "optional": true, + "peer": true + }, + "global-agent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.2.0.tgz", + "integrity": "sha512-+20KpaW6DDLqhG7JDiJpD1JvNvb8ts+TNl7BPOYcURqCrXqnN1Vf+XVOrkKJAFPqfX+oEhsdzOj1hLWkBTdNJg==", + "optional": true, + "peer": true, + "requires": { + "boolean": "^3.0.1", + "core-js": "^3.6.5", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "optional": true, + "peer": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "global-tunnel-ng": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", + "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==", + "optional": true, + "peer": true, + "requires": { + "encodeurl": "^1.0.2", + "lodash": "^4.17.10", + "npm-conf": "^1.1.3", + "tunnel": "^0.0.6" + } + }, + "globalthis": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.2.tgz", + "integrity": "sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==", + "optional": true, + "peer": true, + "requires": { + "define-properties": "^1.1.3" + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "peer": true, + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } }, "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, - "howler": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/howler/-/howler-2.1.1.tgz", - "integrity": "sha512-9nwyDCGxhAGMmNXDfMLv0M/uS/WUg2//jG6t96D8DqbbsVZgXQzsP/ZMItbWO/Fqg7Gg69kOv3xVSDzJdd7aqA==" + "howler": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/howler/-/howler-2.2.3.tgz", + "integrity": "sha512-QM0FFkw0LRX1PR8pNzJVAY25JhIWvbKMBFM4gqk+QdV+kPXOhleWGCB6AiAF/goGjIHK2e/nIElplvjQwhr0jg==" + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "peer": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "optional": true, + "peer": true }, "is-arrayish": { "version": "0.3.2", @@ -180,16 +3742,101 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "peer": true + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "optional": true, + "peer": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "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==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "peer": true + }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, + "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==", + "optional": true, + "peer": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "optional": true, + "peer": true + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "optional": true, + "peer": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "peer": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "peer": true, + "requires": { + "json-buffer": "3.0.0" + } + }, "load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -201,6 +3848,25 @@ "strip-bom": "^3.0.0" } }, + "loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "optional": true, + "peer": true + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "optional": true, + "peer": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", @@ -210,24 +3876,167 @@ "path-exists": "^3.0.0" } }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "optional": true, + "peer": true + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "peer": true + }, "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "requires": { + "p-defer": "^1.0.0" + } + }, + "matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "optional": true, + "peer": true, + "requires": { + "escape-string-regexp": "^4.0.0" + }, + "dependencies": { + "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==", + "optional": true, + "peer": true + } + } + }, + "maxmind": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/maxmind/-/maxmind-4.3.2.tgz", + "integrity": "sha512-cZ4nsLeYbFWVbhkBU3VTPJ10SDCGAKQ8kGpuYh1AesN4NvMQGab+NIBqcReA4dxQqPjA/CM6e6mQGCusvUSp6Q==", + "requires": { + "mmdb-lib": "1.3.0", + "tiny-lru": "7.0.6" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "optional": true, + "peer": true + }, + "mime-db": { + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", + "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==" + }, + "mime-types": { + "version": "2.1.33", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", + "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", + "requires": { + "mime-db": "1.50.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "peer": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "peer": true + }, + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "requires": { + "yallist": "^4.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "minipass": "^3.0.0", + "yallist": "^4.0.0" } }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "mmdb-lib": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mmdb-lib/-/mmdb-lib-1.3.0.tgz", + "integrity": "sha512-KrRrAuC+X9ZkkPZNsqgHUGrop28vcmqISILyUXG0xOYt82ObU9d9XowVsjOVOr5CegyjrkmxEN5ut9r576vq2g==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "peer": true + }, "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==" + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" }, "nanoid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.0.0.tgz", - "integrity": "sha512-SG2qscLE3iM4C0CNzGrsAojJHSVHMS1J8NnvJ31P1lH8P0hGHOiafmniNJz6w6q7vuoDlV7RdySlJgtqkFEVtQ==" + "version": "3.1.30", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", + "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==" + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "optional": true, + "peer": true }, "nice-try": { "version": "1.0.5", @@ -235,11 +4044,35 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, "node-pty": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/node-pty/-/node-pty-0.8.0.tgz", - "integrity": "sha512-g5ggk3gN4gLrDmAllee5ScFyX3YzpOC/U8VJafha4pE7do0TIE1voiIxEbHSRUOPD1xYqmY+uHhOKAd3avbxGQ==", + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/node-pty/-/node-pty-0.10.1.tgz", + "integrity": "sha512-JTdtUS0Im/yRsWJSx7yiW9rtpfmxqxolrtnyKwPLI+6XqTAPW/O2MjS8FYL4I5TsMbH2lVgDb2VMjp+9LoQGNg==", + "requires": { + "nan": "^2.14.0" + } + }, + "node-releases": { + "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "optional": true, + "peer": true + }, + "normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "peer": true + }, + "npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "optional": true, + "peer": true, "requires": { - "nan": "2.10.0" + "config-chain": "^1.1.11", + "pify": "^3.0.0" } }, "npm-run-path": { @@ -250,6 +4083,13 @@ "path-key": "^2.0.0" } }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "optional": true, + "peer": true + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -258,11 +4098,41 @@ "wrappy": "1" } }, + "opentype.js": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/opentype.js/-/opentype.js-0.8.0.tgz", + "integrity": "sha1-rKvPoWQvvolKPk11nkO6aU4CvTU=", + "requires": { + "tiny-inflate": "^1.0.2" + } + }, + "osx-temperature-sensor": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/osx-temperature-sensor/-/osx-temperature-sensor-1.0.7.tgz", + "integrity": "sha512-5hijMYtDVmcrR/LTZ8702SZOO2TVt5868KeraD02WyEI+3/YZJI4Cl9fvzCOc5vzizGGjvsfaCKZOKHF+RJ0wA==", + "optional": true + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "peer": true + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" + }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -298,11 +4168,28 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, + "pdfjs-dist": { + "version": "2.11.338", + "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.11.338.tgz", + "integrity": "sha512-Ti5VTB0VvSdtTtc7TG71ghMx0SEuNcEs4ghVuZxW0p6OqLjMc0xekZV1B+MmlxEG2Du2e5jgazucWIG/SXTcdA==", + "requires": {} + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "peer": true + }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", @@ -317,15 +4204,40 @@ "load-json-file": "^4.0.0" } }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "peer": true + }, "pretty-bytes": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.1.0.tgz", - "integrity": "sha512-wa5+qGVg9Yt7PB6rYm3kXlKzgzgivYTLRandezh43jjRqgyDyP+9YxfJpJiLs9yKD1WeU8/OvtToWpW7255FtA==" + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==" }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "peer": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "peer": true + }, + "promise-stream-reader": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-stream-reader/-/promise-stream-reader-1.0.1.tgz", + "integrity": "sha512-Tnxit5trUjBAqqZCGWwjyxhmgMN4hGrtpW3Oc/tRI4bpm/O2+ej72BB08l6JBnGQgVDGCLvHFGjGgQS6vzhwXg==" + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "optional": true, + "peer": true }, "pump": { "version": "3.0.0", @@ -336,11 +4248,129 @@ "once": "^1.3.1" } }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "optional": true, + "peer": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "optional": true, + "peer": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "peer": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "peer": true + } + } + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "peer": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "optional": true, + "peer": true, + "requires": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "optional": true, + "peer": true + }, + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "optional": true, + "peer": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==" }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "optional": true, + "peer": true + }, + "serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "optional": true, + "peer": true, + "requires": { + "type-fest": "^0.13.1" + } + }, + "serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "optional": true, + "peer": true, + "requires": { + "randombytes": "^2.1.0" + } + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -355,49 +4385,13 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, "shell-env": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/shell-env/-/shell-env-2.1.0.tgz", - "integrity": "sha512-kvyoX4KGSIXrPmwwAWgty+TaZo79khWSQlezawt3aIz2lz/bDImLogfxIQvXqdEAUg+oLHFjAd68VSaPgYFVBg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shell-env/-/shell-env-3.0.1.tgz", + "integrity": "sha512-b09fpMipAQ9ObwvIeKoQFLDXcEcCpYUUZanlad4OYQscw2I49C/u97OPQg9jWYo36bRDn62fbe07oWYqovIvKA==", "requires": { "default-shell": "^1.0.1", "execa": "^1.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - } + "strip-ansi": "^5.2.0" } }, "signal-exit": { @@ -406,9 +4400,9 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "signale": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/signale/-/signale-1.3.0.tgz", - "integrity": "sha512-TyFhsQ9wZDYDfsPqWMyjCxsDoMwfpsT0130Mce7wDiVCSDdtWSg83dOqoj8aGpGCs3n1YPcam6sT1OFPuGT/OQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", + "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", "requires": { "chalk": "^2.3.2", "figures": "^2.0.0", @@ -428,12 +4422,61 @@ "resolved": "https://registry.npmjs.org/smoothie/-/smoothie-1.35.0.tgz", "integrity": "sha512-tA+p9hDOeLOkETO6HyTgo3ZzGF2mHOGS+Vbc9d9M/iHMlSIsQvVJYuOBIYW21naaAi+eU1NxvVDQ8V9UM56hvQ==" }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "optional": true, + "peer": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "peer": true + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "optional": true, + "peer": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "optional": true, + "peer": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "peer": true, + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "peer": true + } + } + }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^4.1.0" } }, "strip-bom": { @@ -446,6 +4489,15 @@ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, + "sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "peer": true, + "requires": { + "debug": "^4.1.0" + } + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -455,45 +4507,294 @@ } }, "systeminformation": { - "version": "3.54.0", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-3.54.0.tgz", - "integrity": "sha512-kWzMlMS4B2bz+b9qhmdrbdZZuVpf3LJr4lbIZbOVbfXlJLlPJLmoUlCy+2VmTd/ow1xZGUkaQNBSz0X19NViWA==" + "version": "5.9.7", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.9.7.tgz", + "integrity": "sha512-Vcmc8HaWPMFM4DoasuKN2lpvIwS2AqaoPuEGZc4HCT6tlRJH+IQ5GhA2BrUgjpBDJjFMj2Bti6qLOzP3T1arCw==" }, "tail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/tail/-/tail-2.0.2.tgz", - "integrity": "sha512-raFipiKWdGKEzxbvZwnhUGqjvsv0gpa/1A479rL//NOxnNwYZDN4MPk6xJJdUFs8P2Xrff3nbH5fcyYRLU4UHQ==" + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/tail/-/tail-2.2.4.tgz", + "integrity": "sha512-PX8klSxW1u3SdgDrDeewh5GNE+hkJ4h02JvHfV6YrHqWOVJ88nUdSQqtsUf/gWhgZlPAws3fiZ+F1f8euspcuQ==" + }, + "tapable": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", + "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", + "optional": true, + "peer": true + }, + "tar": { + "version": "6.1.10", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.10.tgz", + "integrity": "sha512-kvvfiVvjGMxeUNB6MyYv5z7vhfFRwbwCXJAeL0/lnbrttBVqcMOnpHUf0X42LrPMR8mMpgapkJMchFH4FSHzNA==", + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "terser": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.0.tgz", + "integrity": "sha512-HP5/9hp2UaZt5fYkuhNBR8YyRcT8juw8+uFbAme53iN9hblvKnLUTKkmwJG6ocWpIKf8UK4DoeWG4ty0J6S6/g==", + "optional": true, + "peer": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "optional": true, + "peer": true + } + } + }, + "terser-webpack-plugin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz", + "integrity": "sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==", + "optional": true, + "peer": true, + "requires": { + "jest-worker": "^26.6.2", + "p-limit": "^3.1.0", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "source-map": "^0.6.1", + "terser": "^5.5.1" + }, + "dependencies": { + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "optional": true, + "peer": true, + "requires": { + "yocto-queue": "^0.1.0" + } + } + } + }, + "tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==" + }, + "tiny-lru": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/tiny-lru/-/tiny-lru-7.0.6.tgz", + "integrity": "sha512-zNYO0Kvgn5rXzWpL0y3RS09sMK67eGaQj9805jlK9G6pSadfriTczzLHFXa/xcW4mIRfmlB9HyQ/+SgL0V1uow==" + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "peer": true + }, + "tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "optional": true, + "peer": true + }, + "type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "optional": true, + "peer": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "peer": true + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "peer": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "optional": true, + "peer": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "peer": true, + "requires": { + "prepend-http": "^2.0.0" + } + }, + "username": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/username/-/username-5.1.0.tgz", + "integrity": "sha512-PCKbdWw85JsYMvmCv5GH3kXmM66rCd9m1hBEDutPNv94b/pqCMT4NtcKyeWYvLFiE8b+ha1Jdl8XAaUdPn5QTg==", + "requires": { + "execa": "^1.0.0", + "mem": "^4.3.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "peer": true + }, + "watchpack": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz", + "integrity": "sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==", + "optional": true, + "peer": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "webpack": { + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.36.2.tgz", + "integrity": "sha512-XJumVnnGoH2dV+Pk1VwgY4YT6AiMKpVoudUFCNOXMIVrEKPUgEwdIfWPjIuGLESAiS8EdIHX5+TiJz/5JccmRg==", + "optional": true, + "peer": true, + "requires": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.47", + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/wasm-edit": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0", + "acorn": "^8.2.1", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.8.0", + "es-module-lexer": "^0.4.0", + "eslint-scope": "^5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.4", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.1", + "watchpack": "^2.0.0", + "webpack-sources": "^2.1.1" + } + }, + "webpack-sources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", + "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", + "optional": true, + "peer": true, + "requires": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + } }, "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "requires": { "isexe": "^2.0.0" } }, + "worker-loader": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/worker-loader/-/worker-loader-3.0.8.tgz", + "integrity": "sha512-XQyQkIFeRVC7f7uRhFdNMe/iJOdO6zxAaR3EWbDp45v3mDhrTi+++oswKNxShUNjPC/1xUp5DB29YKLhFo129g==", + "optional": true, + "peer": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "ws": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.2.tgz", - "integrity": "sha512-rfUqzvz0WxmSXtJpPMX2EeASXabOrSMk1ruMOV3JBTBjo4ac2lDjGGsbQSyxj8Odhw5fBib8ZKEjDNvgouNKYw==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", + "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", + "requires": {} + }, + "xterm": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/xterm/-/xterm-4.14.1.tgz", + "integrity": "sha512-jgzNg5BuGPwq5/M4dGnmbghZvHx2jaj+9crSEt15bV34Za49VziBmCu7zIy88zUKKiGTxeo7aVzirFSJArIMFw==" + }, + "xterm-addon-attach": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xterm-addon-attach/-/xterm-addon-attach-0.6.0.tgz", + "integrity": "sha512-Mo8r3HTjI/EZfczVCwRU6jh438B4WLXxdFO86OB7bx0jGhwh2GdF4ifx/rP+OB+Cb2vmLhhVIZ00/7x3YSP3dg==" + }, + "xterm-addon-fit": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xterm-addon-fit/-/xterm-addon-fit-0.5.0.tgz", + "integrity": "sha512-DsS9fqhXHacEmsPxBJZvfj2la30Iz9xk+UKjhQgnYNkrUIN5CYLbw7WEfz117c7+S86S/tpHPfvNxJsF5/G8wQ==" + }, + "xterm-addon-ligatures": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/xterm-addon-ligatures/-/xterm-addon-ligatures-0.5.1.tgz", + "integrity": "sha512-L70vyVAapDvBBti1bqFTUQOd6R6LH5qKzqZ76sERKkf75+u++sylqflCdwT8zmorK6zxcc3vq4+I4GDYawgYrQ==", "requires": { - "async-limiter": "~1.0.0" + "font-finder": "^1.1.0", + "font-ligatures": "^1.4.0" } }, - "xterm": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/xterm/-/xterm-3.10.1.tgz", - "integrity": "sha512-RHaUwJ8zwLiICu1QsXoxUHP+R2Pp8Rc8yVoNali/nKw3CVXwmXxT/4mgbk7U22psuNgOqLyI4Sg9nlQfYeTRQw==" + "xterm-addon-webgl": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/xterm-addon-webgl/-/xterm-addon-webgl-0.11.2.tgz", + "integrity": "sha512-eEOKEIMZO0IRb+UTHhTaUwxpD1cu7Zqr+jdUfhDv9cfVieg9c4mcRn9RWvNGlprGdlLmOSTUByhm8ve6qAc4HQ==", + "requires": {} }, "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "peer": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "optional": true, + "peer": true } } } diff --git a/src/package.json b/src/package.json index 078beccfd..eefe66c1a 100644 --- a/src/package.json +++ b/src/package.json @@ -1,7 +1,7 @@ { "name": "edex-ui", "productName": "eDEX-UI", - "version": "2.0.1-pre", + "version": "2.2.8", "description": "eDEX-UI sci-fi interface", "keywords": [ "desktop", @@ -16,25 +16,39 @@ "type": "git", "url": "git+https://github.com/GitSquared/edex-ui.git" }, - "author": "GitSquared ", + "author": "Gabriel 'Squared' SAILLARD (https://gaby.dev)", "license": "GPL-3.0", "bugs": { "url": "https://github.com/GitSquared/edex-ui/issues" }, "homepage": "https://github.com/GitSquared/edex-ui#readme", "dependencies": { - "clipboardy": "1.2.3", - "color": "3.1.0", - "howler": "2.1.1", - "nanoid": "2.0.0", - "node-pty": "0.8.0", - "pretty-bytes": "5.1.0", - "shell-env": "2.1.0", - "signale": "1.3.0", + "@electron/remote": "^1.2.2", + "augmented-ui": "^1.1.2", + "color": "3.2.1", + "geolite2-redist": "^2.0.4", + "howler": "2.2.3", + "maxmind": "4.3.2", + "mime-types": "^2.1.33", + "nanoid": "3.1.30", + "node-pty": "0.10.1", + "pdfjs-dist": "2.11.338", + "pretty-bytes": "5.6.0", + "shell-env": "3.0.1", + "signale": "1.4.0", "smoothie": "1.35.0", - "systeminformation": "3.54.0", - "tail": "2.0.2", - "ws": "6.1.2", - "xterm": "3.10.1" + "systeminformation": "5.9.7", + "tail": "2.2.4", + "username": "5.1.0", + "which": "2.0.2", + "ws": "7.5.5", + "xterm": "4.14.1", + "xterm-addon-attach": "0.6.0", + "xterm-addon-fit": "0.5.0", + "xterm-addon-ligatures": "0.5.1", + "xterm-addon-webgl": "^0.11.2" + }, + "optionalDependencies": { + "osx-temperature-sensor": "1.0.7" } } diff --git a/src/ui.html b/src/ui.html index c15f8fd03..82c33ab51 100644 --- a/src/ui.html +++ b/src/ui.html @@ -2,14 +2,17 @@ - + eDEX-UI + + + @@ -18,32 +21,39 @@ + - + + + + + + + - +