├── .circleci └── config.yml ├── .github └── workflows │ └── build.yml ├── .gitignore ├── License.md ├── README.md ├── assets ├── img │ ├── SkillSet.PNG │ └── screencap.png └── test-data │ ├── JCantuResume.json │ └── mySkills.csv ├── dist ├── index.html ├── main.js ├── mySkills.csv └── styles │ └── style.css ├── favicon.ico ├── index.html ├── package-lock.json ├── package.json ├── src ├── app.js ├── index.js ├── lib │ └── d3.min.js └── viz.js └── styles ├── picnic.min.css └── style.css /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | # Javascript Node CircleCI 2.0 configuration file 2 | # 3 | # Check https://circleci.com/docs/2.0/language-javascript/ for more details 4 | # 5 | version: 2 6 | jobs: 7 | build: 8 | docker: 9 | # specify the version you desire here 10 | - image: circleci/node:8.0.0 11 | 12 | # Specify service dependencies here if necessary 13 | # CircleCI maintains a library of pre-built images 14 | # documented at https://circleci.com/docs/2.0/circleci-images/ 15 | # - image: circleci/mongo:3.4.4 16 | 17 | working_directory: ~/repo 18 | 19 | steps: 20 | - checkout 21 | 22 | # Download and cache dependencies 23 | - restore_cache: 24 | keys: 25 | - v1-dependencies-{{ checksum "package.json" }} 26 | # fallback to using the latest cache if no exact match is found 27 | - v1-dependencies- 28 | 29 | - run: npm install 30 | 31 | - save_cache: 32 | paths: 33 | - node_modules 34 | key: v1-dependencies-{{ checksum "package.json" }} 35 | 36 | # run tests! 37 | - run: echo "test" 38 | 39 | 40 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | # This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions 3 | 4 | name: skillset-build-workflow 5 | 6 | on: 7 | push: 8 | branches: 9 | - master 10 | - feature/* 11 | pull_request: 12 | branches: [master] 13 | 14 | jobs: 15 | build: 16 | runs-on: ubuntu-latest 17 | timeout-minutes: 10 18 | 19 | strategy: 20 | matrix: 21 | node-version: [15.x, 16.x] 22 | 23 | steps: 24 | - uses: actions/checkout@v2 25 | - name: Use Node.js ${{ matrix.node-version }} 26 | uses: actions/setup-node@v1 27 | with: 28 | node-version: ${{ matrix.node-version }} 29 | - run: npm ci 30 | - run: npm run build 31 | env: 32 | CI: true 33 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.gitignore.io/api/node 3 | 4 | ### Node ### 5 | # Logs 6 | logs 7 | *.log 8 | npm-debug.log* 9 | yarn-debug.log* 10 | yarn-error.log* 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | 24 | # nyc test coverage 25 | .nyc_output 26 | 27 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 28 | .grunt 29 | 30 | # Bower dependency directory (https://bower.io/) 31 | bower_components 32 | 33 | # node-waf configuration 34 | .lock-wscript 35 | 36 | # Compiled binary addons (http://nodejs.org/api/addons.html) 37 | build/Release 38 | 39 | # Dependency directories 40 | node_modules/ 41 | jspm_packages/ 42 | 43 | # Typescript v1 declaration files 44 | typings/ 45 | 46 | # Optional npm cache directory 47 | .npm 48 | 49 | # Optional eslint cache 50 | .eslintcache 51 | 52 | # Optional REPL history 53 | .node_repl_history 54 | 55 | # Output of 'npm pack' 56 | *.tgz 57 | 58 | # Yarn Integrity file 59 | .yarn-integrity 60 | 61 | # dotenv environment variables file 62 | .env 63 | 64 | 65 | 66 | # End of https://www.gitignore.io/api/node 67 | -------------------------------------------------------------------------------- /License.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Jeremy Cantu 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Logo](https://raw.githubusercontent.com/Jac21/SkillSet/master/assets/img/SkillSet.PNG) 2 | 3 | [![MIT Licence](https://badges.frapsoft.com/os/mit/mit.svg?v=103)](https://opensource.org/licenses/mit-license.php) 4 | ![build workflow](https://github.com/Jac21/SkillSet/actions/workflows/build.yml/badge.svg) 5 | [![donate](https://img.shields.io/badge/%24-Buy%20me%20a%20coffee-ff69b4.svg)](https://www.buymeacoffee.com/jac21) 6 | 7 | Intuitive job-candidate skill visualization, taking advantage of [D3.js](http://d3js.org/) and [JSONResume](https://jsonresume.org/). 8 | 9 | Live site: 10 | >- https://jac21.github.io/SkillSet/ 11 | 12 | Live demo: 13 | >- https://jac21.github.io/viz.html 14 | 15 | React wrapper component created by [romain325](https://github.com/romain325): 16 | >- https://github.com/romain325/ReactSkillSet 17 | 18 | Example Screenshot: 19 | ----------- 20 | ![Example](https://raw.githubusercontent.com/Jac21/SkillSet/master/assets/img/screencap.png) 21 | -------------------------------------------------------------------------------- /assets/img/SkillSet.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jac21/SkillSet/9f6e9b741497d7aa2d441591442bd467bfb795b6/assets/img/SkillSet.PNG -------------------------------------------------------------------------------- /assets/img/screencap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jac21/SkillSet/9f6e9b741497d7aa2d441591442bd467bfb795b6/assets/img/screencap.png -------------------------------------------------------------------------------- /assets/test-data/JCantuResume.json: -------------------------------------------------------------------------------- 1 | { 2 | "basics": { 3 | "name": "Jeremy Cantu", 4 | "label": "Software Developer", 5 | "picture": 6 | "https://media.licdn.com/mpr/mpr/shrinknp_400_400/AAEAAQAAAAAAAAMxAAAAJDVhY2UyNWU2LTMxYWUtNDIzYi1iYzUzLTM1YmQ2ODI1MGE2OA.jpg", 7 | "email": "jcantu521@gmail.com", 8 | "phone": "(956)286-8386", 9 | "website": "https://jac21.github.io/", 10 | "summary": 11 | "Jeremy hails from the border city of Laredo Texas, attending Texas A&M University soon after graduating from the United High School Engineering and Technology Magnet. Jeremy earned his degree in Computer Science, with a focus in Systems Engineering, and has an avid interest in .NET technologies and web development as whole.", 12 | "location": { 13 | "address": "11011 Domain Drive", 14 | "postalCode": "78758", 15 | "city": "Austin", 16 | "countryCode": "US", 17 | "region": "Texas" 18 | }, 19 | "profiles": [ 20 | { 21 | "network": "GitHub", 22 | "username": "Jac21", 23 | "url": "https://github.com/Jac21" 24 | } 25 | ] 26 | }, 27 | "work": [ 28 | { 29 | "company": "Sogeti USA", 30 | "position": "IT Consultant", 31 | "website": "https://us.sogeti.com/", 32 | "startDate": "6/8/2015", 33 | "endDate": "4/1/2016", 34 | "summary": 35 | "Microsoft-technology oriented software developer, responsible for client-site projects in varying domains, platforms and technologies.The profession involves the adaptation to said technologies at a quick pace, the adoption of a wide depth and breadth of technical knowledge, and the building of soft-skills such as business interaction and presentation. Major accomplishments include a role as a Software Development Engineer in Test at Dell, as well as leading the Summer 2015 graduating class as the \"Class President,\" elected by his fellow co-workers and peers.", 36 | "highlights": [ 37 | "SDET role at Dell, took part in automated testing-suite creation for customer support applications using Selenium Webdriver and Protractor.NET, among other .NET and C# technologies" 38 | ] 39 | }, 40 | { 41 | "company": "Dell", 42 | "position": "Software Developer Senior Analyst", 43 | "website": "http://www.dell.com/", 44 | "startDate": "4/4/2016", 45 | "endDate": "1/2/2017", 46 | "summary": 47 | "Software Development Engineer in Test, as part of the Dell Consumer Services \"Responsive Platform\" team. Responsible for automated test framework and suite creation for the whole of the application, utilizing C#, Selenium WebDriver, and SpecFlow, as well as monitoring and analysis using Splunk and Adobe Analytics.", 48 | "highlights": [ 49 | "Highlights include my role as SDET lead, involving my close work with the team's Product Owner and Technical Project Manager. In addition, was involved in a subsequently patented voice interface application for a Dell.com \"hack day\" event" 50 | ] 51 | }, 52 | { 53 | "company": "Advanced Solutions International", 54 | "position": "Software Developer", 55 | "website": "http://www.advsol.com", 56 | "startDate": "1/3/2017", 57 | "endDate": "Present", 58 | "summary": 59 | "Full-stack, .NET focused software developer in an Agile environment.", 60 | "highlights": [] 61 | } 62 | ], 63 | "volunteer": [ 64 | { 65 | "organization": "TAMUHack", 66 | "position": "Project Judge", 67 | "website": "http://tamuhack.com/", 68 | "startDate": "10/9/2015", 69 | "endDate": "10/10/2015", 70 | "summary": 71 | "Performed staff and volunteer duties at the second-annual TAMUHack hackathon, in addition with being tasked as a judge for the resulting projects and aiding in award selections.", 72 | "highlights": [] 73 | } 74 | ], 75 | "education": [ 76 | { 77 | "institution": "Texas A&M University", 78 | "area": "Computer Science", 79 | "studyType": "Bachelor of Science", 80 | "startDate": "8/27/2012", 81 | "endDate": "5/18/2015", 82 | "gpa": "3.3", 83 | "courses": [ 84 | "CSCE 221 - Data Structures and Algorithms", 85 | "CSCE 315 - Programming Studio", 86 | "CSCE 438 - Distributed Objects Programming", 87 | "CSCE 482 - Senior Capstone", 88 | "CSCE 489 - Reverse Engineering" 89 | ] 90 | } 91 | ], 92 | "awards": [ 93 | { 94 | "title": "3rd Place at the first annual TAMUHack", 95 | "date": "10/25/2014", 96 | "awarder": "TAMUHack", 97 | "summary": 98 | "Earned third-place in the \\\"overall\\\"​ category in Texas A&M's first hackathon with a 3D, Oculus-Rift design oriented video game. More information: http://devpost.com/software/attack-on-oculus" 99 | } 100 | ], 101 | "publications": [], 102 | "skills": [ 103 | { 104 | "name": ".NET", 105 | "level": "Intermediate", 106 | "keywords": ["C#", "ASP.NET MVC 5", "WebAPI"] 107 | }, 108 | { 109 | "name": "Web Development", 110 | "level": "Intermediate", 111 | "keywords": ["HTML5", "CSS3", "JavaScript", "Node.js"] 112 | }, 113 | { 114 | "name": "Front-End Frameworks", 115 | "level": "Beginner", 116 | "keywords": ["AngularJS", "Angular 2", "React"] 117 | }, 118 | { 119 | "name": "General Software Development", 120 | "level": "Intermediate", 121 | "keywords": ["Git", "GitHub", "Team Foundation Server"] 122 | }, 123 | { 124 | "name": "Security", 125 | "level": "Intermediate", 126 | "keywords": ["OllyDbg", "IDA Pro", "Nmap", "Wireshark"] 127 | }, 128 | { 129 | "name": "Automated Testing", 130 | "level": "Intermediate", 131 | "keywords": ["Selenium WebDriver", "Protractor", "SpecFlow"] 132 | } 133 | ], 134 | "languages": [ 135 | { 136 | "language": "English", 137 | "fluency": "Native speaker" 138 | }, 139 | { 140 | "language": "Spanish", 141 | "fluency": "Read, write, and semi-fluency in speech" 142 | } 143 | ], 144 | "interests": [], 145 | "references": [] 146 | } 147 | -------------------------------------------------------------------------------- /assets/test-data/mySkills.csv: -------------------------------------------------------------------------------- 1 | source,target,value 2 | .NET,C#,2.0 3 | .NET,ASP.NET MVC 5,2.0 4 | .NET,WebAPI,2.0 5 | Web Development,HTML5,2.0 6 | Web Development,CSS3,2.0 7 | Web Development,JavaScript,2.0 8 | Web Development,Node.js,2.0 9 | Front-End Frameworks,AngularJS,1.0 10 | Front-End Frameworks,Angular 2,1.0 11 | Front-End Frameworks,React,1.0 12 | General Software Development,Git,2.0 13 | General Software Development,GitHub,2.0 14 | General Software Development,Team Foundation Server,2.0 15 | Security,OllyDbg,2.0 16 | Security,IDA Pro,2.0 17 | Security,Nmap,2.0 18 | Security,Wireshark,2.0 19 | Automated Testing,Selenium WebDriver,2.0 20 | Automated Testing,Protractor,2.0 21 | Automated Testing,SpecFlow,2.0 -------------------------------------------------------------------------------- /dist/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | SkillSet 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /dist/mySkills.csv: -------------------------------------------------------------------------------- 1 | source,target,value 2 | .NET,C#,2.0 3 | .NET,ASP.NET MVC 5,2.0 4 | .NET,WebAPI,2.0 5 | Web Development,HTML5,2.0 6 | Web Development,CSS3,2.0 7 | Web Development,JavaScript,2.0 8 | Web Development,Node.js,2.0 9 | Front-End Frameworks,AngularJS,1.0 10 | Front-End Frameworks,Angular 2,1.0 11 | Front-End Frameworks,React,1.0 12 | General Software Development,Git,2.0 13 | General Software Development,GitHub,2.0 14 | General Software Development,Team Foundation Server,2.0 15 | Security,OllyDbg,2.0 16 | Security,IDA Pro,2.0 17 | Security,Nmap,2.0 18 | Security,Wireshark,2.0 19 | Automated Testing,Selenium WebDriver,2.0 20 | Automated Testing,Protractor,2.0 21 | Automated Testing,SpecFlow,2.0 -------------------------------------------------------------------------------- /dist/styles/style.css: -------------------------------------------------------------------------------- 1 | path.link { 2 | fill: none; 3 | stroke: #666; 4 | stroke-width: 1.5px; 5 | } 6 | 7 | path.link.twofive { 8 | opacity: 0.25; 9 | } 10 | 11 | path.link.fivezero { 12 | opacity: 0.50; 13 | } 14 | 15 | path.link.sevenfive { 16 | opacity: 0.75; 17 | } 18 | 19 | path.link.onezerozero { 20 | opacity: 1.0; 21 | } 22 | 23 | circle { 24 | fill: #ccc; 25 | stroke: #fff; 26 | stroke-width: 1.5px; 27 | } 28 | 29 | text { 30 | fill: #000; 31 | font: 12px sans-serif; 32 | pointer-events: none; 33 | } -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jac21/SkillSet/9f6e9b741497d7aa2d441591442bd467bfb795b6/favicon.ico -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 11 | SkillSet 12 | 13 | 14 | 15 | 16 | 17 | 18 | logo 19 | 20 |
21 |

22 | If you'd like to see an example in action, click 23 | here! 29 |

30 | 31 |
32 |

33 | Submit your 34 | JSONResume here 35 | for skillset visualization: 36 |

37 | 38 | 39 |
40 | 41 |

42 |
43 | 44 | 50 | 63 | 64 | 70 | 75 | 76 | 77 | 109 | 110 | 111 | 112 | 113 | 114 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "skillset", 3 | "version": "1.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "skillset", 9 | "version": "1.0.0", 10 | "license": "MIT", 11 | "dependencies": { 12 | "d3": "^7.9.0" 13 | }, 14 | "devDependencies": { 15 | "http-server": "^14.1.1", 16 | "webpack": "^5.98.0", 17 | "webpack-cli": "^5.1.4" 18 | } 19 | }, 20 | "node_modules/@discoveryjs/json-ext": { 21 | "version": "0.5.7", 22 | "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", 23 | "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", 24 | "dev": true, 25 | "license": "MIT", 26 | "engines": { 27 | "node": ">=10.0.0" 28 | } 29 | }, 30 | "node_modules/@jridgewell/gen-mapping": { 31 | "version": "0.3.8", 32 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", 33 | "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", 34 | "dev": true, 35 | "license": "MIT", 36 | "dependencies": { 37 | "@jridgewell/set-array": "^1.2.1", 38 | "@jridgewell/sourcemap-codec": "^1.4.10", 39 | "@jridgewell/trace-mapping": "^0.3.24" 40 | }, 41 | "engines": { 42 | "node": ">=6.0.0" 43 | } 44 | }, 45 | "node_modules/@jridgewell/resolve-uri": { 46 | "version": "3.1.2", 47 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 48 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 49 | "dev": true, 50 | "license": "MIT", 51 | "engines": { 52 | "node": ">=6.0.0" 53 | } 54 | }, 55 | "node_modules/@jridgewell/set-array": { 56 | "version": "1.2.1", 57 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", 58 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", 59 | "dev": true, 60 | "license": "MIT", 61 | "engines": { 62 | "node": ">=6.0.0" 63 | } 64 | }, 65 | "node_modules/@jridgewell/source-map": { 66 | "version": "0.3.6", 67 | "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", 68 | "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", 69 | "dev": true, 70 | "license": "MIT", 71 | "dependencies": { 72 | "@jridgewell/gen-mapping": "^0.3.5", 73 | "@jridgewell/trace-mapping": "^0.3.25" 74 | } 75 | }, 76 | "node_modules/@jridgewell/sourcemap-codec": { 77 | "version": "1.5.0", 78 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", 79 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", 80 | "dev": true, 81 | "license": "MIT" 82 | }, 83 | "node_modules/@jridgewell/trace-mapping": { 84 | "version": "0.3.25", 85 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", 86 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", 87 | "dev": true, 88 | "license": "MIT", 89 | "dependencies": { 90 | "@jridgewell/resolve-uri": "^3.1.0", 91 | "@jridgewell/sourcemap-codec": "^1.4.14" 92 | } 93 | }, 94 | "node_modules/@types/eslint": { 95 | "version": "9.6.1", 96 | "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", 97 | "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", 98 | "dev": true, 99 | "license": "MIT", 100 | "dependencies": { 101 | "@types/estree": "*", 102 | "@types/json-schema": "*" 103 | } 104 | }, 105 | "node_modules/@types/eslint-scope": { 106 | "version": "3.7.7", 107 | "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", 108 | "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", 109 | "dev": true, 110 | "license": "MIT", 111 | "dependencies": { 112 | "@types/eslint": "*", 113 | "@types/estree": "*" 114 | } 115 | }, 116 | "node_modules/@types/estree": { 117 | "version": "1.0.6", 118 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", 119 | "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", 120 | "dev": true, 121 | "license": "MIT" 122 | }, 123 | "node_modules/@types/json-schema": { 124 | "version": "7.0.15", 125 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", 126 | "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", 127 | "dev": true, 128 | "license": "MIT" 129 | }, 130 | "node_modules/@types/node": { 131 | "version": "22.13.4", 132 | "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.4.tgz", 133 | "integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==", 134 | "dev": true, 135 | "license": "MIT", 136 | "dependencies": { 137 | "undici-types": "~6.20.0" 138 | } 139 | }, 140 | "node_modules/@webassemblyjs/ast": { 141 | "version": "1.14.1", 142 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", 143 | "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", 144 | "dev": true, 145 | "license": "MIT", 146 | "dependencies": { 147 | "@webassemblyjs/helper-numbers": "1.13.2", 148 | "@webassemblyjs/helper-wasm-bytecode": "1.13.2" 149 | } 150 | }, 151 | "node_modules/@webassemblyjs/floating-point-hex-parser": { 152 | "version": "1.13.2", 153 | "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", 154 | "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", 155 | "dev": true, 156 | "license": "MIT" 157 | }, 158 | "node_modules/@webassemblyjs/helper-api-error": { 159 | "version": "1.13.2", 160 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", 161 | "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", 162 | "dev": true, 163 | "license": "MIT" 164 | }, 165 | "node_modules/@webassemblyjs/helper-buffer": { 166 | "version": "1.14.1", 167 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", 168 | "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", 169 | "dev": true, 170 | "license": "MIT" 171 | }, 172 | "node_modules/@webassemblyjs/helper-numbers": { 173 | "version": "1.13.2", 174 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", 175 | "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", 176 | "dev": true, 177 | "license": "MIT", 178 | "dependencies": { 179 | "@webassemblyjs/floating-point-hex-parser": "1.13.2", 180 | "@webassemblyjs/helper-api-error": "1.13.2", 181 | "@xtuc/long": "4.2.2" 182 | } 183 | }, 184 | "node_modules/@webassemblyjs/helper-wasm-bytecode": { 185 | "version": "1.13.2", 186 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", 187 | "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", 188 | "dev": true, 189 | "license": "MIT" 190 | }, 191 | "node_modules/@webassemblyjs/helper-wasm-section": { 192 | "version": "1.14.1", 193 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", 194 | "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", 195 | "dev": true, 196 | "license": "MIT", 197 | "dependencies": { 198 | "@webassemblyjs/ast": "1.14.1", 199 | "@webassemblyjs/helper-buffer": "1.14.1", 200 | "@webassemblyjs/helper-wasm-bytecode": "1.13.2", 201 | "@webassemblyjs/wasm-gen": "1.14.1" 202 | } 203 | }, 204 | "node_modules/@webassemblyjs/ieee754": { 205 | "version": "1.13.2", 206 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", 207 | "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", 208 | "dev": true, 209 | "license": "MIT", 210 | "dependencies": { 211 | "@xtuc/ieee754": "^1.2.0" 212 | } 213 | }, 214 | "node_modules/@webassemblyjs/leb128": { 215 | "version": "1.13.2", 216 | "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", 217 | "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", 218 | "dev": true, 219 | "license": "Apache-2.0", 220 | "dependencies": { 221 | "@xtuc/long": "4.2.2" 222 | } 223 | }, 224 | "node_modules/@webassemblyjs/utf8": { 225 | "version": "1.13.2", 226 | "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", 227 | "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", 228 | "dev": true, 229 | "license": "MIT" 230 | }, 231 | "node_modules/@webassemblyjs/wasm-edit": { 232 | "version": "1.14.1", 233 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", 234 | "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", 235 | "dev": true, 236 | "license": "MIT", 237 | "dependencies": { 238 | "@webassemblyjs/ast": "1.14.1", 239 | "@webassemblyjs/helper-buffer": "1.14.1", 240 | "@webassemblyjs/helper-wasm-bytecode": "1.13.2", 241 | "@webassemblyjs/helper-wasm-section": "1.14.1", 242 | "@webassemblyjs/wasm-gen": "1.14.1", 243 | "@webassemblyjs/wasm-opt": "1.14.1", 244 | "@webassemblyjs/wasm-parser": "1.14.1", 245 | "@webassemblyjs/wast-printer": "1.14.1" 246 | } 247 | }, 248 | "node_modules/@webassemblyjs/wasm-gen": { 249 | "version": "1.14.1", 250 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", 251 | "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", 252 | "dev": true, 253 | "license": "MIT", 254 | "dependencies": { 255 | "@webassemblyjs/ast": "1.14.1", 256 | "@webassemblyjs/helper-wasm-bytecode": "1.13.2", 257 | "@webassemblyjs/ieee754": "1.13.2", 258 | "@webassemblyjs/leb128": "1.13.2", 259 | "@webassemblyjs/utf8": "1.13.2" 260 | } 261 | }, 262 | "node_modules/@webassemblyjs/wasm-opt": { 263 | "version": "1.14.1", 264 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", 265 | "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", 266 | "dev": true, 267 | "license": "MIT", 268 | "dependencies": { 269 | "@webassemblyjs/ast": "1.14.1", 270 | "@webassemblyjs/helper-buffer": "1.14.1", 271 | "@webassemblyjs/wasm-gen": "1.14.1", 272 | "@webassemblyjs/wasm-parser": "1.14.1" 273 | } 274 | }, 275 | "node_modules/@webassemblyjs/wasm-parser": { 276 | "version": "1.14.1", 277 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", 278 | "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", 279 | "dev": true, 280 | "license": "MIT", 281 | "dependencies": { 282 | "@webassemblyjs/ast": "1.14.1", 283 | "@webassemblyjs/helper-api-error": "1.13.2", 284 | "@webassemblyjs/helper-wasm-bytecode": "1.13.2", 285 | "@webassemblyjs/ieee754": "1.13.2", 286 | "@webassemblyjs/leb128": "1.13.2", 287 | "@webassemblyjs/utf8": "1.13.2" 288 | } 289 | }, 290 | "node_modules/@webassemblyjs/wast-printer": { 291 | "version": "1.14.1", 292 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", 293 | "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", 294 | "dev": true, 295 | "license": "MIT", 296 | "dependencies": { 297 | "@webassemblyjs/ast": "1.14.1", 298 | "@xtuc/long": "4.2.2" 299 | } 300 | }, 301 | "node_modules/@webpack-cli/configtest": { 302 | "version": "2.1.1", 303 | "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", 304 | "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", 305 | "dev": true, 306 | "license": "MIT", 307 | "engines": { 308 | "node": ">=14.15.0" 309 | }, 310 | "peerDependencies": { 311 | "webpack": "5.x.x", 312 | "webpack-cli": "5.x.x" 313 | } 314 | }, 315 | "node_modules/@webpack-cli/info": { 316 | "version": "2.0.2", 317 | "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", 318 | "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", 319 | "dev": true, 320 | "license": "MIT", 321 | "engines": { 322 | "node": ">=14.15.0" 323 | }, 324 | "peerDependencies": { 325 | "webpack": "5.x.x", 326 | "webpack-cli": "5.x.x" 327 | } 328 | }, 329 | "node_modules/@webpack-cli/serve": { 330 | "version": "2.0.5", 331 | "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", 332 | "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", 333 | "dev": true, 334 | "license": "MIT", 335 | "engines": { 336 | "node": ">=14.15.0" 337 | }, 338 | "peerDependencies": { 339 | "webpack": "5.x.x", 340 | "webpack-cli": "5.x.x" 341 | }, 342 | "peerDependenciesMeta": { 343 | "webpack-dev-server": { 344 | "optional": true 345 | } 346 | } 347 | }, 348 | "node_modules/@xtuc/ieee754": { 349 | "version": "1.2.0", 350 | "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", 351 | "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", 352 | "dev": true, 353 | "license": "BSD-3-Clause" 354 | }, 355 | "node_modules/@xtuc/long": { 356 | "version": "4.2.2", 357 | "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", 358 | "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", 359 | "dev": true, 360 | "license": "Apache-2.0" 361 | }, 362 | "node_modules/acorn": { 363 | "version": "8.14.0", 364 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", 365 | "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", 366 | "dev": true, 367 | "license": "MIT", 368 | "bin": { 369 | "acorn": "bin/acorn" 370 | }, 371 | "engines": { 372 | "node": ">=0.4.0" 373 | } 374 | }, 375 | "node_modules/ajv": { 376 | "version": "8.17.1", 377 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", 378 | "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", 379 | "dev": true, 380 | "license": "MIT", 381 | "dependencies": { 382 | "fast-deep-equal": "^3.1.3", 383 | "fast-uri": "^3.0.1", 384 | "json-schema-traverse": "^1.0.0", 385 | "require-from-string": "^2.0.2" 386 | }, 387 | "funding": { 388 | "type": "github", 389 | "url": "https://github.com/sponsors/epoberezkin" 390 | } 391 | }, 392 | "node_modules/ajv-formats": { 393 | "version": "2.1.1", 394 | "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", 395 | "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", 396 | "dev": true, 397 | "license": "MIT", 398 | "dependencies": { 399 | "ajv": "^8.0.0" 400 | }, 401 | "peerDependencies": { 402 | "ajv": "^8.0.0" 403 | }, 404 | "peerDependenciesMeta": { 405 | "ajv": { 406 | "optional": true 407 | } 408 | } 409 | }, 410 | "node_modules/ajv-keywords": { 411 | "version": "5.1.0", 412 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", 413 | "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", 414 | "dev": true, 415 | "license": "MIT", 416 | "dependencies": { 417 | "fast-deep-equal": "^3.1.3" 418 | }, 419 | "peerDependencies": { 420 | "ajv": "^8.8.2" 421 | } 422 | }, 423 | "node_modules/ansi-styles": { 424 | "version": "4.3.0", 425 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 426 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 427 | "dev": true, 428 | "license": "MIT", 429 | "dependencies": { 430 | "color-convert": "^2.0.1" 431 | }, 432 | "engines": { 433 | "node": ">=8" 434 | }, 435 | "funding": { 436 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 437 | } 438 | }, 439 | "node_modules/async": { 440 | "version": "2.6.4", 441 | "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", 442 | "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", 443 | "dev": true, 444 | "license": "MIT", 445 | "dependencies": { 446 | "lodash": "^4.17.14" 447 | } 448 | }, 449 | "node_modules/basic-auth": { 450 | "version": "2.0.1", 451 | "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", 452 | "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", 453 | "dev": true, 454 | "license": "MIT", 455 | "dependencies": { 456 | "safe-buffer": "5.1.2" 457 | }, 458 | "engines": { 459 | "node": ">= 0.8" 460 | } 461 | }, 462 | "node_modules/browserslist": { 463 | "version": "4.24.4", 464 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", 465 | "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", 466 | "dev": true, 467 | "funding": [ 468 | { 469 | "type": "opencollective", 470 | "url": "https://opencollective.com/browserslist" 471 | }, 472 | { 473 | "type": "tidelift", 474 | "url": "https://tidelift.com/funding/github/npm/browserslist" 475 | }, 476 | { 477 | "type": "github", 478 | "url": "https://github.com/sponsors/ai" 479 | } 480 | ], 481 | "license": "MIT", 482 | "dependencies": { 483 | "caniuse-lite": "^1.0.30001688", 484 | "electron-to-chromium": "^1.5.73", 485 | "node-releases": "^2.0.19", 486 | "update-browserslist-db": "^1.1.1" 487 | }, 488 | "bin": { 489 | "browserslist": "cli.js" 490 | }, 491 | "engines": { 492 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 493 | } 494 | }, 495 | "node_modules/buffer-from": { 496 | "version": "1.1.2", 497 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 498 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 499 | "dev": true, 500 | "license": "MIT" 501 | }, 502 | "node_modules/call-bind-apply-helpers": { 503 | "version": "1.0.2", 504 | "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", 505 | "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", 506 | "dev": true, 507 | "license": "MIT", 508 | "dependencies": { 509 | "es-errors": "^1.3.0", 510 | "function-bind": "^1.1.2" 511 | }, 512 | "engines": { 513 | "node": ">= 0.4" 514 | } 515 | }, 516 | "node_modules/call-bound": { 517 | "version": "1.0.3", 518 | "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", 519 | "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", 520 | "dev": true, 521 | "license": "MIT", 522 | "dependencies": { 523 | "call-bind-apply-helpers": "^1.0.1", 524 | "get-intrinsic": "^1.2.6" 525 | }, 526 | "engines": { 527 | "node": ">= 0.4" 528 | }, 529 | "funding": { 530 | "url": "https://github.com/sponsors/ljharb" 531 | } 532 | }, 533 | "node_modules/caniuse-lite": { 534 | "version": "1.0.30001700", 535 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz", 536 | "integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==", 537 | "dev": true, 538 | "funding": [ 539 | { 540 | "type": "opencollective", 541 | "url": "https://opencollective.com/browserslist" 542 | }, 543 | { 544 | "type": "tidelift", 545 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 546 | }, 547 | { 548 | "type": "github", 549 | "url": "https://github.com/sponsors/ai" 550 | } 551 | ], 552 | "license": "CC-BY-4.0" 553 | }, 554 | "node_modules/chalk": { 555 | "version": "4.1.2", 556 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 557 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 558 | "dev": true, 559 | "license": "MIT", 560 | "dependencies": { 561 | "ansi-styles": "^4.1.0", 562 | "supports-color": "^7.1.0" 563 | }, 564 | "engines": { 565 | "node": ">=10" 566 | }, 567 | "funding": { 568 | "url": "https://github.com/chalk/chalk?sponsor=1" 569 | } 570 | }, 571 | "node_modules/chrome-trace-event": { 572 | "version": "1.0.4", 573 | "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", 574 | "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", 575 | "dev": true, 576 | "license": "MIT", 577 | "engines": { 578 | "node": ">=6.0" 579 | } 580 | }, 581 | "node_modules/clone-deep": { 582 | "version": "4.0.1", 583 | "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", 584 | "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", 585 | "dev": true, 586 | "license": "MIT", 587 | "dependencies": { 588 | "is-plain-object": "^2.0.4", 589 | "kind-of": "^6.0.2", 590 | "shallow-clone": "^3.0.0" 591 | }, 592 | "engines": { 593 | "node": ">=6" 594 | } 595 | }, 596 | "node_modules/color-convert": { 597 | "version": "2.0.1", 598 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 599 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 600 | "dev": true, 601 | "license": "MIT", 602 | "dependencies": { 603 | "color-name": "~1.1.4" 604 | }, 605 | "engines": { 606 | "node": ">=7.0.0" 607 | } 608 | }, 609 | "node_modules/color-name": { 610 | "version": "1.1.4", 611 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 612 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 613 | "dev": true, 614 | "license": "MIT" 615 | }, 616 | "node_modules/colorette": { 617 | "version": "2.0.20", 618 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", 619 | "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", 620 | "dev": true, 621 | "license": "MIT" 622 | }, 623 | "node_modules/commander": { 624 | "version": "7.2.0", 625 | "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", 626 | "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", 627 | "license": "MIT", 628 | "engines": { 629 | "node": ">= 10" 630 | } 631 | }, 632 | "node_modules/corser": { 633 | "version": "2.0.1", 634 | "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", 635 | "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", 636 | "dev": true, 637 | "license": "MIT", 638 | "engines": { 639 | "node": ">= 0.4.0" 640 | } 641 | }, 642 | "node_modules/cross-spawn": { 643 | "version": "7.0.6", 644 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", 645 | "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", 646 | "dev": true, 647 | "license": "MIT", 648 | "dependencies": { 649 | "path-key": "^3.1.0", 650 | "shebang-command": "^2.0.0", 651 | "which": "^2.0.1" 652 | }, 653 | "engines": { 654 | "node": ">= 8" 655 | } 656 | }, 657 | "node_modules/d3": { 658 | "version": "7.9.0", 659 | "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", 660 | "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", 661 | "license": "ISC", 662 | "dependencies": { 663 | "d3-array": "3", 664 | "d3-axis": "3", 665 | "d3-brush": "3", 666 | "d3-chord": "3", 667 | "d3-color": "3", 668 | "d3-contour": "4", 669 | "d3-delaunay": "6", 670 | "d3-dispatch": "3", 671 | "d3-drag": "3", 672 | "d3-dsv": "3", 673 | "d3-ease": "3", 674 | "d3-fetch": "3", 675 | "d3-force": "3", 676 | "d3-format": "3", 677 | "d3-geo": "3", 678 | "d3-hierarchy": "3", 679 | "d3-interpolate": "3", 680 | "d3-path": "3", 681 | "d3-polygon": "3", 682 | "d3-quadtree": "3", 683 | "d3-random": "3", 684 | "d3-scale": "4", 685 | "d3-scale-chromatic": "3", 686 | "d3-selection": "3", 687 | "d3-shape": "3", 688 | "d3-time": "3", 689 | "d3-time-format": "4", 690 | "d3-timer": "3", 691 | "d3-transition": "3", 692 | "d3-zoom": "3" 693 | }, 694 | "engines": { 695 | "node": ">=12" 696 | } 697 | }, 698 | "node_modules/d3-array": { 699 | "version": "3.2.4", 700 | "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", 701 | "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", 702 | "license": "ISC", 703 | "dependencies": { 704 | "internmap": "1 - 2" 705 | }, 706 | "engines": { 707 | "node": ">=12" 708 | } 709 | }, 710 | "node_modules/d3-axis": { 711 | "version": "3.0.0", 712 | "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", 713 | "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", 714 | "license": "ISC", 715 | "engines": { 716 | "node": ">=12" 717 | } 718 | }, 719 | "node_modules/d3-brush": { 720 | "version": "3.0.0", 721 | "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", 722 | "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", 723 | "license": "ISC", 724 | "dependencies": { 725 | "d3-dispatch": "1 - 3", 726 | "d3-drag": "2 - 3", 727 | "d3-interpolate": "1 - 3", 728 | "d3-selection": "3", 729 | "d3-transition": "3" 730 | }, 731 | "engines": { 732 | "node": ">=12" 733 | } 734 | }, 735 | "node_modules/d3-chord": { 736 | "version": "3.0.1", 737 | "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", 738 | "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", 739 | "license": "ISC", 740 | "dependencies": { 741 | "d3-path": "1 - 3" 742 | }, 743 | "engines": { 744 | "node": ">=12" 745 | } 746 | }, 747 | "node_modules/d3-color": { 748 | "version": "3.1.0", 749 | "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", 750 | "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", 751 | "license": "ISC", 752 | "engines": { 753 | "node": ">=12" 754 | } 755 | }, 756 | "node_modules/d3-contour": { 757 | "version": "4.0.2", 758 | "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", 759 | "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", 760 | "license": "ISC", 761 | "dependencies": { 762 | "d3-array": "^3.2.0" 763 | }, 764 | "engines": { 765 | "node": ">=12" 766 | } 767 | }, 768 | "node_modules/d3-delaunay": { 769 | "version": "6.0.4", 770 | "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", 771 | "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", 772 | "license": "ISC", 773 | "dependencies": { 774 | "delaunator": "5" 775 | }, 776 | "engines": { 777 | "node": ">=12" 778 | } 779 | }, 780 | "node_modules/d3-dispatch": { 781 | "version": "3.0.1", 782 | "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", 783 | "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", 784 | "license": "ISC", 785 | "engines": { 786 | "node": ">=12" 787 | } 788 | }, 789 | "node_modules/d3-drag": { 790 | "version": "3.0.0", 791 | "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", 792 | "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", 793 | "license": "ISC", 794 | "dependencies": { 795 | "d3-dispatch": "1 - 3", 796 | "d3-selection": "3" 797 | }, 798 | "engines": { 799 | "node": ">=12" 800 | } 801 | }, 802 | "node_modules/d3-dsv": { 803 | "version": "3.0.1", 804 | "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", 805 | "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", 806 | "license": "ISC", 807 | "dependencies": { 808 | "commander": "7", 809 | "iconv-lite": "0.6", 810 | "rw": "1" 811 | }, 812 | "bin": { 813 | "csv2json": "bin/dsv2json.js", 814 | "csv2tsv": "bin/dsv2dsv.js", 815 | "dsv2dsv": "bin/dsv2dsv.js", 816 | "dsv2json": "bin/dsv2json.js", 817 | "json2csv": "bin/json2dsv.js", 818 | "json2dsv": "bin/json2dsv.js", 819 | "json2tsv": "bin/json2dsv.js", 820 | "tsv2csv": "bin/dsv2dsv.js", 821 | "tsv2json": "bin/dsv2json.js" 822 | }, 823 | "engines": { 824 | "node": ">=12" 825 | } 826 | }, 827 | "node_modules/d3-ease": { 828 | "version": "3.0.1", 829 | "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", 830 | "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", 831 | "license": "BSD-3-Clause", 832 | "engines": { 833 | "node": ">=12" 834 | } 835 | }, 836 | "node_modules/d3-fetch": { 837 | "version": "3.0.1", 838 | "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", 839 | "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", 840 | "license": "ISC", 841 | "dependencies": { 842 | "d3-dsv": "1 - 3" 843 | }, 844 | "engines": { 845 | "node": ">=12" 846 | } 847 | }, 848 | "node_modules/d3-force": { 849 | "version": "3.0.0", 850 | "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", 851 | "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", 852 | "license": "ISC", 853 | "dependencies": { 854 | "d3-dispatch": "1 - 3", 855 | "d3-quadtree": "1 - 3", 856 | "d3-timer": "1 - 3" 857 | }, 858 | "engines": { 859 | "node": ">=12" 860 | } 861 | }, 862 | "node_modules/d3-format": { 863 | "version": "3.1.0", 864 | "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", 865 | "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", 866 | "license": "ISC", 867 | "engines": { 868 | "node": ">=12" 869 | } 870 | }, 871 | "node_modules/d3-geo": { 872 | "version": "3.1.1", 873 | "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", 874 | "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", 875 | "license": "ISC", 876 | "dependencies": { 877 | "d3-array": "2.5.0 - 3" 878 | }, 879 | "engines": { 880 | "node": ">=12" 881 | } 882 | }, 883 | "node_modules/d3-hierarchy": { 884 | "version": "3.1.2", 885 | "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", 886 | "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", 887 | "license": "ISC", 888 | "engines": { 889 | "node": ">=12" 890 | } 891 | }, 892 | "node_modules/d3-interpolate": { 893 | "version": "3.0.1", 894 | "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", 895 | "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", 896 | "license": "ISC", 897 | "dependencies": { 898 | "d3-color": "1 - 3" 899 | }, 900 | "engines": { 901 | "node": ">=12" 902 | } 903 | }, 904 | "node_modules/d3-path": { 905 | "version": "3.1.0", 906 | "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", 907 | "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", 908 | "license": "ISC", 909 | "engines": { 910 | "node": ">=12" 911 | } 912 | }, 913 | "node_modules/d3-polygon": { 914 | "version": "3.0.1", 915 | "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", 916 | "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", 917 | "license": "ISC", 918 | "engines": { 919 | "node": ">=12" 920 | } 921 | }, 922 | "node_modules/d3-quadtree": { 923 | "version": "3.0.1", 924 | "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", 925 | "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", 926 | "license": "ISC", 927 | "engines": { 928 | "node": ">=12" 929 | } 930 | }, 931 | "node_modules/d3-random": { 932 | "version": "3.0.1", 933 | "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", 934 | "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", 935 | "license": "ISC", 936 | "engines": { 937 | "node": ">=12" 938 | } 939 | }, 940 | "node_modules/d3-scale": { 941 | "version": "4.0.2", 942 | "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", 943 | "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", 944 | "license": "ISC", 945 | "dependencies": { 946 | "d3-array": "2.10.0 - 3", 947 | "d3-format": "1 - 3", 948 | "d3-interpolate": "1.2.0 - 3", 949 | "d3-time": "2.1.1 - 3", 950 | "d3-time-format": "2 - 4" 951 | }, 952 | "engines": { 953 | "node": ">=12" 954 | } 955 | }, 956 | "node_modules/d3-scale-chromatic": { 957 | "version": "3.1.0", 958 | "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", 959 | "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", 960 | "license": "ISC", 961 | "dependencies": { 962 | "d3-color": "1 - 3", 963 | "d3-interpolate": "1 - 3" 964 | }, 965 | "engines": { 966 | "node": ">=12" 967 | } 968 | }, 969 | "node_modules/d3-selection": { 970 | "version": "3.0.0", 971 | "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", 972 | "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", 973 | "license": "ISC", 974 | "engines": { 975 | "node": ">=12" 976 | } 977 | }, 978 | "node_modules/d3-shape": { 979 | "version": "3.2.0", 980 | "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", 981 | "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", 982 | "license": "ISC", 983 | "dependencies": { 984 | "d3-path": "^3.1.0" 985 | }, 986 | "engines": { 987 | "node": ">=12" 988 | } 989 | }, 990 | "node_modules/d3-time": { 991 | "version": "3.1.0", 992 | "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", 993 | "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", 994 | "license": "ISC", 995 | "dependencies": { 996 | "d3-array": "2 - 3" 997 | }, 998 | "engines": { 999 | "node": ">=12" 1000 | } 1001 | }, 1002 | "node_modules/d3-time-format": { 1003 | "version": "4.1.0", 1004 | "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", 1005 | "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", 1006 | "license": "ISC", 1007 | "dependencies": { 1008 | "d3-time": "1 - 3" 1009 | }, 1010 | "engines": { 1011 | "node": ">=12" 1012 | } 1013 | }, 1014 | "node_modules/d3-timer": { 1015 | "version": "3.0.1", 1016 | "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", 1017 | "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", 1018 | "license": "ISC", 1019 | "engines": { 1020 | "node": ">=12" 1021 | } 1022 | }, 1023 | "node_modules/d3-transition": { 1024 | "version": "3.0.1", 1025 | "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", 1026 | "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", 1027 | "license": "ISC", 1028 | "dependencies": { 1029 | "d3-color": "1 - 3", 1030 | "d3-dispatch": "1 - 3", 1031 | "d3-ease": "1 - 3", 1032 | "d3-interpolate": "1 - 3", 1033 | "d3-timer": "1 - 3" 1034 | }, 1035 | "engines": { 1036 | "node": ">=12" 1037 | }, 1038 | "peerDependencies": { 1039 | "d3-selection": "2 - 3" 1040 | } 1041 | }, 1042 | "node_modules/d3-zoom": { 1043 | "version": "3.0.0", 1044 | "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", 1045 | "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", 1046 | "license": "ISC", 1047 | "dependencies": { 1048 | "d3-dispatch": "1 - 3", 1049 | "d3-drag": "2 - 3", 1050 | "d3-interpolate": "1 - 3", 1051 | "d3-selection": "2 - 3", 1052 | "d3-transition": "2 - 3" 1053 | }, 1054 | "engines": { 1055 | "node": ">=12" 1056 | } 1057 | }, 1058 | "node_modules/debug": { 1059 | "version": "3.2.7", 1060 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 1061 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 1062 | "dev": true, 1063 | "license": "MIT", 1064 | "dependencies": { 1065 | "ms": "^2.1.1" 1066 | } 1067 | }, 1068 | "node_modules/delaunator": { 1069 | "version": "5.0.1", 1070 | "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", 1071 | "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", 1072 | "license": "ISC", 1073 | "dependencies": { 1074 | "robust-predicates": "^3.0.2" 1075 | } 1076 | }, 1077 | "node_modules/dunder-proto": { 1078 | "version": "1.0.1", 1079 | "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", 1080 | "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", 1081 | "dev": true, 1082 | "license": "MIT", 1083 | "dependencies": { 1084 | "call-bind-apply-helpers": "^1.0.1", 1085 | "es-errors": "^1.3.0", 1086 | "gopd": "^1.2.0" 1087 | }, 1088 | "engines": { 1089 | "node": ">= 0.4" 1090 | } 1091 | }, 1092 | "node_modules/electron-to-chromium": { 1093 | "version": "1.5.102", 1094 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.102.tgz", 1095 | "integrity": "sha512-eHhqaja8tE/FNpIiBrvBjFV/SSKpyWHLvxuR9dPTdo+3V9ppdLmFB7ZZQ98qNovcngPLYIz0oOBF9P0FfZef5Q==", 1096 | "dev": true, 1097 | "license": "ISC" 1098 | }, 1099 | "node_modules/enhanced-resolve": { 1100 | "version": "5.18.1", 1101 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", 1102 | "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", 1103 | "dev": true, 1104 | "license": "MIT", 1105 | "dependencies": { 1106 | "graceful-fs": "^4.2.4", 1107 | "tapable": "^2.2.0" 1108 | }, 1109 | "engines": { 1110 | "node": ">=10.13.0" 1111 | } 1112 | }, 1113 | "node_modules/envinfo": { 1114 | "version": "7.14.0", 1115 | "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", 1116 | "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", 1117 | "dev": true, 1118 | "license": "MIT", 1119 | "bin": { 1120 | "envinfo": "dist/cli.js" 1121 | }, 1122 | "engines": { 1123 | "node": ">=4" 1124 | } 1125 | }, 1126 | "node_modules/es-define-property": { 1127 | "version": "1.0.1", 1128 | "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", 1129 | "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", 1130 | "dev": true, 1131 | "license": "MIT", 1132 | "engines": { 1133 | "node": ">= 0.4" 1134 | } 1135 | }, 1136 | "node_modules/es-errors": { 1137 | "version": "1.3.0", 1138 | "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", 1139 | "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", 1140 | "dev": true, 1141 | "license": "MIT", 1142 | "engines": { 1143 | "node": ">= 0.4" 1144 | } 1145 | }, 1146 | "node_modules/es-module-lexer": { 1147 | "version": "1.6.0", 1148 | "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", 1149 | "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", 1150 | "dev": true, 1151 | "license": "MIT" 1152 | }, 1153 | "node_modules/es-object-atoms": { 1154 | "version": "1.1.1", 1155 | "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", 1156 | "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", 1157 | "dev": true, 1158 | "license": "MIT", 1159 | "dependencies": { 1160 | "es-errors": "^1.3.0" 1161 | }, 1162 | "engines": { 1163 | "node": ">= 0.4" 1164 | } 1165 | }, 1166 | "node_modules/escalade": { 1167 | "version": "3.2.0", 1168 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", 1169 | "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", 1170 | "dev": true, 1171 | "license": "MIT", 1172 | "engines": { 1173 | "node": ">=6" 1174 | } 1175 | }, 1176 | "node_modules/eslint-scope": { 1177 | "version": "5.1.1", 1178 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 1179 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 1180 | "dev": true, 1181 | "license": "BSD-2-Clause", 1182 | "dependencies": { 1183 | "esrecurse": "^4.3.0", 1184 | "estraverse": "^4.1.1" 1185 | }, 1186 | "engines": { 1187 | "node": ">=8.0.0" 1188 | } 1189 | }, 1190 | "node_modules/esrecurse": { 1191 | "version": "4.3.0", 1192 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1193 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1194 | "dev": true, 1195 | "license": "BSD-2-Clause", 1196 | "dependencies": { 1197 | "estraverse": "^5.2.0" 1198 | }, 1199 | "engines": { 1200 | "node": ">=4.0" 1201 | } 1202 | }, 1203 | "node_modules/esrecurse/node_modules/estraverse": { 1204 | "version": "5.3.0", 1205 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1206 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1207 | "dev": true, 1208 | "license": "BSD-2-Clause", 1209 | "engines": { 1210 | "node": ">=4.0" 1211 | } 1212 | }, 1213 | "node_modules/estraverse": { 1214 | "version": "4.3.0", 1215 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 1216 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 1217 | "dev": true, 1218 | "license": "BSD-2-Clause", 1219 | "engines": { 1220 | "node": ">=4.0" 1221 | } 1222 | }, 1223 | "node_modules/eventemitter3": { 1224 | "version": "4.0.7", 1225 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", 1226 | "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", 1227 | "dev": true, 1228 | "license": "MIT" 1229 | }, 1230 | "node_modules/events": { 1231 | "version": "3.3.0", 1232 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", 1233 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", 1234 | "dev": true, 1235 | "license": "MIT", 1236 | "engines": { 1237 | "node": ">=0.8.x" 1238 | } 1239 | }, 1240 | "node_modules/fast-deep-equal": { 1241 | "version": "3.1.3", 1242 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1243 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1244 | "dev": true, 1245 | "license": "MIT" 1246 | }, 1247 | "node_modules/fast-uri": { 1248 | "version": "3.0.6", 1249 | "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", 1250 | "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", 1251 | "dev": true, 1252 | "funding": [ 1253 | { 1254 | "type": "github", 1255 | "url": "https://github.com/sponsors/fastify" 1256 | }, 1257 | { 1258 | "type": "opencollective", 1259 | "url": "https://opencollective.com/fastify" 1260 | } 1261 | ], 1262 | "license": "BSD-3-Clause" 1263 | }, 1264 | "node_modules/fastest-levenshtein": { 1265 | "version": "1.0.16", 1266 | "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", 1267 | "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", 1268 | "dev": true, 1269 | "license": "MIT", 1270 | "engines": { 1271 | "node": ">= 4.9.1" 1272 | } 1273 | }, 1274 | "node_modules/find-up": { 1275 | "version": "4.1.0", 1276 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 1277 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 1278 | "dev": true, 1279 | "license": "MIT", 1280 | "dependencies": { 1281 | "locate-path": "^5.0.0", 1282 | "path-exists": "^4.0.0" 1283 | }, 1284 | "engines": { 1285 | "node": ">=8" 1286 | } 1287 | }, 1288 | "node_modules/flat": { 1289 | "version": "5.0.2", 1290 | "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", 1291 | "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", 1292 | "dev": true, 1293 | "license": "BSD-3-Clause", 1294 | "bin": { 1295 | "flat": "cli.js" 1296 | } 1297 | }, 1298 | "node_modules/follow-redirects": { 1299 | "version": "1.15.9", 1300 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", 1301 | "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", 1302 | "dev": true, 1303 | "funding": [ 1304 | { 1305 | "type": "individual", 1306 | "url": "https://github.com/sponsors/RubenVerborgh" 1307 | } 1308 | ], 1309 | "license": "MIT", 1310 | "engines": { 1311 | "node": ">=4.0" 1312 | }, 1313 | "peerDependenciesMeta": { 1314 | "debug": { 1315 | "optional": true 1316 | } 1317 | } 1318 | }, 1319 | "node_modules/function-bind": { 1320 | "version": "1.1.2", 1321 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 1322 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 1323 | "dev": true, 1324 | "license": "MIT", 1325 | "funding": { 1326 | "url": "https://github.com/sponsors/ljharb" 1327 | } 1328 | }, 1329 | "node_modules/get-intrinsic": { 1330 | "version": "1.2.7", 1331 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", 1332 | "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", 1333 | "dev": true, 1334 | "license": "MIT", 1335 | "dependencies": { 1336 | "call-bind-apply-helpers": "^1.0.1", 1337 | "es-define-property": "^1.0.1", 1338 | "es-errors": "^1.3.0", 1339 | "es-object-atoms": "^1.0.0", 1340 | "function-bind": "^1.1.2", 1341 | "get-proto": "^1.0.0", 1342 | "gopd": "^1.2.0", 1343 | "has-symbols": "^1.1.0", 1344 | "hasown": "^2.0.2", 1345 | "math-intrinsics": "^1.1.0" 1346 | }, 1347 | "engines": { 1348 | "node": ">= 0.4" 1349 | }, 1350 | "funding": { 1351 | "url": "https://github.com/sponsors/ljharb" 1352 | } 1353 | }, 1354 | "node_modules/get-proto": { 1355 | "version": "1.0.1", 1356 | "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", 1357 | "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", 1358 | "dev": true, 1359 | "license": "MIT", 1360 | "dependencies": { 1361 | "dunder-proto": "^1.0.1", 1362 | "es-object-atoms": "^1.0.0" 1363 | }, 1364 | "engines": { 1365 | "node": ">= 0.4" 1366 | } 1367 | }, 1368 | "node_modules/glob-to-regexp": { 1369 | "version": "0.4.1", 1370 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", 1371 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", 1372 | "dev": true, 1373 | "license": "BSD-2-Clause" 1374 | }, 1375 | "node_modules/gopd": { 1376 | "version": "1.2.0", 1377 | "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", 1378 | "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", 1379 | "dev": true, 1380 | "license": "MIT", 1381 | "engines": { 1382 | "node": ">= 0.4" 1383 | }, 1384 | "funding": { 1385 | "url": "https://github.com/sponsors/ljharb" 1386 | } 1387 | }, 1388 | "node_modules/graceful-fs": { 1389 | "version": "4.2.11", 1390 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 1391 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 1392 | "dev": true, 1393 | "license": "ISC" 1394 | }, 1395 | "node_modules/has-flag": { 1396 | "version": "4.0.0", 1397 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1398 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1399 | "dev": true, 1400 | "license": "MIT", 1401 | "engines": { 1402 | "node": ">=8" 1403 | } 1404 | }, 1405 | "node_modules/has-symbols": { 1406 | "version": "1.1.0", 1407 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", 1408 | "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", 1409 | "dev": true, 1410 | "license": "MIT", 1411 | "engines": { 1412 | "node": ">= 0.4" 1413 | }, 1414 | "funding": { 1415 | "url": "https://github.com/sponsors/ljharb" 1416 | } 1417 | }, 1418 | "node_modules/hasown": { 1419 | "version": "2.0.2", 1420 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", 1421 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 1422 | "dev": true, 1423 | "license": "MIT", 1424 | "dependencies": { 1425 | "function-bind": "^1.1.2" 1426 | }, 1427 | "engines": { 1428 | "node": ">= 0.4" 1429 | } 1430 | }, 1431 | "node_modules/he": { 1432 | "version": "1.2.0", 1433 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 1434 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 1435 | "dev": true, 1436 | "license": "MIT", 1437 | "bin": { 1438 | "he": "bin/he" 1439 | } 1440 | }, 1441 | "node_modules/html-encoding-sniffer": { 1442 | "version": "3.0.0", 1443 | "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", 1444 | "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", 1445 | "dev": true, 1446 | "license": "MIT", 1447 | "dependencies": { 1448 | "whatwg-encoding": "^2.0.0" 1449 | }, 1450 | "engines": { 1451 | "node": ">=12" 1452 | } 1453 | }, 1454 | "node_modules/http-proxy": { 1455 | "version": "1.18.1", 1456 | "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", 1457 | "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", 1458 | "dev": true, 1459 | "license": "MIT", 1460 | "dependencies": { 1461 | "eventemitter3": "^4.0.0", 1462 | "follow-redirects": "^1.0.0", 1463 | "requires-port": "^1.0.0" 1464 | }, 1465 | "engines": { 1466 | "node": ">=8.0.0" 1467 | } 1468 | }, 1469 | "node_modules/http-server": { 1470 | "version": "14.1.1", 1471 | "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", 1472 | "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", 1473 | "dev": true, 1474 | "license": "MIT", 1475 | "dependencies": { 1476 | "basic-auth": "^2.0.1", 1477 | "chalk": "^4.1.2", 1478 | "corser": "^2.0.1", 1479 | "he": "^1.2.0", 1480 | "html-encoding-sniffer": "^3.0.0", 1481 | "http-proxy": "^1.18.1", 1482 | "mime": "^1.6.0", 1483 | "minimist": "^1.2.6", 1484 | "opener": "^1.5.1", 1485 | "portfinder": "^1.0.28", 1486 | "secure-compare": "3.0.1", 1487 | "union": "~0.5.0", 1488 | "url-join": "^4.0.1" 1489 | }, 1490 | "bin": { 1491 | "http-server": "bin/http-server" 1492 | }, 1493 | "engines": { 1494 | "node": ">=12" 1495 | } 1496 | }, 1497 | "node_modules/iconv-lite": { 1498 | "version": "0.6.3", 1499 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", 1500 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 1501 | "license": "MIT", 1502 | "dependencies": { 1503 | "safer-buffer": ">= 2.1.2 < 3.0.0" 1504 | }, 1505 | "engines": { 1506 | "node": ">=0.10.0" 1507 | } 1508 | }, 1509 | "node_modules/import-local": { 1510 | "version": "3.2.0", 1511 | "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", 1512 | "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", 1513 | "dev": true, 1514 | "license": "MIT", 1515 | "dependencies": { 1516 | "pkg-dir": "^4.2.0", 1517 | "resolve-cwd": "^3.0.0" 1518 | }, 1519 | "bin": { 1520 | "import-local-fixture": "fixtures/cli.js" 1521 | }, 1522 | "engines": { 1523 | "node": ">=8" 1524 | }, 1525 | "funding": { 1526 | "url": "https://github.com/sponsors/sindresorhus" 1527 | } 1528 | }, 1529 | "node_modules/internmap": { 1530 | "version": "2.0.3", 1531 | "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", 1532 | "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", 1533 | "license": "ISC", 1534 | "engines": { 1535 | "node": ">=12" 1536 | } 1537 | }, 1538 | "node_modules/interpret": { 1539 | "version": "3.1.1", 1540 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", 1541 | "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", 1542 | "dev": true, 1543 | "license": "MIT", 1544 | "engines": { 1545 | "node": ">=10.13.0" 1546 | } 1547 | }, 1548 | "node_modules/is-core-module": { 1549 | "version": "2.16.1", 1550 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", 1551 | "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", 1552 | "dev": true, 1553 | "license": "MIT", 1554 | "dependencies": { 1555 | "hasown": "^2.0.2" 1556 | }, 1557 | "engines": { 1558 | "node": ">= 0.4" 1559 | }, 1560 | "funding": { 1561 | "url": "https://github.com/sponsors/ljharb" 1562 | } 1563 | }, 1564 | "node_modules/is-plain-object": { 1565 | "version": "2.0.4", 1566 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 1567 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", 1568 | "dev": true, 1569 | "license": "MIT", 1570 | "dependencies": { 1571 | "isobject": "^3.0.1" 1572 | }, 1573 | "engines": { 1574 | "node": ">=0.10.0" 1575 | } 1576 | }, 1577 | "node_modules/isexe": { 1578 | "version": "2.0.0", 1579 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1580 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1581 | "dev": true, 1582 | "license": "ISC" 1583 | }, 1584 | "node_modules/isobject": { 1585 | "version": "3.0.1", 1586 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 1587 | "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", 1588 | "dev": true, 1589 | "license": "MIT", 1590 | "engines": { 1591 | "node": ">=0.10.0" 1592 | } 1593 | }, 1594 | "node_modules/jest-worker": { 1595 | "version": "27.5.1", 1596 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", 1597 | "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", 1598 | "dev": true, 1599 | "license": "MIT", 1600 | "dependencies": { 1601 | "@types/node": "*", 1602 | "merge-stream": "^2.0.0", 1603 | "supports-color": "^8.0.0" 1604 | }, 1605 | "engines": { 1606 | "node": ">= 10.13.0" 1607 | } 1608 | }, 1609 | "node_modules/jest-worker/node_modules/supports-color": { 1610 | "version": "8.1.1", 1611 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 1612 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 1613 | "dev": true, 1614 | "license": "MIT", 1615 | "dependencies": { 1616 | "has-flag": "^4.0.0" 1617 | }, 1618 | "engines": { 1619 | "node": ">=10" 1620 | }, 1621 | "funding": { 1622 | "url": "https://github.com/chalk/supports-color?sponsor=1" 1623 | } 1624 | }, 1625 | "node_modules/json-parse-even-better-errors": { 1626 | "version": "2.3.1", 1627 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 1628 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", 1629 | "dev": true, 1630 | "license": "MIT" 1631 | }, 1632 | "node_modules/json-schema-traverse": { 1633 | "version": "1.0.0", 1634 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", 1635 | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", 1636 | "dev": true, 1637 | "license": "MIT" 1638 | }, 1639 | "node_modules/kind-of": { 1640 | "version": "6.0.3", 1641 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", 1642 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", 1643 | "dev": true, 1644 | "license": "MIT", 1645 | "engines": { 1646 | "node": ">=0.10.0" 1647 | } 1648 | }, 1649 | "node_modules/loader-runner": { 1650 | "version": "4.3.0", 1651 | "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", 1652 | "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", 1653 | "dev": true, 1654 | "license": "MIT", 1655 | "engines": { 1656 | "node": ">=6.11.5" 1657 | } 1658 | }, 1659 | "node_modules/locate-path": { 1660 | "version": "5.0.0", 1661 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 1662 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 1663 | "dev": true, 1664 | "license": "MIT", 1665 | "dependencies": { 1666 | "p-locate": "^4.1.0" 1667 | }, 1668 | "engines": { 1669 | "node": ">=8" 1670 | } 1671 | }, 1672 | "node_modules/lodash": { 1673 | "version": "4.17.21", 1674 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1675 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 1676 | "dev": true, 1677 | "license": "MIT" 1678 | }, 1679 | "node_modules/math-intrinsics": { 1680 | "version": "1.1.0", 1681 | "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", 1682 | "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", 1683 | "dev": true, 1684 | "license": "MIT", 1685 | "engines": { 1686 | "node": ">= 0.4" 1687 | } 1688 | }, 1689 | "node_modules/merge-stream": { 1690 | "version": "2.0.0", 1691 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 1692 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 1693 | "dev": true, 1694 | "license": "MIT" 1695 | }, 1696 | "node_modules/mime": { 1697 | "version": "1.6.0", 1698 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1699 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 1700 | "dev": true, 1701 | "license": "MIT", 1702 | "bin": { 1703 | "mime": "cli.js" 1704 | }, 1705 | "engines": { 1706 | "node": ">=4" 1707 | } 1708 | }, 1709 | "node_modules/mime-db": { 1710 | "version": "1.52.0", 1711 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1712 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 1713 | "dev": true, 1714 | "license": "MIT", 1715 | "engines": { 1716 | "node": ">= 0.6" 1717 | } 1718 | }, 1719 | "node_modules/mime-types": { 1720 | "version": "2.1.35", 1721 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1722 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1723 | "dev": true, 1724 | "license": "MIT", 1725 | "dependencies": { 1726 | "mime-db": "1.52.0" 1727 | }, 1728 | "engines": { 1729 | "node": ">= 0.6" 1730 | } 1731 | }, 1732 | "node_modules/minimist": { 1733 | "version": "1.2.8", 1734 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 1735 | "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 1736 | "dev": true, 1737 | "license": "MIT", 1738 | "funding": { 1739 | "url": "https://github.com/sponsors/ljharb" 1740 | } 1741 | }, 1742 | "node_modules/mkdirp": { 1743 | "version": "0.5.6", 1744 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", 1745 | "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", 1746 | "dev": true, 1747 | "license": "MIT", 1748 | "dependencies": { 1749 | "minimist": "^1.2.6" 1750 | }, 1751 | "bin": { 1752 | "mkdirp": "bin/cmd.js" 1753 | } 1754 | }, 1755 | "node_modules/ms": { 1756 | "version": "2.1.3", 1757 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1758 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1759 | "dev": true, 1760 | "license": "MIT" 1761 | }, 1762 | "node_modules/neo-async": { 1763 | "version": "2.6.2", 1764 | "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", 1765 | "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", 1766 | "dev": true, 1767 | "license": "MIT" 1768 | }, 1769 | "node_modules/node-releases": { 1770 | "version": "2.0.19", 1771 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", 1772 | "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", 1773 | "dev": true, 1774 | "license": "MIT" 1775 | }, 1776 | "node_modules/object-inspect": { 1777 | "version": "1.13.4", 1778 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", 1779 | "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", 1780 | "dev": true, 1781 | "license": "MIT", 1782 | "engines": { 1783 | "node": ">= 0.4" 1784 | }, 1785 | "funding": { 1786 | "url": "https://github.com/sponsors/ljharb" 1787 | } 1788 | }, 1789 | "node_modules/opener": { 1790 | "version": "1.5.2", 1791 | "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", 1792 | "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", 1793 | "dev": true, 1794 | "license": "(WTFPL OR MIT)", 1795 | "bin": { 1796 | "opener": "bin/opener-bin.js" 1797 | } 1798 | }, 1799 | "node_modules/p-limit": { 1800 | "version": "2.3.0", 1801 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 1802 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 1803 | "dev": true, 1804 | "license": "MIT", 1805 | "dependencies": { 1806 | "p-try": "^2.0.0" 1807 | }, 1808 | "engines": { 1809 | "node": ">=6" 1810 | }, 1811 | "funding": { 1812 | "url": "https://github.com/sponsors/sindresorhus" 1813 | } 1814 | }, 1815 | "node_modules/p-locate": { 1816 | "version": "4.1.0", 1817 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 1818 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 1819 | "dev": true, 1820 | "license": "MIT", 1821 | "dependencies": { 1822 | "p-limit": "^2.2.0" 1823 | }, 1824 | "engines": { 1825 | "node": ">=8" 1826 | } 1827 | }, 1828 | "node_modules/p-try": { 1829 | "version": "2.2.0", 1830 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 1831 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 1832 | "dev": true, 1833 | "license": "MIT", 1834 | "engines": { 1835 | "node": ">=6" 1836 | } 1837 | }, 1838 | "node_modules/path-exists": { 1839 | "version": "4.0.0", 1840 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1841 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1842 | "dev": true, 1843 | "license": "MIT", 1844 | "engines": { 1845 | "node": ">=8" 1846 | } 1847 | }, 1848 | "node_modules/path-key": { 1849 | "version": "3.1.1", 1850 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1851 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1852 | "dev": true, 1853 | "license": "MIT", 1854 | "engines": { 1855 | "node": ">=8" 1856 | } 1857 | }, 1858 | "node_modules/path-parse": { 1859 | "version": "1.0.7", 1860 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1861 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1862 | "dev": true, 1863 | "license": "MIT" 1864 | }, 1865 | "node_modules/picocolors": { 1866 | "version": "1.1.1", 1867 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 1868 | "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 1869 | "dev": true, 1870 | "license": "ISC" 1871 | }, 1872 | "node_modules/pkg-dir": { 1873 | "version": "4.2.0", 1874 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", 1875 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", 1876 | "dev": true, 1877 | "license": "MIT", 1878 | "dependencies": { 1879 | "find-up": "^4.0.0" 1880 | }, 1881 | "engines": { 1882 | "node": ">=8" 1883 | } 1884 | }, 1885 | "node_modules/portfinder": { 1886 | "version": "1.0.32", 1887 | "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", 1888 | "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", 1889 | "dev": true, 1890 | "license": "MIT", 1891 | "dependencies": { 1892 | "async": "^2.6.4", 1893 | "debug": "^3.2.7", 1894 | "mkdirp": "^0.5.6" 1895 | }, 1896 | "engines": { 1897 | "node": ">= 0.12.0" 1898 | } 1899 | }, 1900 | "node_modules/qs": { 1901 | "version": "6.14.0", 1902 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", 1903 | "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", 1904 | "dev": true, 1905 | "license": "BSD-3-Clause", 1906 | "dependencies": { 1907 | "side-channel": "^1.1.0" 1908 | }, 1909 | "engines": { 1910 | "node": ">=0.6" 1911 | }, 1912 | "funding": { 1913 | "url": "https://github.com/sponsors/ljharb" 1914 | } 1915 | }, 1916 | "node_modules/randombytes": { 1917 | "version": "2.1.0", 1918 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 1919 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 1920 | "dev": true, 1921 | "license": "MIT", 1922 | "dependencies": { 1923 | "safe-buffer": "^5.1.0" 1924 | } 1925 | }, 1926 | "node_modules/rechoir": { 1927 | "version": "0.8.0", 1928 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", 1929 | "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", 1930 | "dev": true, 1931 | "license": "MIT", 1932 | "dependencies": { 1933 | "resolve": "^1.20.0" 1934 | }, 1935 | "engines": { 1936 | "node": ">= 10.13.0" 1937 | } 1938 | }, 1939 | "node_modules/require-from-string": { 1940 | "version": "2.0.2", 1941 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", 1942 | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", 1943 | "dev": true, 1944 | "license": "MIT", 1945 | "engines": { 1946 | "node": ">=0.10.0" 1947 | } 1948 | }, 1949 | "node_modules/requires-port": { 1950 | "version": "1.0.0", 1951 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 1952 | "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", 1953 | "dev": true, 1954 | "license": "MIT" 1955 | }, 1956 | "node_modules/resolve": { 1957 | "version": "1.22.10", 1958 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", 1959 | "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", 1960 | "dev": true, 1961 | "license": "MIT", 1962 | "dependencies": { 1963 | "is-core-module": "^2.16.0", 1964 | "path-parse": "^1.0.7", 1965 | "supports-preserve-symlinks-flag": "^1.0.0" 1966 | }, 1967 | "bin": { 1968 | "resolve": "bin/resolve" 1969 | }, 1970 | "engines": { 1971 | "node": ">= 0.4" 1972 | }, 1973 | "funding": { 1974 | "url": "https://github.com/sponsors/ljharb" 1975 | } 1976 | }, 1977 | "node_modules/resolve-cwd": { 1978 | "version": "3.0.0", 1979 | "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", 1980 | "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", 1981 | "dev": true, 1982 | "license": "MIT", 1983 | "dependencies": { 1984 | "resolve-from": "^5.0.0" 1985 | }, 1986 | "engines": { 1987 | "node": ">=8" 1988 | } 1989 | }, 1990 | "node_modules/resolve-from": { 1991 | "version": "5.0.0", 1992 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", 1993 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", 1994 | "dev": true, 1995 | "license": "MIT", 1996 | "engines": { 1997 | "node": ">=8" 1998 | } 1999 | }, 2000 | "node_modules/robust-predicates": { 2001 | "version": "3.0.2", 2002 | "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", 2003 | "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", 2004 | "license": "Unlicense" 2005 | }, 2006 | "node_modules/rw": { 2007 | "version": "1.3.3", 2008 | "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", 2009 | "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", 2010 | "license": "BSD-3-Clause" 2011 | }, 2012 | "node_modules/safe-buffer": { 2013 | "version": "5.1.2", 2014 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2015 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 2016 | "dev": true, 2017 | "license": "MIT" 2018 | }, 2019 | "node_modules/safer-buffer": { 2020 | "version": "2.1.2", 2021 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 2022 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 2023 | "license": "MIT" 2024 | }, 2025 | "node_modules/schema-utils": { 2026 | "version": "4.3.0", 2027 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", 2028 | "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", 2029 | "dev": true, 2030 | "license": "MIT", 2031 | "dependencies": { 2032 | "@types/json-schema": "^7.0.9", 2033 | "ajv": "^8.9.0", 2034 | "ajv-formats": "^2.1.1", 2035 | "ajv-keywords": "^5.1.0" 2036 | }, 2037 | "engines": { 2038 | "node": ">= 10.13.0" 2039 | }, 2040 | "funding": { 2041 | "type": "opencollective", 2042 | "url": "https://opencollective.com/webpack" 2043 | } 2044 | }, 2045 | "node_modules/secure-compare": { 2046 | "version": "3.0.1", 2047 | "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", 2048 | "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", 2049 | "dev": true, 2050 | "license": "MIT" 2051 | }, 2052 | "node_modules/serialize-javascript": { 2053 | "version": "6.0.2", 2054 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", 2055 | "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", 2056 | "dev": true, 2057 | "license": "BSD-3-Clause", 2058 | "dependencies": { 2059 | "randombytes": "^2.1.0" 2060 | } 2061 | }, 2062 | "node_modules/shallow-clone": { 2063 | "version": "3.0.1", 2064 | "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", 2065 | "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", 2066 | "dev": true, 2067 | "license": "MIT", 2068 | "dependencies": { 2069 | "kind-of": "^6.0.2" 2070 | }, 2071 | "engines": { 2072 | "node": ">=8" 2073 | } 2074 | }, 2075 | "node_modules/shebang-command": { 2076 | "version": "2.0.0", 2077 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2078 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2079 | "dev": true, 2080 | "license": "MIT", 2081 | "dependencies": { 2082 | "shebang-regex": "^3.0.0" 2083 | }, 2084 | "engines": { 2085 | "node": ">=8" 2086 | } 2087 | }, 2088 | "node_modules/shebang-regex": { 2089 | "version": "3.0.0", 2090 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2091 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2092 | "dev": true, 2093 | "license": "MIT", 2094 | "engines": { 2095 | "node": ">=8" 2096 | } 2097 | }, 2098 | "node_modules/side-channel": { 2099 | "version": "1.1.0", 2100 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", 2101 | "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", 2102 | "dev": true, 2103 | "license": "MIT", 2104 | "dependencies": { 2105 | "es-errors": "^1.3.0", 2106 | "object-inspect": "^1.13.3", 2107 | "side-channel-list": "^1.0.0", 2108 | "side-channel-map": "^1.0.1", 2109 | "side-channel-weakmap": "^1.0.2" 2110 | }, 2111 | "engines": { 2112 | "node": ">= 0.4" 2113 | }, 2114 | "funding": { 2115 | "url": "https://github.com/sponsors/ljharb" 2116 | } 2117 | }, 2118 | "node_modules/side-channel-list": { 2119 | "version": "1.0.0", 2120 | "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", 2121 | "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", 2122 | "dev": true, 2123 | "license": "MIT", 2124 | "dependencies": { 2125 | "es-errors": "^1.3.0", 2126 | "object-inspect": "^1.13.3" 2127 | }, 2128 | "engines": { 2129 | "node": ">= 0.4" 2130 | }, 2131 | "funding": { 2132 | "url": "https://github.com/sponsors/ljharb" 2133 | } 2134 | }, 2135 | "node_modules/side-channel-map": { 2136 | "version": "1.0.1", 2137 | "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", 2138 | "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", 2139 | "dev": true, 2140 | "license": "MIT", 2141 | "dependencies": { 2142 | "call-bound": "^1.0.2", 2143 | "es-errors": "^1.3.0", 2144 | "get-intrinsic": "^1.2.5", 2145 | "object-inspect": "^1.13.3" 2146 | }, 2147 | "engines": { 2148 | "node": ">= 0.4" 2149 | }, 2150 | "funding": { 2151 | "url": "https://github.com/sponsors/ljharb" 2152 | } 2153 | }, 2154 | "node_modules/side-channel-weakmap": { 2155 | "version": "1.0.2", 2156 | "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", 2157 | "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", 2158 | "dev": true, 2159 | "license": "MIT", 2160 | "dependencies": { 2161 | "call-bound": "^1.0.2", 2162 | "es-errors": "^1.3.0", 2163 | "get-intrinsic": "^1.2.5", 2164 | "object-inspect": "^1.13.3", 2165 | "side-channel-map": "^1.0.1" 2166 | }, 2167 | "engines": { 2168 | "node": ">= 0.4" 2169 | }, 2170 | "funding": { 2171 | "url": "https://github.com/sponsors/ljharb" 2172 | } 2173 | }, 2174 | "node_modules/source-map": { 2175 | "version": "0.6.1", 2176 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2177 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 2178 | "dev": true, 2179 | "license": "BSD-3-Clause", 2180 | "engines": { 2181 | "node": ">=0.10.0" 2182 | } 2183 | }, 2184 | "node_modules/source-map-support": { 2185 | "version": "0.5.21", 2186 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", 2187 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", 2188 | "dev": true, 2189 | "license": "MIT", 2190 | "dependencies": { 2191 | "buffer-from": "^1.0.0", 2192 | "source-map": "^0.6.0" 2193 | } 2194 | }, 2195 | "node_modules/supports-color": { 2196 | "version": "7.2.0", 2197 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2198 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2199 | "dev": true, 2200 | "license": "MIT", 2201 | "dependencies": { 2202 | "has-flag": "^4.0.0" 2203 | }, 2204 | "engines": { 2205 | "node": ">=8" 2206 | } 2207 | }, 2208 | "node_modules/supports-preserve-symlinks-flag": { 2209 | "version": "1.0.0", 2210 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 2211 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 2212 | "dev": true, 2213 | "license": "MIT", 2214 | "engines": { 2215 | "node": ">= 0.4" 2216 | }, 2217 | "funding": { 2218 | "url": "https://github.com/sponsors/ljharb" 2219 | } 2220 | }, 2221 | "node_modules/tapable": { 2222 | "version": "2.2.1", 2223 | "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", 2224 | "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", 2225 | "dev": true, 2226 | "license": "MIT", 2227 | "engines": { 2228 | "node": ">=6" 2229 | } 2230 | }, 2231 | "node_modules/terser": { 2232 | "version": "5.39.0", 2233 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", 2234 | "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", 2235 | "dev": true, 2236 | "license": "BSD-2-Clause", 2237 | "dependencies": { 2238 | "@jridgewell/source-map": "^0.3.3", 2239 | "acorn": "^8.8.2", 2240 | "commander": "^2.20.0", 2241 | "source-map-support": "~0.5.20" 2242 | }, 2243 | "bin": { 2244 | "terser": "bin/terser" 2245 | }, 2246 | "engines": { 2247 | "node": ">=10" 2248 | } 2249 | }, 2250 | "node_modules/terser-webpack-plugin": { 2251 | "version": "5.3.11", 2252 | "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz", 2253 | "integrity": "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==", 2254 | "dev": true, 2255 | "license": "MIT", 2256 | "dependencies": { 2257 | "@jridgewell/trace-mapping": "^0.3.25", 2258 | "jest-worker": "^27.4.5", 2259 | "schema-utils": "^4.3.0", 2260 | "serialize-javascript": "^6.0.2", 2261 | "terser": "^5.31.1" 2262 | }, 2263 | "engines": { 2264 | "node": ">= 10.13.0" 2265 | }, 2266 | "funding": { 2267 | "type": "opencollective", 2268 | "url": "https://opencollective.com/webpack" 2269 | }, 2270 | "peerDependencies": { 2271 | "webpack": "^5.1.0" 2272 | }, 2273 | "peerDependenciesMeta": { 2274 | "@swc/core": { 2275 | "optional": true 2276 | }, 2277 | "esbuild": { 2278 | "optional": true 2279 | }, 2280 | "uglify-js": { 2281 | "optional": true 2282 | } 2283 | } 2284 | }, 2285 | "node_modules/terser/node_modules/commander": { 2286 | "version": "2.20.3", 2287 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 2288 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 2289 | "dev": true, 2290 | "license": "MIT" 2291 | }, 2292 | "node_modules/undici-types": { 2293 | "version": "6.20.0", 2294 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", 2295 | "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", 2296 | "dev": true, 2297 | "license": "MIT" 2298 | }, 2299 | "node_modules/union": { 2300 | "version": "0.5.0", 2301 | "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", 2302 | "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", 2303 | "dev": true, 2304 | "dependencies": { 2305 | "qs": "^6.4.0" 2306 | }, 2307 | "engines": { 2308 | "node": ">= 0.8.0" 2309 | } 2310 | }, 2311 | "node_modules/update-browserslist-db": { 2312 | "version": "1.1.2", 2313 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", 2314 | "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", 2315 | "dev": true, 2316 | "funding": [ 2317 | { 2318 | "type": "opencollective", 2319 | "url": "https://opencollective.com/browserslist" 2320 | }, 2321 | { 2322 | "type": "tidelift", 2323 | "url": "https://tidelift.com/funding/github/npm/browserslist" 2324 | }, 2325 | { 2326 | "type": "github", 2327 | "url": "https://github.com/sponsors/ai" 2328 | } 2329 | ], 2330 | "license": "MIT", 2331 | "dependencies": { 2332 | "escalade": "^3.2.0", 2333 | "picocolors": "^1.1.1" 2334 | }, 2335 | "bin": { 2336 | "update-browserslist-db": "cli.js" 2337 | }, 2338 | "peerDependencies": { 2339 | "browserslist": ">= 4.21.0" 2340 | } 2341 | }, 2342 | "node_modules/url-join": { 2343 | "version": "4.0.1", 2344 | "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", 2345 | "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", 2346 | "dev": true, 2347 | "license": "MIT" 2348 | }, 2349 | "node_modules/watchpack": { 2350 | "version": "2.4.2", 2351 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", 2352 | "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", 2353 | "dev": true, 2354 | "license": "MIT", 2355 | "dependencies": { 2356 | "glob-to-regexp": "^0.4.1", 2357 | "graceful-fs": "^4.1.2" 2358 | }, 2359 | "engines": { 2360 | "node": ">=10.13.0" 2361 | } 2362 | }, 2363 | "node_modules/webpack": { 2364 | "version": "5.98.0", 2365 | "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.98.0.tgz", 2366 | "integrity": "sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==", 2367 | "dev": true, 2368 | "license": "MIT", 2369 | "dependencies": { 2370 | "@types/eslint-scope": "^3.7.7", 2371 | "@types/estree": "^1.0.6", 2372 | "@webassemblyjs/ast": "^1.14.1", 2373 | "@webassemblyjs/wasm-edit": "^1.14.1", 2374 | "@webassemblyjs/wasm-parser": "^1.14.1", 2375 | "acorn": "^8.14.0", 2376 | "browserslist": "^4.24.0", 2377 | "chrome-trace-event": "^1.0.2", 2378 | "enhanced-resolve": "^5.17.1", 2379 | "es-module-lexer": "^1.2.1", 2380 | "eslint-scope": "5.1.1", 2381 | "events": "^3.2.0", 2382 | "glob-to-regexp": "^0.4.1", 2383 | "graceful-fs": "^4.2.11", 2384 | "json-parse-even-better-errors": "^2.3.1", 2385 | "loader-runner": "^4.2.0", 2386 | "mime-types": "^2.1.27", 2387 | "neo-async": "^2.6.2", 2388 | "schema-utils": "^4.3.0", 2389 | "tapable": "^2.1.1", 2390 | "terser-webpack-plugin": "^5.3.11", 2391 | "watchpack": "^2.4.1", 2392 | "webpack-sources": "^3.2.3" 2393 | }, 2394 | "bin": { 2395 | "webpack": "bin/webpack.js" 2396 | }, 2397 | "engines": { 2398 | "node": ">=10.13.0" 2399 | }, 2400 | "funding": { 2401 | "type": "opencollective", 2402 | "url": "https://opencollective.com/webpack" 2403 | }, 2404 | "peerDependenciesMeta": { 2405 | "webpack-cli": { 2406 | "optional": true 2407 | } 2408 | } 2409 | }, 2410 | "node_modules/webpack-cli": { 2411 | "version": "5.1.4", 2412 | "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", 2413 | "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", 2414 | "dev": true, 2415 | "license": "MIT", 2416 | "dependencies": { 2417 | "@discoveryjs/json-ext": "^0.5.0", 2418 | "@webpack-cli/configtest": "^2.1.1", 2419 | "@webpack-cli/info": "^2.0.2", 2420 | "@webpack-cli/serve": "^2.0.5", 2421 | "colorette": "^2.0.14", 2422 | "commander": "^10.0.1", 2423 | "cross-spawn": "^7.0.3", 2424 | "envinfo": "^7.7.3", 2425 | "fastest-levenshtein": "^1.0.12", 2426 | "import-local": "^3.0.2", 2427 | "interpret": "^3.1.1", 2428 | "rechoir": "^0.8.0", 2429 | "webpack-merge": "^5.7.3" 2430 | }, 2431 | "bin": { 2432 | "webpack-cli": "bin/cli.js" 2433 | }, 2434 | "engines": { 2435 | "node": ">=14.15.0" 2436 | }, 2437 | "funding": { 2438 | "type": "opencollective", 2439 | "url": "https://opencollective.com/webpack" 2440 | }, 2441 | "peerDependencies": { 2442 | "webpack": "5.x.x" 2443 | }, 2444 | "peerDependenciesMeta": { 2445 | "@webpack-cli/generators": { 2446 | "optional": true 2447 | }, 2448 | "webpack-bundle-analyzer": { 2449 | "optional": true 2450 | }, 2451 | "webpack-dev-server": { 2452 | "optional": true 2453 | } 2454 | } 2455 | }, 2456 | "node_modules/webpack-cli/node_modules/commander": { 2457 | "version": "10.0.1", 2458 | "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", 2459 | "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", 2460 | "dev": true, 2461 | "license": "MIT", 2462 | "engines": { 2463 | "node": ">=14" 2464 | } 2465 | }, 2466 | "node_modules/webpack-merge": { 2467 | "version": "5.10.0", 2468 | "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", 2469 | "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", 2470 | "dev": true, 2471 | "license": "MIT", 2472 | "dependencies": { 2473 | "clone-deep": "^4.0.1", 2474 | "flat": "^5.0.2", 2475 | "wildcard": "^2.0.0" 2476 | }, 2477 | "engines": { 2478 | "node": ">=10.0.0" 2479 | } 2480 | }, 2481 | "node_modules/webpack-sources": { 2482 | "version": "3.2.3", 2483 | "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", 2484 | "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", 2485 | "dev": true, 2486 | "license": "MIT", 2487 | "engines": { 2488 | "node": ">=10.13.0" 2489 | } 2490 | }, 2491 | "node_modules/whatwg-encoding": { 2492 | "version": "2.0.0", 2493 | "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", 2494 | "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", 2495 | "dev": true, 2496 | "license": "MIT", 2497 | "dependencies": { 2498 | "iconv-lite": "0.6.3" 2499 | }, 2500 | "engines": { 2501 | "node": ">=12" 2502 | } 2503 | }, 2504 | "node_modules/which": { 2505 | "version": "2.0.2", 2506 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2507 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2508 | "dev": true, 2509 | "license": "ISC", 2510 | "dependencies": { 2511 | "isexe": "^2.0.0" 2512 | }, 2513 | "bin": { 2514 | "node-which": "bin/node-which" 2515 | }, 2516 | "engines": { 2517 | "node": ">= 8" 2518 | } 2519 | }, 2520 | "node_modules/wildcard": { 2521 | "version": "2.0.1", 2522 | "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", 2523 | "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", 2524 | "dev": true, 2525 | "license": "MIT" 2526 | } 2527 | } 2528 | } 2529 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "skillset", 3 | "version": "1.0.0", 4 | "description": "Intuitive job-candidate skill visualization, taking advantage of D3.js and JSONResume.", 5 | "main": "index.js", 6 | "devDependencies": { 7 | "http-server": "^14.1.1", 8 | "webpack": "^5.98.0", 9 | "webpack-cli": "^5.1.4" 10 | }, 11 | "scripts": { 12 | "test": "test", 13 | "dev": "webpack --mode development", 14 | "build": "webpack --mode production", 15 | "serve": "http-server" 16 | }, 17 | "repository": { 18 | "type": "git", 19 | "url": "git+https://github.com/Jac21/SkillSet.git" 20 | }, 21 | "keywords": [ 22 | "d3.js", 23 | "resume", 24 | "JSONResume", 25 | "json" 26 | ], 27 | "author": "Jeremy Cantu", 28 | "license": "MIT", 29 | "bugs": { 30 | "url": "https://github.com/Jac21/SkillSet/issues" 31 | }, 32 | "homepage": "https://github.com/Jac21/SkillSet#readme", 33 | "dependencies": { 34 | "d3": "^7.9.0" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/app.js: -------------------------------------------------------------------------------- 1 | // base csv string object 2 | let csv = "source,target,value"; 3 | 4 | // error area declaration 5 | let errorArea = document.getElementById("error-area"); 6 | 7 | // convert JSONResume file input to csv file, download to user's machine 8 | const convertJson = function (e) { 9 | e.preventDefault(); 10 | 11 | // grab file value, create object URL to use in getJSON call 12 | let jsonFileValue = document.getElementById("json-input").files[0]; 13 | let jsonFile = window.URL.createObjectURL(jsonFileValue); 14 | 15 | // if browser supports fetch api 16 | if (self.fetch) { 17 | fetch(jsonFile) 18 | .then(function (response) { 19 | return response.json().then(function (json) { 20 | // iterate through json resume skill section 21 | for (var i = 0; i < json.skills.length; i++) { 22 | // iterate through keywords sub-section, append values to csv 23 | for (var j = 0; j < json.skills[i].keywords.length; j++) { 24 | csv += 25 | "\n" + 26 | json.skills[i].name + 27 | "," + 28 | json.skills[i].keywords[j] + 29 | "," + 30 | setSkillValue(json.skills[i].level); 31 | } 32 | } 33 | // clear error area and visualize 34 | errorArea.innerHTML = ""; 35 | 36 | forceLayoutVisualize( 37 | "data:attachment/csv," + encodeURIComponent(csv) 38 | ); 39 | }); 40 | }) 41 | .catch(function (error) { 42 | errorArea.innerHTML = 43 | "There has been a problem with your fetch operation: " + 44 | error.message + 45 | ""; 46 | }); 47 | } else { 48 | errorArea.innerHTML = 49 | " Your browser does not support the fetch API! Please try this once more in Chrome or Firefox."; 50 | } 51 | }; 52 | 53 | /* 54 | Event Handlers 55 | */ 56 | 57 | // user has uploaded json file and clicked on submit button 58 | document 59 | .getElementById("json-input-button") 60 | .addEventListener("click", convertJson, false); 61 | 62 | /* 63 | Helper Functions 64 | */ 65 | 66 | // set skill value numeric value from json value 67 | const setSkillValue = function (level) { 68 | var skillLevelValue = "0"; 69 | 70 | if (level === "Beginner") { 71 | skillLevelValue = "1.0"; 72 | } else if (level === "Intermediate") { 73 | skillLevelValue = "2.0"; 74 | } else if (level === "Advanced") { 75 | skillLevelValue = "2.5"; 76 | } 77 | 78 | return skillLevelValue; 79 | }; 80 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import * as d3 from './lib/d3.min.js' 2 | -------------------------------------------------------------------------------- /src/viz.js: -------------------------------------------------------------------------------- 1 | const forceLayoutVisualize = function (csv) { 2 | // get the data 3 | d3.csv(csv).then((links) => { 4 | // contain data for nodes 5 | var nodes = {}; 6 | // Compute the distinct nodes from the links. 7 | links.forEach((link) => { 8 | link.source = 9 | nodes[link.source] || (nodes[link.source] = { 10 | name: link.source 11 | }); 12 | // if link.source does not equal any of the nodes values, then 13 | // create a new element in the nodes object with the name of the link.source 14 | // value being considered 15 | link.target = 16 | nodes[link.target] || (nodes[link.target] = { 17 | name: link.target 18 | }); 19 | link.value = +link.value; 20 | }); 21 | 22 | // set svg area 23 | var width = 1024, 24 | height = 768; 25 | 26 | // use d3 force function 27 | var force = d3.forceSimulation(Object.values(nodes)) 28 | //.nodes(Object.values(nodes)) // sets layout to array of nodes 29 | .force("link", d3.forceLink(links) 30 | .id((d, i) => { return i }) 31 | .distance(60) 32 | .strength(2.5)) 33 | .force("charge", d3.forceManyBody()) 34 | .force("center", d3.forceCenter(width / 2, height / 2)) 35 | .on("tick", tick) // runs the animation of the force layout 36 | 37 | // for varying link opacity 38 | var v = d3.scaleLinear().range([0, 100]); 39 | 40 | v.domain([ 41 | 0, 42 | d3.max(links, function (d) { 43 | return d.value; 44 | }) 45 | ]); 46 | 47 | links.forEach(function (link) { 48 | if (v(link.value) <= 25) { 49 | link.type = "twofive"; 50 | } else if (v(link.value) <= 50 && v(link.value) > 25) { 51 | link.type = "fivezero"; 52 | } else if (v(link.value) <= 75 && v(link.value) > 50) { 53 | link.type = "sevenfive"; 54 | } else if (v(link.value) <= 100 && v(link.value) > 75) { 55 | link.type = "onezerozero"; 56 | } 57 | }); 58 | 59 | // set up the svg container 60 | var svg = d3 61 | .select("body") 62 | .append("svg") 63 | .attr("width", width) 64 | .attr("height", height); 65 | 66 | // build the arrow. 67 | svg 68 | .append("svg:defs") 69 | .selectAll("marker") 70 | .data(["end"]) // Different link/path types can be defined here 71 | .enter() 72 | .append("svg:marker") // This section adds in the arrows 73 | .attr("id", String) 74 | .attr("viewBox", "0 -5 10 10") 75 | .attr("refX", 15) 76 | .attr("refY", -1.5) 77 | .attr("markerWidth", 6) // set bounding box for the marker 78 | .attr("markerHeight", 6) 79 | .attr("orient", "auto") 80 | .append("svg:path") 81 | .attr("d", "M0,-5L10,0L0,5"); 82 | 83 | // add the links and the arrows 84 | var path = svg 85 | .append("svg:g") 86 | .selectAll("path") 87 | .data(links) 88 | .enter() 89 | .append("svg:path") 90 | // .attr("class", function(d) { return "link " + d.type; }) 91 | .attr("class", function (d) { 92 | return "link " + d.type; 93 | }) 94 | .attr("marker-end", "url(#end)"); 95 | 96 | 97 | function dragStart(d) { 98 | if (!d.active) { 99 | force.alphaTarget(0.3).restart(); 100 | } 101 | d.subject.fx = d.subject.x; 102 | d.subject.fy = d.subject.y; 103 | 104 | } 105 | 106 | function dragged(d) { 107 | d.subject.fx = d.x; 108 | d.subject.fy = d.y; 109 | } 110 | 111 | function dragEnd(d) { 112 | if (!d.active) force.alphaTarget(0); 113 | d.subject.fx = null; 114 | d.subject.fy = null; 115 | } 116 | 117 | // define the nodes 118 | var node = svg 119 | .selectAll(".node") 120 | .data(force.nodes()) 121 | .enter() 122 | .append("g") 123 | .attr("class", "node") 124 | .call(d3.drag() 125 | .on("start", (d) => dragStart(d)) 126 | .on("drag", (d) => dragged(d)) 127 | .on("end", (d) => dragEnd(d))) 128 | .on("click", click) // call click function 129 | .on("dblclick", dblclick); // call dblclick function 130 | 131 | var color = d3.scaleOrdinal(d3.schemeCategory10); 132 | 133 | // add the nodes 134 | node 135 | .append("circle") 136 | .attr("r", 5) 137 | .style("fill", function (d) { 138 | return color(d.name); 139 | }); 140 | 141 | // add the text 142 | node 143 | .append("text") 144 | .attr("x", 14) 145 | .attr("dy", ".45em") 146 | .text(function (d) { 147 | return d.name; 148 | }); 149 | 150 | // add the curvy lines 151 | function tick() { 152 | path.attr("d", (d) => { 153 | var dx = d.target.x - d.source.x, 154 | dy = d.target.y - d.source.y, 155 | dr = Math.sqrt(dx * dx + dy * dy); 156 | return ( 157 | "M" + 158 | d.source.x + 159 | "," + 160 | d.source.y + 161 | "A" + 162 | dr + 163 | "," + 164 | dr + 165 | " 0 0,1 " + 166 | d.target.x + 167 | "," + 168 | d.target.y 169 | ); 170 | }); 171 | 172 | node.attr("transform", (d) => { 173 | return "translate(" + d.x + "," + d.y + ")"; 174 | }); 175 | } 176 | 177 | function click(event) { 178 | if (event.defaultPrevented) return; // dragged 179 | d3 180 | .select(this) 181 | .select("text") 182 | .transition() 183 | .duration(750) 184 | .attr("x", 22) 185 | .style("stroke", "lightsteelblue") 186 | .style("stroke-width", ".5px") 187 | .style("font", "20px sans-serif"); 188 | d3 189 | .select(this) 190 | .select("circle") 191 | .transition() 192 | .duration(750) 193 | .attr("r", 16); 194 | } 195 | 196 | function dblclick() { 197 | d3 198 | .select(this) 199 | .select("circle") 200 | .transition() 201 | .duration(750) 202 | .attr("r", 6); 203 | d3 204 | .select(this) 205 | .select("text") 206 | .transition() 207 | .style("stroke", "none") 208 | .style("stroke", "none") 209 | .style("font", "10px sans-serif"); 210 | } 211 | }); 212 | } -------------------------------------------------------------------------------- /styles/picnic.min.css: -------------------------------------------------------------------------------- 1 | /* Picnic CSS v6.5.0 http://picnicss.com/ */ 2 | html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:0;padding:0}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}*{box-sizing:inherit}html,body{font-family:Arial, Helvetica, sans-serif;box-sizing:border-box;height:100%}body{color:#111;font-size:1.1em;line-height:1.5;background:#fff}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;padding:.6em 0}li{margin:0 0 .3em}a{color:#0074d9;text-decoration:none;box-shadow:none;transition:all 0.3s}code{padding:.3em .6em;font-size:.8em;background:#f5f5f5}pre{text-align:left;padding:.3em .6em;background:#f5f5f5;border-radius:.2em}pre code{padding:0}blockquote{padding:0 0 0 1em;margin:0 0 0 .1em;box-shadow:inset 5px 0 rgba(17,17,17,0.3)}label{cursor:pointer}[class^="icon-"]:before,[class*=" icon-"]:before{margin:0 .6em 0 0}i[class^="icon-"]:before,i[class*=" icon-"]:before{margin:0}.label,[data-tooltip]:after,button,.button,[type=submit],.dropimage{display:inline-block;text-align:center;margin:0;padding:.3em .9em;vertical-align:middle;background:#0074d9;color:#fff;border:0;border-radius:.2em;width:auto;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.success.label,.success[data-tooltip]:after,button.success,.success.button,.success[type=submit],.success.dropimage{background:#2ecc40}.warning.label,.warning[data-tooltip]:after,button.warning,.warning.button,.warning[type=submit],.warning.dropimage{background:#ff851b}.error.label,.error[data-tooltip]:after,button.error,.error.button,.error[type=submit],.error.dropimage{background:#ff4136}.pseudo.label,.pseudo[data-tooltip]:after,button.pseudo,.pseudo.button,.pseudo[type=submit],.pseudo.dropimage{background:transparent;color:#111}.label,[data-tooltip]:after{font-size:.6em;padding:.4em .6em;margin-left:1em;line-height:1}button,.button,[type=submit],.dropimage{margin:.3em 0;cursor:pointer;transition:all 0.3s;border-radius:.2em;height:auto;box-shadow:0 0 transparent inset}button:hover,.button:hover,[type=submit]:hover,.dropimage:hover,button:focus,.button:focus,[type=submit]:focus,.dropimage:focus{box-shadow:inset 0 0 0 99em rgba(255,255,255,0.2);border:0}button.pseudo:hover,.pseudo.button:hover,.pseudo[type=submit]:hover,.pseudo.dropimage:hover,button.pseudo:focus,.pseudo.button:focus,.pseudo[type=submit]:focus,.pseudo.dropimage:focus{box-shadow:inset 0 0 0 99em rgba(17,17,17,0.1)}button.active,.active.button,.active[type=submit],.active.dropimage,button:active,.button:active,[type=submit]:active,.dropimage:active,button.pseudo:active,.pseudo.button:active,.pseudo[type=submit]:active,.pseudo.dropimage:active{box-shadow:inset 0 0 0 99em rgba(17,17,17,0.2)}button[disabled],[disabled].button,[disabled][type=submit],[disabled].dropimage{cursor:default;box-shadow:none;background:#bbb}:checked+.toggle,:checked+.toggle:hover{box-shadow:inset 0 0 0 99em rgba(17,17,17,0.2)}[type]+.toggle{padding:.3em .9em;margin-right:0}[type]+.toggle:after,[type]+.toggle:before{display:none}input,textarea,.select select{line-height:1.5;margin:0;height:2.1em;padding:.3em .6em;border:1px solid #ccc;background-color:#fff;border-radius:.2em;transition:all 0.3s;width:100%}input:focus,textarea:focus,.select select:focus{border:1px solid #0074d9;outline:0}textarea{height:auto}[type=file],[type=color]{cursor:pointer}[type=file]{height:auto}select{background:#fff url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyIiBoZWlnaHQ9IjMiPjxwYXRoIGQ9Im0gMCwxIDEsMiAxLC0yIHoiLz48L3N2Zz4=) no-repeat scroll 95% center/10px 15px;background-position:calc(100% - 15px) center;border:1px solid #ccc;border-radius:.2em;cursor:pointer;width:100%;height:2.1em;box-sizing:border-box;padding:.3em .45em;transition:all .3s;-moz-appearance:none;-webkit-appearance:none;appearance:none}select::-ms-expand{display:none}select:focus,select:active{border:1px solid #0074d9;transition:outline 0s}select:-moz-focusring{color:transparent;text-shadow:0 0 0 #111}select option{font-size:inherit;padding:.3em .45em}[type=radio],[type=checkbox]{opacity:0;width:0;position:absolute;display:inline-block}[type=radio]+.checkable:hover:before,[type=checkbox]+.checkable:hover:before,[type=radio]:focus+.checkable:before,[type=checkbox]:focus+.checkable:before{border:1px solid #0074d9}[type=radio]+.checkable,[type=checkbox]+.checkable{position:relative;cursor:pointer;padding-left:1.5em;margin-right:.6em}[type=radio]+.checkable:before,[type=checkbox]+.checkable:before,[type=radio]+.checkable:after,[type=checkbox]+.checkable:after{content:'';position:absolute;display:inline-block;left:0;top:50%;transform:translateY(-50%);font-size:1em;line-height:1em;color:transparent;font-family:sans;text-align:center;box-sizing:border-box;width:1em;height:1em;border-radius:50%;transition:all 0.3s}[type=radio]+.checkable:before,[type=checkbox]+.checkable:before{border:1px solid #aaa}[type=radio]:checked+.checkable:after,[type=checkbox]:checked+.checkable:after{background:#555;transform:scale(0.5) translateY(-100%)}[type=checkbox]+.checkable:before{border-radius:.2em}[type=checkbox]+.checkable:after{content:"✔";background:none;transform:scale(2) translateY(-25%);visibility:hidden;opacity:0}[type=checkbox]:checked+.checkable:after{color:#111;background:none;transform:translateY(-50%);transition:all 0.3s;visibility:visible;opacity:1}table{text-align:left}td,th{padding:.3em 2.4em .3em .6em}th{text-align:left;font-weight:900;color:#fff;background-color:#0074d9}.success th{background-color:#2ecc40}.warning th{background-color:#ff851b}.error th{background-color:#ff4136}.dull th{background-color:#aaa}tr:nth-child(even){background:rgba(0,0,0,0.05)}.flex{display:-ms-flexbox;display:flex;margin-left:-0.6em;width:calc(100% + .6em);flex-wrap:wrap;transition:all .3s ease}.flex>*{box-sizing:border-box;flex:1 1 auto;padding-left:.6em;padding-bottom:.6em}.flex[class*="one"]>*,.flex[class*="two"]>*,.flex[class*="three"]>*,.flex[class*="four"]>*,.flex[class*="five"]>*,.flex[class*="six"]>*,.flex[class*="seven"]>*,.flex[class*="eight"]>*,.flex[class*="nine"]>*,.flex[class*="ten"]>*,.flex[class*="eleven"]>*,.flex[class*="twelve"]>*{flex-grow:0}.flex.grow>*{flex-grow:1}.center{justify-content:center}.one>*{width:100%}.two>*{width:50%}.three>*{width:33.33333%}.four>*{width:25%}.five>*{width:20%}.six>*{width:16.66666%}.seven>*{width:14.28571%}.eight>*{width:12.5%}.nine>*{width:11.11111%}.ten>*{width:10%}.eleven>*{width:9.09091%}.twelve>*{width:8.33333%}@media all and (min-width: 500px){.one-500>*{width:100%}.two-500>*{width:50%}.three-500>*{width:33.33333%}.four-500>*{width:25%}.five-500>*{width:20%}.six-500>*{width:16.66666%}.seven-500>*{width:14.28571%}.eight-500>*{width:12.5%}.nine-500>*{width:11.11111%}.ten-500>*{width:10%}.eleven-500>*{width:9.09091%}.twelve-500>*{width:8.33333%}}@media all and (min-width: 600px){.one-600>*{width:100%}.two-600>*{width:50%}.three-600>*{width:33.33333%}.four-600>*{width:25%}.five-600>*{width:20%}.six-600>*{width:16.66666%}.seven-600>*{width:14.28571%}.eight-600>*{width:12.5%}.nine-600>*{width:11.11111%}.ten-600>*{width:10%}.eleven-600>*{width:9.09091%}.twelve-600>*{width:8.33333%}}@media all and (min-width: 700px){.one-700>*{width:100%}.two-700>*{width:50%}.three-700>*{width:33.33333%}.four-700>*{width:25%}.five-700>*{width:20%}.six-700>*{width:16.66666%}.seven-700>*{width:14.28571%}.eight-700>*{width:12.5%}.nine-700>*{width:11.11111%}.ten-700>*{width:10%}.eleven-700>*{width:9.09091%}.twelve-700>*{width:8.33333%}}@media all and (min-width: 800px){.one-800>*{width:100%}.two-800>*{width:50%}.three-800>*{width:33.33333%}.four-800>*{width:25%}.five-800>*{width:20%}.six-800>*{width:16.66666%}.seven-800>*{width:14.28571%}.eight-800>*{width:12.5%}.nine-800>*{width:11.11111%}.ten-800>*{width:10%}.eleven-800>*{width:9.09091%}.twelve-800>*{width:8.33333%}}@media all and (min-width: 900px){.one-900>*{width:100%}.two-900>*{width:50%}.three-900>*{width:33.33333%}.four-900>*{width:25%}.five-900>*{width:20%}.six-900>*{width:16.66666%}.seven-900>*{width:14.28571%}.eight-900>*{width:12.5%}.nine-900>*{width:11.11111%}.ten-900>*{width:10%}.eleven-900>*{width:9.09091%}.twelve-900>*{width:8.33333%}}@media all and (min-width: 1000px){.one-1000>*{width:100%}.two-1000>*{width:50%}.three-1000>*{width:33.33333%}.four-1000>*{width:25%}.five-1000>*{width:20%}.six-1000>*{width:16.66666%}.seven-1000>*{width:14.28571%}.eight-1000>*{width:12.5%}.nine-1000>*{width:11.11111%}.ten-1000>*{width:10%}.eleven-1000>*{width:9.09091%}.twelve-1000>*{width:8.33333%}}@media all and (min-width: 1100px){.one-1100>*{width:100%}.two-1100>*{width:50%}.three-1100>*{width:33.33333%}.four-1100>*{width:25%}.five-1100>*{width:20%}.six-1100>*{width:16.66666%}.seven-1100>*{width:14.28571%}.eight-1100>*{width:12.5%}.nine-1100>*{width:11.11111%}.ten-1100>*{width:10%}.eleven-1100>*{width:9.09091%}.twelve-1100>*{width:8.33333%}}@media all and (min-width: 1200px){.one-1200>*{width:100%}.two-1200>*{width:50%}.three-1200>*{width:33.33333%}.four-1200>*{width:25%}.five-1200>*{width:20%}.six-1200>*{width:16.66666%}.seven-1200>*{width:14.28571%}.eight-1200>*{width:12.5%}.nine-1200>*{width:11.11111%}.ten-1200>*{width:10%}.eleven-1200>*{width:9.09091%}.twelve-1200>*{width:8.33333%}}@media all and (min-width: 1300px){.one-1300>*{width:100%}.two-1300>*{width:50%}.three-1300>*{width:33.33333%}.four-1300>*{width:25%}.five-1300>*{width:20%}.six-1300>*{width:16.66666%}.seven-1300>*{width:14.28571%}.eight-1300>*{width:12.5%}.nine-1300>*{width:11.11111%}.ten-1300>*{width:10%}.eleven-1300>*{width:9.09091%}.twelve-1300>*{width:8.33333%}}@media all and (min-width: 1400px){.one-1400>*{width:100%}.two-1400>*{width:50%}.three-1400>*{width:33.33333%}.four-1400>*{width:25%}.five-1400>*{width:20%}.six-1400>*{width:16.66666%}.seven-1400>*{width:14.28571%}.eight-1400>*{width:12.5%}.nine-1400>*{width:11.11111%}.ten-1400>*{width:10%}.eleven-1400>*{width:9.09091%}.twelve-1400>*{width:8.33333%}}@media all and (min-width: 1500px){.one-1500>*{width:100%}.two-1500>*{width:50%}.three-1500>*{width:33.33333%}.four-1500>*{width:25%}.five-1500>*{width:20%}.six-1500>*{width:16.66666%}.seven-1500>*{width:14.28571%}.eight-1500>*{width:12.5%}.nine-1500>*{width:11.11111%}.ten-1500>*{width:10%}.eleven-1500>*{width:9.09091%}.twelve-1500>*{width:8.33333%}}@media all and (min-width: 1600px){.one-1600>*{width:100%}.two-1600>*{width:50%}.three-1600>*{width:33.33333%}.four-1600>*{width:25%}.five-1600>*{width:20%}.six-1600>*{width:16.66666%}.seven-1600>*{width:14.28571%}.eight-1600>*{width:12.5%}.nine-1600>*{width:11.11111%}.ten-1600>*{width:10%}.eleven-1600>*{width:9.09091%}.twelve-1600>*{width:8.33333%}}@media all and (min-width: 1700px){.one-1700>*{width:100%}.two-1700>*{width:50%}.three-1700>*{width:33.33333%}.four-1700>*{width:25%}.five-1700>*{width:20%}.six-1700>*{width:16.66666%}.seven-1700>*{width:14.28571%}.eight-1700>*{width:12.5%}.nine-1700>*{width:11.11111%}.ten-1700>*{width:10%}.eleven-1700>*{width:9.09091%}.twelve-1700>*{width:8.33333%}}@media all and (min-width: 1800px){.one-1800>*{width:100%}.two-1800>*{width:50%}.three-1800>*{width:33.33333%}.four-1800>*{width:25%}.five-1800>*{width:20%}.six-1800>*{width:16.66666%}.seven-1800>*{width:14.28571%}.eight-1800>*{width:12.5%}.nine-1800>*{width:11.11111%}.ten-1800>*{width:10%}.eleven-1800>*{width:9.09091%}.twelve-1800>*{width:8.33333%}}@media all and (min-width: 1900px){.one-1900>*{width:100%}.two-1900>*{width:50%}.three-1900>*{width:33.33333%}.four-1900>*{width:25%}.five-1900>*{width:20%}.six-1900>*{width:16.66666%}.seven-1900>*{width:14.28571%}.eight-1900>*{width:12.5%}.nine-1900>*{width:11.11111%}.ten-1900>*{width:10%}.eleven-1900>*{width:9.09091%}.twelve-1900>*{width:8.33333%}}@media all and (min-width: 2000px){.one-2000>*{width:100%}.two-2000>*{width:50%}.three-2000>*{width:33.33333%}.four-2000>*{width:25%}.five-2000>*{width:20%}.six-2000>*{width:16.66666%}.seven-2000>*{width:14.28571%}.eight-2000>*{width:12.5%}.nine-2000>*{width:11.11111%}.ten-2000>*{width:10%}.eleven-2000>*{width:9.09091%}.twelve-2000>*{width:8.33333%}}.full{width:100%}.half{width:50%}.third{width:33.33333%}.two-third{width:66.66666%}.fourth{width:25%}.three-fourth{width:75%}.fifth{width:20%}.two-fifth{width:40%}.three-fifth{width:60%}.four-fifth{width:80%}.sixth{width:16.66666%}.none{display:none}@media all and (min-width: 500px){.full-500{width:100%;display:block}.half-500{width:50%;display:block}.third-500{width:33.33333%;display:block}.two-third-500{width:66.66666%;display:block}.fourth-500{width:25%;display:block}.three-fourth-500{width:75%;display:block}.fifth-500{width:20%;display:block}.two-fifth-500{width:40%;display:block}.three-fifth-500{width:60%;display:block}.four-fifth-500{width:80%;display:block}.sixth-500{width:16.66666%;display:block}}@media all and (min-width: 600px){.full-600{width:100%;display:block}.half-600{width:50%;display:block}.third-600{width:33.33333%;display:block}.two-third-600{width:66.66666%;display:block}.fourth-600{width:25%;display:block}.three-fourth-600{width:75%;display:block}.fifth-600{width:20%;display:block}.two-fifth-600{width:40%;display:block}.three-fifth-600{width:60%;display:block}.four-fifth-600{width:80%;display:block}.sixth-600{width:16.66666%;display:block}}@media all and (min-width: 700px){.full-700{width:100%;display:block}.half-700{width:50%;display:block}.third-700{width:33.33333%;display:block}.two-third-700{width:66.66666%;display:block}.fourth-700{width:25%;display:block}.three-fourth-700{width:75%;display:block}.fifth-700{width:20%;display:block}.two-fifth-700{width:40%;display:block}.three-fifth-700{width:60%;display:block}.four-fifth-700{width:80%;display:block}.sixth-700{width:16.66666%;display:block}}@media all and (min-width: 800px){.full-800{width:100%;display:block}.half-800{width:50%;display:block}.third-800{width:33.33333%;display:block}.two-third-800{width:66.66666%;display:block}.fourth-800{width:25%;display:block}.three-fourth-800{width:75%;display:block}.fifth-800{width:20%;display:block}.two-fifth-800{width:40%;display:block}.three-fifth-800{width:60%;display:block}.four-fifth-800{width:80%;display:block}.sixth-800{width:16.66666%;display:block}}@media all and (min-width: 900px){.full-900{width:100%;display:block}.half-900{width:50%;display:block}.third-900{width:33.33333%;display:block}.two-third-900{width:66.66666%;display:block}.fourth-900{width:25%;display:block}.three-fourth-900{width:75%;display:block}.fifth-900{width:20%;display:block}.two-fifth-900{width:40%;display:block}.three-fifth-900{width:60%;display:block}.four-fifth-900{width:80%;display:block}.sixth-900{width:16.66666%;display:block}}@media all and (min-width: 1000px){.full-1000{width:100%;display:block}.half-1000{width:50%;display:block}.third-1000{width:33.33333%;display:block}.two-third-1000{width:66.66666%;display:block}.fourth-1000{width:25%;display:block}.three-fourth-1000{width:75%;display:block}.fifth-1000{width:20%;display:block}.two-fifth-1000{width:40%;display:block}.three-fifth-1000{width:60%;display:block}.four-fifth-1000{width:80%;display:block}.sixth-1000{width:16.66666%;display:block}}@media all and (min-width: 1100px){.full-1100{width:100%;display:block}.half-1100{width:50%;display:block}.third-1100{width:33.33333%;display:block}.two-third-1100{width:66.66666%;display:block}.fourth-1100{width:25%;display:block}.three-fourth-1100{width:75%;display:block}.fifth-1100{width:20%;display:block}.two-fifth-1100{width:40%;display:block}.three-fifth-1100{width:60%;display:block}.four-fifth-1100{width:80%;display:block}.sixth-1100{width:16.66666%;display:block}}@media all and (min-width: 1200px){.full-1200{width:100%;display:block}.half-1200{width:50%;display:block}.third-1200{width:33.33333%;display:block}.two-third-1200{width:66.66666%;display:block}.fourth-1200{width:25%;display:block}.three-fourth-1200{width:75%;display:block}.fifth-1200{width:20%;display:block}.two-fifth-1200{width:40%;display:block}.three-fifth-1200{width:60%;display:block}.four-fifth-1200{width:80%;display:block}.sixth-1200{width:16.66666%;display:block}}@media all and (min-width: 1300px){.full-1300{width:100%;display:block}.half-1300{width:50%;display:block}.third-1300{width:33.33333%;display:block}.two-third-1300{width:66.66666%;display:block}.fourth-1300{width:25%;display:block}.three-fourth-1300{width:75%;display:block}.fifth-1300{width:20%;display:block}.two-fifth-1300{width:40%;display:block}.three-fifth-1300{width:60%;display:block}.four-fifth-1300{width:80%;display:block}.sixth-1300{width:16.66666%;display:block}}@media all and (min-width: 1400px){.full-1400{width:100%;display:block}.half-1400{width:50%;display:block}.third-1400{width:33.33333%;display:block}.two-third-1400{width:66.66666%;display:block}.fourth-1400{width:25%;display:block}.three-fourth-1400{width:75%;display:block}.fifth-1400{width:20%;display:block}.two-fifth-1400{width:40%;display:block}.three-fifth-1400{width:60%;display:block}.four-fifth-1400{width:80%;display:block}.sixth-1400{width:16.66666%;display:block}}@media all and (min-width: 1500px){.full-1500{width:100%;display:block}.half-1500{width:50%;display:block}.third-1500{width:33.33333%;display:block}.two-third-1500{width:66.66666%;display:block}.fourth-1500{width:25%;display:block}.three-fourth-1500{width:75%;display:block}.fifth-1500{width:20%;display:block}.two-fifth-1500{width:40%;display:block}.three-fifth-1500{width:60%;display:block}.four-fifth-1500{width:80%;display:block}.sixth-1500{width:16.66666%;display:block}}@media all and (min-width: 1600px){.full-1600{width:100%;display:block}.half-1600{width:50%;display:block}.third-1600{width:33.33333%;display:block}.two-third-1600{width:66.66666%;display:block}.fourth-1600{width:25%;display:block}.three-fourth-1600{width:75%;display:block}.fifth-1600{width:20%;display:block}.two-fifth-1600{width:40%;display:block}.three-fifth-1600{width:60%;display:block}.four-fifth-1600{width:80%;display:block}.sixth-1600{width:16.66666%;display:block}}@media all and (min-width: 1700px){.full-1700{width:100%;display:block}.half-1700{width:50%;display:block}.third-1700{width:33.33333%;display:block}.two-third-1700{width:66.66666%;display:block}.fourth-1700{width:25%;display:block}.three-fourth-1700{width:75%;display:block}.fifth-1700{width:20%;display:block}.two-fifth-1700{width:40%;display:block}.three-fifth-1700{width:60%;display:block}.four-fifth-1700{width:80%;display:block}.sixth-1700{width:16.66666%;display:block}}@media all and (min-width: 1800px){.full-1800{width:100%;display:block}.half-1800{width:50%;display:block}.third-1800{width:33.33333%;display:block}.two-third-1800{width:66.66666%;display:block}.fourth-1800{width:25%;display:block}.three-fourth-1800{width:75%;display:block}.fifth-1800{width:20%;display:block}.two-fifth-1800{width:40%;display:block}.three-fifth-1800{width:60%;display:block}.four-fifth-1800{width:80%;display:block}.sixth-1800{width:16.66666%;display:block}}@media all and (min-width: 1900px){.full-1900{width:100%;display:block}.half-1900{width:50%;display:block}.third-1900{width:33.33333%;display:block}.two-third-1900{width:66.66666%;display:block}.fourth-1900{width:25%;display:block}.three-fourth-1900{width:75%;display:block}.fifth-1900{width:20%;display:block}.two-fifth-1900{width:40%;display:block}.three-fifth-1900{width:60%;display:block}.four-fifth-1900{width:80%;display:block}.sixth-1900{width:16.66666%;display:block}}@media all and (min-width: 2000px){.full-2000{width:100%;display:block}.half-2000{width:50%;display:block}.third-2000{width:33.33333%;display:block}.two-third-2000{width:66.66666%;display:block}.fourth-2000{width:25%;display:block}.three-fourth-2000{width:75%;display:block}.fifth-2000{width:20%;display:block}.two-fifth-2000{width:40%;display:block}.three-fifth-2000{width:60%;display:block}.four-fifth-2000{width:80%;display:block}.sixth-2000{width:16.66666%;display:block}}@media all and (min-width: 500px){.none-500{display:none}}@media all and (min-width: 600px){.none-600{display:none}}@media all and (min-width: 700px){.none-700{display:none}}@media all and (min-width: 800px){.none-800{display:none}}@media all and (min-width: 900px){.none-900{display:none}}@media all and (min-width: 1000px){.none-1000{display:none}}@media all and (min-width: 1100px){.none-1100{display:none}}@media all and (min-width: 1200px){.none-1200{display:none}}@media all and (min-width: 1300px){.none-1300{display:none}}@media all and (min-width: 1400px){.none-1400{display:none}}@media all and (min-width: 1500px){.none-1500{display:none}}@media all and (min-width: 1600px){.none-1600{display:none}}@media all and (min-width: 1700px){.none-1700{display:none}}@media all and (min-width: 1800px){.none-1800{display:none}}@media all and (min-width: 1900px){.none-1900{display:none}}@media all and (min-width: 2000px){.none-2000{display:none}}.off-none{margin-left:0}.off-half{margin-left:50%}.off-third{margin-left:33.33333%}.off-two-third{margin-left:66.66666%}.off-fourth{margin-left:25%}.off-three-fourth{margin-left:75%}.off-fifth{margin-left:20%}.off-two-fifth{margin-left:40%}.off-three-fifth{margin-left:60%}.off-four-fifth{margin-left:80%}.off-sixth{margin-left:16.66666%}@media all and (min-width: 500px){.off-none-500{margin-left:0}.off-half-500{margin-left:50%}.off-third-500{margin-left:33.33333%}.off-two-third-500{margin-left:66.66666%}.off-fourth-500{margin-left:25%}.off-three-fourth-500{margin-left:75%}.off-fifth-500{margin-left:20%}.off-two-fifth-500{margin-left:40%}.off-three-fifth-500{margin-left:60%}.off-four-fifth-500{margin-left:80%}.off-sixth-500{margin-left:16.66666%}}@media all and (min-width: 600px){.off-none-600{margin-left:0}.off-half-600{margin-left:50%}.off-third-600{margin-left:33.33333%}.off-two-third-600{margin-left:66.66666%}.off-fourth-600{margin-left:25%}.off-three-fourth-600{margin-left:75%}.off-fifth-600{margin-left:20%}.off-two-fifth-600{margin-left:40%}.off-three-fifth-600{margin-left:60%}.off-four-fifth-600{margin-left:80%}.off-sixth-600{margin-left:16.66666%}}@media all and (min-width: 700px){.off-none-700{margin-left:0}.off-half-700{margin-left:50%}.off-third-700{margin-left:33.33333%}.off-two-third-700{margin-left:66.66666%}.off-fourth-700{margin-left:25%}.off-three-fourth-700{margin-left:75%}.off-fifth-700{margin-left:20%}.off-two-fifth-700{margin-left:40%}.off-three-fifth-700{margin-left:60%}.off-four-fifth-700{margin-left:80%}.off-sixth-700{margin-left:16.66666%}}@media all and (min-width: 800px){.off-none-800{margin-left:0}.off-half-800{margin-left:50%}.off-third-800{margin-left:33.33333%}.off-two-third-800{margin-left:66.66666%}.off-fourth-800{margin-left:25%}.off-three-fourth-800{margin-left:75%}.off-fifth-800{margin-left:20%}.off-two-fifth-800{margin-left:40%}.off-three-fifth-800{margin-left:60%}.off-four-fifth-800{margin-left:80%}.off-sixth-800{margin-left:16.66666%}}@media all and (min-width: 900px){.off-none-900{margin-left:0}.off-half-900{margin-left:50%}.off-third-900{margin-left:33.33333%}.off-two-third-900{margin-left:66.66666%}.off-fourth-900{margin-left:25%}.off-three-fourth-900{margin-left:75%}.off-fifth-900{margin-left:20%}.off-two-fifth-900{margin-left:40%}.off-three-fifth-900{margin-left:60%}.off-four-fifth-900{margin-left:80%}.off-sixth-900{margin-left:16.66666%}}@media all and (min-width: 1000px){.off-none-1000{margin-left:0}.off-half-1000{margin-left:50%}.off-third-1000{margin-left:33.33333%}.off-two-third-1000{margin-left:66.66666%}.off-fourth-1000{margin-left:25%}.off-three-fourth-1000{margin-left:75%}.off-fifth-1000{margin-left:20%}.off-two-fifth-1000{margin-left:40%}.off-three-fifth-1000{margin-left:60%}.off-four-fifth-1000{margin-left:80%}.off-sixth-1000{margin-left:16.66666%}}@media all and (min-width: 1100px){.off-none-1100{margin-left:0}.off-half-1100{margin-left:50%}.off-third-1100{margin-left:33.33333%}.off-two-third-1100{margin-left:66.66666%}.off-fourth-1100{margin-left:25%}.off-three-fourth-1100{margin-left:75%}.off-fifth-1100{margin-left:20%}.off-two-fifth-1100{margin-left:40%}.off-three-fifth-1100{margin-left:60%}.off-four-fifth-1100{margin-left:80%}.off-sixth-1100{margin-left:16.66666%}}@media all and (min-width: 1200px){.off-none-1200{margin-left:0}.off-half-1200{margin-left:50%}.off-third-1200{margin-left:33.33333%}.off-two-third-1200{margin-left:66.66666%}.off-fourth-1200{margin-left:25%}.off-three-fourth-1200{margin-left:75%}.off-fifth-1200{margin-left:20%}.off-two-fifth-1200{margin-left:40%}.off-three-fifth-1200{margin-left:60%}.off-four-fifth-1200{margin-left:80%}.off-sixth-1200{margin-left:16.66666%}}@media all and (min-width: 1300px){.off-none-1300{margin-left:0}.off-half-1300{margin-left:50%}.off-third-1300{margin-left:33.33333%}.off-two-third-1300{margin-left:66.66666%}.off-fourth-1300{margin-left:25%}.off-three-fourth-1300{margin-left:75%}.off-fifth-1300{margin-left:20%}.off-two-fifth-1300{margin-left:40%}.off-three-fifth-1300{margin-left:60%}.off-four-fifth-1300{margin-left:80%}.off-sixth-1300{margin-left:16.66666%}}@media all and (min-width: 1400px){.off-none-1400{margin-left:0}.off-half-1400{margin-left:50%}.off-third-1400{margin-left:33.33333%}.off-two-third-1400{margin-left:66.66666%}.off-fourth-1400{margin-left:25%}.off-three-fourth-1400{margin-left:75%}.off-fifth-1400{margin-left:20%}.off-two-fifth-1400{margin-left:40%}.off-three-fifth-1400{margin-left:60%}.off-four-fifth-1400{margin-left:80%}.off-sixth-1400{margin-left:16.66666%}}@media all and (min-width: 1500px){.off-none-1500{margin-left:0}.off-half-1500{margin-left:50%}.off-third-1500{margin-left:33.33333%}.off-two-third-1500{margin-left:66.66666%}.off-fourth-1500{margin-left:25%}.off-three-fourth-1500{margin-left:75%}.off-fifth-1500{margin-left:20%}.off-two-fifth-1500{margin-left:40%}.off-three-fifth-1500{margin-left:60%}.off-four-fifth-1500{margin-left:80%}.off-sixth-1500{margin-left:16.66666%}}@media all and (min-width: 1600px){.off-none-1600{margin-left:0}.off-half-1600{margin-left:50%}.off-third-1600{margin-left:33.33333%}.off-two-third-1600{margin-left:66.66666%}.off-fourth-1600{margin-left:25%}.off-three-fourth-1600{margin-left:75%}.off-fifth-1600{margin-left:20%}.off-two-fifth-1600{margin-left:40%}.off-three-fifth-1600{margin-left:60%}.off-four-fifth-1600{margin-left:80%}.off-sixth-1600{margin-left:16.66666%}}@media all and (min-width: 1700px){.off-none-1700{margin-left:0}.off-half-1700{margin-left:50%}.off-third-1700{margin-left:33.33333%}.off-two-third-1700{margin-left:66.66666%}.off-fourth-1700{margin-left:25%}.off-three-fourth-1700{margin-left:75%}.off-fifth-1700{margin-left:20%}.off-two-fifth-1700{margin-left:40%}.off-three-fifth-1700{margin-left:60%}.off-four-fifth-1700{margin-left:80%}.off-sixth-1700{margin-left:16.66666%}}@media all and (min-width: 1800px){.off-none-1800{margin-left:0}.off-half-1800{margin-left:50%}.off-third-1800{margin-left:33.33333%}.off-two-third-1800{margin-left:66.66666%}.off-fourth-1800{margin-left:25%}.off-three-fourth-1800{margin-left:75%}.off-fifth-1800{margin-left:20%}.off-two-fifth-1800{margin-left:40%}.off-three-fifth-1800{margin-left:60%}.off-four-fifth-1800{margin-left:80%}.off-sixth-1800{margin-left:16.66666%}}@media all and (min-width: 1900px){.off-none-1900{margin-left:0}.off-half-1900{margin-left:50%}.off-third-1900{margin-left:33.33333%}.off-two-third-1900{margin-left:66.66666%}.off-fourth-1900{margin-left:25%}.off-three-fourth-1900{margin-left:75%}.off-fifth-1900{margin-left:20%}.off-two-fifth-1900{margin-left:40%}.off-three-fifth-1900{margin-left:60%}.off-four-fifth-1900{margin-left:80%}.off-sixth-1900{margin-left:16.66666%}}@media all and (min-width: 2000px){.off-none-2000{margin-left:0}.off-half-2000{margin-left:50%}.off-third-2000{margin-left:33.33333%}.off-two-third-2000{margin-left:66.66666%}.off-fourth-2000{margin-left:25%}.off-three-fourth-2000{margin-left:75%}.off-fifth-2000{margin-left:20%}.off-two-fifth-2000{margin-left:40%}.off-three-fifth-2000{margin-left:60%}.off-four-fifth-2000{margin-left:80%}.off-sixth-2000{margin-left:16.66666%}}nav{position:fixed;top:0;left:0;right:0;height:3em;padding:0 .6em;background:#fff;box-shadow:0 0 0.2em rgba(17,17,17,0.2);z-index:10000;transition:all .3s;transform-style:preserve-3d}nav .brand,nav .menu,nav .burger{float:right;position:relative;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}nav .brand{font-weight:700;float:left;padding:0 .6em;max-width:50%;white-space:nowrap;color:#111}nav .brand *{vertical-align:middle}nav .logo{height:2em;margin-right:.3em}nav .select::after{height:calc(100% - 1px);padding:0;line-height:2.4em}nav .menu>*{margin-right:.6em}nav .burger{display:none}@media all and (max-width: 60em){nav .burger{display:inline-block;cursor:pointer;bottom:-1000em;margin:0}nav .burger ~ .menu,nav .show:checked ~ .burger{position:fixed;min-height:100%;top:0;right:0;bottom:-1000em;margin:0;background:#fff;transition:all .5s ease;transform:none}nav .burger ~ .menu{z-index:11}nav .show:checked ~ .burger{color:transparent;width:100%;border-radius:0;background:rgba(0,0,0,0.2);transition:all .5s ease}nav .show ~ .menu{width:70%;max-width:300px;transform-origin:center right;transition:all .25s ease;transform:scaleX(0)}nav .show ~ .menu>*{transform:translateX(100%);transition:all 0s ease .5s}nav .show:checked ~ .menu>*:nth-child(1){transition:all .5s cubic-bezier(0.645, 0.045, 0.355, 1) 0s}nav .show:checked ~ .menu>*:nth-child(2){transition:all .5s cubic-bezier(0.645, 0.045, 0.355, 1) .1s}nav .show:checked ~ .menu>*:nth-child(3){transition:all .5s cubic-bezier(0.645, 0.045, 0.355, 1) .2s}nav .show:checked ~ .menu>*:nth-child(4){transition:all .5s cubic-bezier(0.645, 0.045, 0.355, 1) .3s}nav .show:checked ~ .menu>*:nth-child(5){transition:all .5s cubic-bezier(0.645, 0.045, 0.355, 1) .4s}nav .show:checked ~ .menu>*:nth-child(6){transition:all .5s cubic-bezier(0.645, 0.045, 0.355, 1) .5s}nav .show:checked ~ .menu{transform:scaleX(1)}nav .show:checked ~ .menu>*{transform:translateX(0);transition:all .5s ease-in-out .6s}nav .burger ~ .menu>*{display:block;margin:.3em;text-align:left;max-width:calc(100% - .6em)}nav .burger ~ .menu>a{padding:.3em .9em}}.stack,.stack .toggle{margin-top:0;margin-bottom:0;display:block;width:100%;text-align:left;border-radius:0}.stack:first-child,.stack:first-child .toggle{border-top-left-radius:.2em;border-top-right-radius:.2em}.stack:last-child,.stack:last-child .toggle{border-bottom-left-radius:.2em;border-bottom-right-radius:.2em}input.stack,textarea.stack,select.stack{transition:border-bottom 0 ease 0;border-bottom-width:0}input.stack:last-child,textarea.stack:last-child,select.stack:last-child{border-bottom-width:1px}input.stack:focus+input,input.stack:focus+textarea,input.stack:focus+select,textarea.stack:focus+input,textarea.stack:focus+textarea,textarea.stack:focus+select,select.stack:focus+input,select.stack:focus+textarea,select.stack:focus+select{border-top-color:#0074d9}.card,.modal .overlay ~ *{position:relative;box-shadow:0;border-radius:.2em;border:1px solid #ccc;overflow:hidden;text-align:left;background:#fff;margin-bottom:.6em;padding:0;transition:all .3s ease}.hidden.card,.modal .overlay ~ .hidden,:checked+.card,.modal .overlay ~ :checked+*,.modal .overlay:checked+*{font-size:0;padding:0;margin:0;border:0}.card>*,.modal .overlay ~ *>*{max-width:100%;display:block}.card>*:last-child,.modal .overlay ~ *>*:last-child{margin-bottom:0}.card header,.modal .overlay ~ * header,.card section,.modal .overlay ~ * section,.card>p,.modal .overlay ~ *>p{padding:.6em .8em}.card section,.modal .overlay ~ * section{padding:.6em .8em 0}.card hr,.modal .overlay ~ * hr{border:none;height:1px;background-color:#eee}.card header,.modal .overlay ~ * header{font-weight:bold;position:relative;border-bottom:1px solid #eee}.card header h1,.modal .overlay ~ * header h1,.card header h2,.modal .overlay ~ * header h2,.card header h3,.modal .overlay ~ * header h3,.card header h4,.modal .overlay ~ * header h4,.card header h5,.modal .overlay ~ * header h5,.card header h6,.modal .overlay ~ * header h6{padding:0;margin:0 2em 0 0;line-height:1;display:inline-block;vertical-align:text-bottom}.card header:last-child,.modal .overlay ~ * header:last-child{border-bottom:0}.card footer,.modal .overlay ~ * footer{padding:.8em}.card p,.modal .overlay ~ * p{margin:.3em 0}.card p:first-child,.modal .overlay ~ * p:first-child{margin-top:0}.card p:last-child,.modal .overlay ~ * p:last-child{margin-bottom:0}.card>p,.modal .overlay ~ *>p{margin:0;padding-right:2.5em}.card .close,.modal .overlay ~ * .close{position:absolute;top:.4em;right:.3em;font-size:1.2em;padding:0 .5em;cursor:pointer;width:auto}.card .close:hover,.modal .overlay ~ * .close:hover{color:#ff4136}.card h1+.close,.modal .overlay ~ * h1+.close{margin:.2em}.card h2+.close,.modal .overlay ~ * h2+.close{margin:.1em}.card .dangerous,.modal .overlay ~ * .dangerous{background:#ff4136;float:right}.modal{text-align:center}.modal>input{display:none}.modal>input ~ *{opacity:0;max-height:0;overflow:hidden}.modal .overlay{top:0;left:0;bottom:0;right:0;position:fixed;margin:0;border-radius:0;background:rgba(17,17,17,0.6);transition:all 0.3s;z-index:100000}.modal .overlay:before,.modal .overlay:after{display:none}.modal .overlay ~ *{border:0;position:fixed;top:50%;left:50%;transform:translateX(-50%) translateY(-50%) scale(0.2, 0.2);z-index:1000000;transition:all 0.3s}.modal>input:checked ~ *{display:block;opacity:1;max-height:10000px;transition:all 0.3s}.modal>input:checked ~ .overlay ~ *{max-height:90%;overflow:auto;-webkit-transform:translateX(-50%) translateY(-50%) scale(1, 1);transform:translateX(-50%) translateY(-50%) scale(1, 1)}@media (max-width: 60em){.modal .overlay ~ *{min-width:90%}}.dropimage{position:relative;display:block;padding:0;padding-bottom:56.25%;overflow:hidden;cursor:pointer;border:0;margin:.3em 0;border-radius:.2em;background-color:#ddd;background-size:cover;background-position:center center;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2NDAiIGhlaWdodD0iNjQwIiB2ZXJzaW9uPSIxLjEiPjxnIHN0eWxlPSJmaWxsOiMzMzMiPjxwYXRoIGQ9Ik0gMTg3IDIzMCBDIDE3NSAyMzAgMTY1IDI0MCAxNjUgMjUyIEwgMTY1IDMwMCBMIDE2NSA0MDggQyAxNjUgNDIwIDE3NSA0MzAgMTg3IDQzMCBMIDQ2MyA0MzAgQyA0NzUgNDMwIDQ4NSA0MjAgNDg1IDQwOCBMIDQ4NSAzMDAgTCA0ODUgMjUyIEMgNDg1IDI0MCA0NzUgMjMwIDQ2MyAyMzAgTCAxODcgMjMwIHogTSAzNjAgMjU2IEEgNzAgNzIgMCAwIDEgNDMwIDMyOCBBIDcwIDcyIDAgMCAxIDM2MCA0MDAgQSA3MCA3MiAwIDAgMSAyOTAgMzI4IEEgNzAgNzIgMCAwIDEgMzYwIDI1NiB6Ii8+PGNpcmNsZSBjeD0iMzYwIiBjeT0iMzMwIiByPSI0MSIvPjxwYXRoIGQ9Im0yMDUgMjI1IDUtMTAgMjAgMCA1IDEwLTMwIDAiLz48cGF0aCBkPSJNMjg1IDIwMEwyNzAgMjI1IDM3NiAyMjUgMzYxIDIwMCAyODUgMjAwek0zMTAgMjA1TDMzNyAyMDUgMzM3IDIxOCAzMTAgMjE4IDMxMCAyMDV6Ii8+PHBhdGggZD0ibTQwNSAyMjUgNS0xMCAyMCAwIDUgMTAtMzAgMCIvPjwvZz48L3N2Zz4=)}.dropimage input{left:0;width:100%;height:100%;border:0;margin:0;padding:0;opacity:0;cursor:pointer;position:absolute}.tabs{position:relative;overflow:hidden}.tabs>label img{float:left;margin-left:.6em}.tabs>.row{width:calc(100% + 2 * .6em);display:table;table-layout:fixed;position:relative;padding-left:0;transition:all .3s;border-spacing:0;margin:0}.tabs>.row:before,.tabs>.row:after{display:none}.tabs>.row>*,.tabs>.row img{display:table-cell;vertical-align:top;margin:0;width:100%}.tabs>input{display:none}.tabs>input+*{width:100%}.tabs>input+label{width:auto}.two.tabs>.row{width:200%;left:-100%}.two.tabs>input:nth-of-type(1):checked ~ .row{margin-left:100%}.two.tabs>label img{width:48%;margin:4% 0 4% 4%}.three.tabs>.row{width:300%;left:-200%}.three.tabs>input:nth-of-type(1):checked ~ .row{margin-left:200%}.three.tabs>input:nth-of-type(2):checked ~ .row{margin-left:100%}.three.tabs>label img{width:30%;margin:5% 0 5% 5%}.four.tabs>.row{width:400%;left:-300%}.four.tabs>input:nth-of-type(1):checked ~ .row{margin-left:300%}.four.tabs>input:nth-of-type(2):checked ~ .row{margin-left:200%}.four.tabs>input:nth-of-type(3):checked ~ .row{margin-left:100%}.four.tabs>label img{width:22%;margin:4% 0 4% 4%}.tabs>label:first-of-type img{margin-left:0}[data-tooltip]{position:relative}[data-tooltip]:after,[data-tooltip]:before{position:absolute;z-index:10;opacity:0;border-width:0;height:0;padding:0;overflow:hidden;transition:opacity .6s ease, height 0s ease .6s;top:calc(100% - 6px);left:0;margin-top:12px}[data-tooltip]:after{margin-left:0;font-size:.8em;background:#111;content:attr(data-tooltip);white-space:nowrap}[data-tooltip]:before{content:'';width:0;height:0;border-width:0;border-style:solid;border-color:transparent transparent #111;margin-top:0;left:10px}[data-tooltip]:hover:after,[data-tooltip]:focus:after,[data-tooltip]:hover:before,[data-tooltip]:focus:before{opacity:1;border-width:6px;height:auto}[data-tooltip]:hover:after,[data-tooltip]:focus:after{padding:.45em .9em}.tooltip-top:after,.tooltip-top:before{top:auto;bottom:calc(100% - 6px);left:0;margin-bottom:12px}.tooltip-top:before{border-color:#111 transparent transparent;margin-bottom:0;left:10px}.tooltip-right:after,.tooltip-right:before{left:100%;margin-left:6px;margin-top:0;top:0}.tooltip-right:before{border-color:transparent #111 transparent transparent;margin-left:-6px;left:100%;top:7px}.tooltip-left:after,.tooltip-left:before{right:100%;margin-right:6px;left:auto;margin-top:0;top:0}.tooltip-left:before{border-color:transparent transparent transparent #111;margin-right:-6px;right:100%;top:7px} 3 | -------------------------------------------------------------------------------- /styles/style.css: -------------------------------------------------------------------------------- 1 | img { 2 | width: 40%; 3 | padding-left: 1em; 4 | } 5 | 6 | .content { 7 | max-width: 35%; 8 | padding-left: 1em; 9 | } 10 | 11 | #error-area { 12 | font-size: 14px; 13 | color: red; 14 | } 15 | 16 | path.link { 17 | fill: none; 18 | stroke: #666; 19 | stroke-width: 1.5px; 20 | } 21 | 22 | path.link.twofive { 23 | opacity: 0.25; 24 | } 25 | 26 | path.link.fivezero { 27 | opacity: 0.50; 28 | } 29 | 30 | path.link.sevenfive { 31 | opacity: 0.75; 32 | } 33 | 34 | path.link.onezerozero { 35 | opacity: 1.0; 36 | } 37 | 38 | circle { 39 | fill: #ccc; 40 | stroke: #fff; 41 | stroke-width: 1.5px; 42 | } 43 | 44 | text { 45 | fill: #000; 46 | font: 12px sans-serif; 47 | pointer-events: none; 48 | } --------------------------------------------------------------------------------