├── style ├── main.css └── pages │ ├── info.css │ └── watch.css ├── .prettierignore ├── icons ├── dark-32.png └── dark-48.png ├── img ├── logo-big.png ├── logo-circle.png ├── remove.svg ├── bookmark.svg ├── add.svg └── light-bulb.svg ├── .prettierrc ├── .gitignore ├── pahe-plus@hwk.json ├── pages ├── general │ ├── fakesite.js │ └── random.js ├── browser.js ├── info │ ├── blur.js │ ├── score.js │ └── episode.js ├── watch │ ├── resolution.js │ ├── lights.js │ ├── number.js │ ├── direct.js │ ├── saved.js │ └── bookmark.js ├── index.js └── bookmark │ └── _.js ├── package.json ├── settings ├── css │ ├── separator.css │ ├── page.css │ ├── dev.css │ ├── popup.css │ └── settings.css ├── js │ ├── page.js │ ├── dev.js │ ├── options.js │ └── saved.js └── conf.html ├── TODO.md ├── LICENSE ├── README.md ├── manifest.json └── pnpm-lock.yaml /style/main.css: -------------------------------------------------------------------------------- 1 | #rand-btn .spinner { 2 | height: 10px; 3 | } 4 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | pnpm-lock.yaml 3 | package.json 4 | -------------------------------------------------------------------------------- /style/pages/info.css: -------------------------------------------------------------------------------- 1 | #anilist-userscores { 2 | font-size: 1rem; 3 | } 4 | -------------------------------------------------------------------------------- /icons/dark-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Cyan903/Animepahe-plus/HEAD/icons/dark-32.png -------------------------------------------------------------------------------- /icons/dark-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Cyan903/Animepahe-plus/HEAD/icons/dark-48.png -------------------------------------------------------------------------------- /img/logo-big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Cyan903/Animepahe-plus/HEAD/img/logo-big.png -------------------------------------------------------------------------------- /img/logo-circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Cyan903/Animepahe-plus/HEAD/img/logo-circle.png -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": false, 3 | "useTabs": false, 4 | "tabWidth": 4 5 | } 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # npm & node 2 | /node_modules 3 | 4 | # build 5 | /web-ext-artifacts 6 | 7 | # misc 8 | todo 9 | -------------------------------------------------------------------------------- /pahe-plus@hwk.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pahe-plus@hwk", 3 | "description": "ignored", 4 | "type": "storage", 5 | "data": {} 6 | } 7 | -------------------------------------------------------------------------------- /pages/general/fakesite.js: -------------------------------------------------------------------------------- 1 | // fakesite.js 2 | // fakesite-ignore 3 | // 4 | // Ignore the "Beware of fake websites" 5 | // message. 6 | // 7 | 8 | function fakesite() { 9 | const fake = document.querySelector(".close-ann-fakesite"); 10 | 11 | if (fake) { 12 | fake.click(); 13 | } 14 | 15 | document.cookie = "ann-fakesite"; 16 | } 17 | 18 | pahe["fakesite-ignore"] = fakesite; 19 | -------------------------------------------------------------------------------- /pages/browser.js: -------------------------------------------------------------------------------- 1 | // browser.js 2 | // Manages storage and other related 3 | // browser functions 4 | // 5 | 6 | let tabCheck = true; 7 | 8 | window.onfocus = () => (tabCheck = true); 9 | window.onblur = () => (tabCheck = false); 10 | 11 | // ensure sync.saved is stored throughout tabs 12 | browser.storage.sync.onChanged.addListener(() => { 13 | if (document.hidden || !tabCheck) { 14 | location.reload(); 15 | } 16 | }); 17 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pahe-plus", 3 | "version": "1.2.4", 4 | "description": "Additional features for animepahe.", 5 | "scripts": { 6 | "dev": "web-ext run", 7 | "build": "web-ext build --overwrite-dest", 8 | "format": "prettier . --write" 9 | }, 10 | "author": "Cyan903", 11 | "license": "MIT", 12 | "devDependencies": { 13 | "prettier": "^3.2.5", 14 | "web-ext": "^7.11.0" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /pages/info/blur.js: -------------------------------------------------------------------------------- 1 | // blur.js 2 | // blur-cover 3 | // 4 | // Blurs the episode snapshots to prevent spoilers such as 5 | // seeing a character after they "died" 6 | // 7 | 8 | function blur() { 9 | const css = ` 10 | 15 | `; 16 | 17 | document.head.insertAdjacentHTML("beforeend", css); 18 | } 19 | 20 | pahe["blur-cover"] = blur; 21 | -------------------------------------------------------------------------------- /settings/css/separator.css: -------------------------------------------------------------------------------- 1 | /* https://stackoverflow.com/a/26634224 */ 2 | .separator { 3 | display: flex; 4 | align-items: center; 5 | text-align: center; 6 | font-weight: bolder; 7 | } 8 | 9 | .separator::before, 10 | .separator::after { 11 | content: ""; 12 | flex: 1; 13 | border-bottom: 1px solid #fff; 14 | } 15 | 16 | .separator:not(:empty)::before { 17 | margin-right: 0.25em; 18 | } 19 | 20 | .separator:not(:empty)::after { 21 | margin-left: 0.25em; 22 | } 23 | -------------------------------------------------------------------------------- /settings/css/page.css: -------------------------------------------------------------------------------- 1 | .page { 2 | margin: auto; 3 | min-width: 400px; 4 | } 5 | 6 | .page-buttons { 7 | display: flex; 8 | justify-content: space-between; 9 | margin: 20px 0; 10 | } 11 | 12 | .page-button { 13 | width: calc(100% / 3 - 5px); 14 | padding: 5px 0; 15 | color: #d5015b; 16 | background-color: transparent; 17 | border: 1px solid #d5015b; 18 | } 19 | 20 | .page-button:hover { 21 | background-color: #d5015b; 22 | color: #000; 23 | } 24 | 25 | .page-active { 26 | font-weight: bolder; 27 | } 28 | -------------------------------------------------------------------------------- /settings/js/page.js: -------------------------------------------------------------------------------- 1 | // page.js 2 | // Manages tabs for the popup UI. 3 | // 4 | 5 | const page = document.querySelectorAll(".page"); 6 | const buttons = document.querySelectorAll(".page-button"); 7 | 8 | buttons.forEach((elm) => { 9 | elm.addEventListener("click", function () { 10 | for (const p of page) p.style.display = "none"; 11 | for (const b of buttons) b.classList.remove("page-active"); 12 | 13 | this.classList.add("page-active"); 14 | document.querySelector(`.${this.id}`).style.display = "block"; 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /settings/css/dev.css: -------------------------------------------------------------------------------- 1 | .debug { 2 | display: block; 3 | border: none; 4 | background-color: transparent; 5 | color: #d5015b; 6 | font-weight: bolder; 7 | } 8 | 9 | .debug:before { 10 | content: ">>> "; 11 | } 12 | 13 | .debug:hover { 14 | text-decoration: underline; 15 | } 16 | 17 | .debug:active { 18 | opacity: 0.5; 19 | } 20 | 21 | #debug-console { 22 | background-color: #111; 23 | padding: 1em; 24 | color: rgba(255, 255, 255, 0.7); 25 | border-radius: 5px; 26 | overflow: scroll; 27 | max-width: 350px; 28 | max-height: 200px; 29 | } 30 | -------------------------------------------------------------------------------- /settings/css/popup.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #000; 3 | color: #fff; 4 | font-family: "Segoe UI", Arial, sans-serif; 5 | max-width: 500px; 6 | max-height: 450px; 7 | padding: 1em; 8 | } 9 | 10 | ::selection { 11 | color: #eee; 12 | background: #d5015b; 13 | } 14 | 15 | .logo { 16 | display: block; 17 | width: 150px; 18 | height: 150px; 19 | margin: auto; 20 | } 21 | 22 | .homepage { 23 | color: rgb(133, 133, 133); 24 | float: right; 25 | font-size: 0.6em; 26 | text-decoration: none; 27 | } 28 | 29 | .homepage:hover { 30 | color: #eee; 31 | } 32 | -------------------------------------------------------------------------------- /TODO.md: -------------------------------------------------------------------------------- 1 | ### /anime/\* 2 | 3 | - [x] Countdown latest episode 4 | - [x] Blur episode cover 5 | - [x] Average score (on anilist) 6 | 7 | ### /play/\* 8 | 9 | - [x] Show actual episode number 10 | - [x] Toggle lights 11 | - [x] Select highest quality by default (sub only) 12 | - [x] Custom bookmark for episodes 13 | - [x] Skip redirect for episode downloads 14 | 15 | ### General 16 | 17 | - [x] Disable "Beware of fake websites" 18 | - [x] Random anime button 19 | - [x] Clear saved 20 | - [x] Watch history 21 | 22 | ### Debug 23 | 24 | - [x] Wipe all local data (cookie, localStorage) 25 | - [x] Reset settings to default 26 | - [x] Hard page reload 27 | -------------------------------------------------------------------------------- /img/remove.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /img/bookmark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /img/add.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /pages/watch/resolution.js: -------------------------------------------------------------------------------- 1 | // resolution.js 2 | // highest-resolution 3 | // 4 | // Automatically select the highest resolution. Will prefer 5 | // sub over dub. 6 | // 7 | 8 | function getHighestSub() { 9 | const options = document.querySelectorAll("#resolutionMenu button"); 10 | let high = -1; 11 | let helm = null; 12 | 13 | if (!options) return; 14 | 15 | for (const source of options) { 16 | if (source.dataset.audio != "jpn") continue; 17 | if (parseInt(source.dataset.resolution) > high) { 18 | high = source.dataset.resolution; 19 | helm = source; 20 | } 21 | } 22 | 23 | return helm; 24 | } 25 | 26 | function highest() { 27 | const high = getHighestSub(); 28 | 29 | if (!high) { 30 | console.warn("[pahe-plus] could not get highest sub!"); 31 | return; 32 | } 33 | 34 | high.click(); 35 | } 36 | 37 | pahe["highest-resolution"] = highest; 38 | -------------------------------------------------------------------------------- /settings/css/settings.css: -------------------------------------------------------------------------------- 1 | .conf-outer { 2 | margin-bottom: 1em; 3 | } 4 | 5 | .saved-items h4 { 6 | text-align: center; 7 | margin: 100px 0; 8 | } 9 | 10 | .saved-items a { 11 | color: #eee; 12 | text-decoration: none; 13 | display: inline-block; 14 | margin-bottom: 10px; 15 | font-weight: normal !important; 16 | } 17 | 18 | .saved-items { 19 | max-height: 250px; 20 | overflow-y: scroll; 21 | font-weight: bolder; 22 | } 23 | 24 | .saved-items a:hover { 25 | color: #d5015b; 26 | } 27 | 28 | .saved-remove { 29 | float: right; 30 | position: relative; 31 | right: 20px; 32 | background-color: transparent; 33 | color: #d5015b; 34 | border: none; 35 | width: 20px; 36 | font-weight: bolder; 37 | } 38 | 39 | .saved-remove:hover { 40 | background-color: rgba(255, 255, 255, 0.05); 41 | } 42 | 43 | #purgeSaved { 44 | background-color: transparent; 45 | border: none; 46 | color: #eee; 47 | opacity: 0.5; 48 | } 49 | 50 | #purgeSaved:hover { 51 | opacity: 1; 52 | } 53 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Cyan903 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 | -------------------------------------------------------------------------------- /img/light-bulb.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Animepahe-plus 2 | 3 | ![permissions](https://img.shields.io/github/manifest-json/v/Cyan903/animepahe-plus) ![last-commit](https://img.shields.io/github/last-commit/cyan903/animepahe-plus) ![users](https://img.shields.io/amo/users/animepahe-plus) 4 | 5 | Browser extension for adding additional features to `animepahe`. Available for download on the [Firefox addon store](https://addons.mozilla.org/en-CA/firefox/addon/animepahe-plus/) with support for all `animepahe` domains. 6 | 7 | ```sh 8 | $ npm dev # test 9 | $ npm run build # build 10 | $ npm run format # clean 11 | ``` 12 | 13 | ## Features 14 | 15 | Full feature list can be found in [todo.md](TODO.md). 16 | 17 | - Countdown latest episode 18 | - Average score (on anilist) 19 | - Select highest quality by default (sub only) 20 | - Disable "Beware of fake websites" 21 | - Random navbar button 22 | - Watch history 23 | 24 | ## Contributing 25 | 26 | All pull requests/issues are appreciated. You can find general information about the extension in [todo.md](TODO.md). 27 | 28 | The commit syntax is: `[+] feat: Adding something`. It isn't completely required, but it would be nice if followed. 29 | 30 | ## License 31 | 32 | [MIT](LICENSE) 33 | -------------------------------------------------------------------------------- /settings/js/dev.js: -------------------------------------------------------------------------------- 1 | // dev.js 2 | // The debug tab. Can be used to reset 3 | // the internal storage. 4 | // 5 | 6 | const clear = document.getElementById("clear"); 7 | const cookieMonster = document.getElementById("cookieMonster"); 8 | const syncStorage = document.getElementById("viewStorage"); 9 | const hardReload = document.getElementById("hardReload"); 10 | 11 | function clearStorage() { 12 | if (confirm("Are you sure?")) { 13 | browser.storage.sync.clear(); 14 | browser.tabs.reload({ bypassCache: true }); 15 | location.reload(); 16 | } 17 | } 18 | 19 | // prettier-ignore 20 | function takeABite() { 21 | browser.tabs.executeScript({ code: ` 22 | (() => { 23 | alert("Removing all data..."); 24 | localStorage.clear(); 25 | sessionStorage.clear(); 26 | location.reload(); 27 | })(); 28 | `}); 29 | } 30 | 31 | function viewStorage() { 32 | const dc = document.getElementById("debug-console"); 33 | 34 | dc.style.visibility = 35 | dc.style.visibility == "visible" ? "hidden" : "visible"; 36 | syncStorage.innerText = 37 | dc.style.visibility == "visible" 38 | ? "Hide sync storage" 39 | : "Show sync storage"; 40 | } 41 | 42 | function forceReload() { 43 | if (confirm("Are you sure?")) { 44 | browser.tabs.reload({ bypassCache: true }); 45 | location.reload(); 46 | } 47 | } 48 | 49 | clear.addEventListener("click", clearStorage); 50 | cookieMonster.addEventListener("click", takeABite); 51 | syncStorage.addEventListener("click", viewStorage); 52 | hardReload.addEventListener("click", forceReload); 53 | -------------------------------------------------------------------------------- /pages/index.js: -------------------------------------------------------------------------------- 1 | // index.js 2 | // The main entry point for all scripts. 3 | // Loads storage and calls related functions. 4 | // 5 | 6 | const pahe = {}; 7 | const endpoints = { 8 | info: "https://graphql.anilist.co", 9 | api: `https://${location.hostname}/api`, 10 | }; 11 | 12 | const conf = { 13 | settings: { 14 | // info 15 | "anilist-score": false, 16 | "blur-cover": false, 17 | "show-upcoming": false, 18 | 19 | // watch 20 | "episode-bookmark": false, 21 | "season-number": false, 22 | "highest-resolution": false, 23 | "save-episode": false, 24 | "toggle-lights": false, 25 | "direct-links": false, 26 | 27 | // general 28 | "random-anime": false, 29 | "fakesite-ignore": false, 30 | }, 31 | 32 | // saved episodes 33 | saved: [], 34 | }; 35 | 36 | (async () => { 37 | // load storage 38 | const settings = await browser.storage.sync.get("settings"); 39 | for (const o of Object.keys(conf.settings)) { 40 | if ( 41 | Object.keys(settings).length != 0 && 42 | typeof conf.settings[o] == "boolean" 43 | ) { 44 | conf.settings[o] = settings.settings[o]; 45 | } 46 | } 47 | 48 | // load save 49 | const save = await browser.storage.sync.get("saved"); 50 | if (Object.keys(save).length != 0) { 51 | conf.saved = save.saved.slice(); 52 | } 53 | 54 | // execute functions 55 | for (const func of Object.keys(pahe)) { 56 | try { 57 | if (conf.settings[func]) await pahe[func](); 58 | } catch (e) { 59 | console.warn(`[pahe-plus] internal error ${e}`); 60 | } 61 | } 62 | })(); 63 | -------------------------------------------------------------------------------- /pages/watch/lights.js: -------------------------------------------------------------------------------- 1 | // lights.js 2 | // toggle-lights 3 | // 4 | // Button to dim all elements surrounding 5 | // the video player. 6 | // 7 | 8 | const lightsCSS = ` 9 | #lights-overlay { 10 | z-index: 10; 11 | background-color: rgba(0, 0, 0, 0.8); 12 | width: 100vw; 13 | height: 100vh; 14 | 15 | position: fixed; 16 | top: 0; 17 | } 18 | 19 | .player { 20 | z-index: 15 !important; 21 | } 22 | 23 | .prequel, 24 | .sequel { 25 | opacity: 0.3; 26 | } 27 | 28 | #toggle-lights { 29 | z-index: 20 !important; 30 | } 31 | `; 32 | 33 | function toggleLights() { 34 | const overlay = document.getElementById("lights-overlay"); 35 | 36 | // prettier-ignore 37 | if (!overlay) { 38 | document.querySelector(".theatre").insertAdjacentHTML("afterbegin", ` 39 |
40 | 41 |
42 | `); 43 | 44 | this.style.backgroundColor = "yellow"; 45 | return; 46 | } 47 | 48 | this.style.backgroundColor = "#6d6e2b"; 49 | overlay.remove(); 50 | } 51 | 52 | function insertLight() { 53 | const info = document.querySelector(".theatre-info"); 54 | if (!info) return; 55 | 56 | // prettier-ignore 57 | info.insertAdjacentHTML("beforeend", ` 58 | 62 | `); 63 | 64 | document.getElementById("toggle-lights").onclick = toggleLights; 65 | 66 | return true; 67 | } 68 | 69 | function lights() { 70 | if (!insertLight()) { 71 | console.warn("[pahe-plus] could not insert light button!"); 72 | } 73 | } 74 | 75 | pahe["toggle-lights"] = lights; 76 | -------------------------------------------------------------------------------- /settings/js/options.js: -------------------------------------------------------------------------------- 1 | // options.js 2 | // Manages the storage and configuration. 3 | // Keeps storage synced with other tabs/windows. 4 | // 5 | 6 | const conf = document.querySelectorAll(".conf"); 7 | const config = { 8 | settings: { 9 | // info 10 | "anilist-score": false, 11 | "blur-cover": false, 12 | "show-upcoming": false, 13 | 14 | // watch 15 | "episode-bookmark": false, 16 | "season-number": false, 17 | "highest-resolution": false, 18 | "save-episode": false, 19 | "toggle-lights": false, 20 | "direct-links": false, 21 | 22 | // general 23 | "random-anime": false, 24 | "fakesite-ignore": false, 25 | }, 26 | 27 | // saved episodes 28 | saved: [], 29 | }; 30 | 31 | conf.forEach((elm) => { 32 | elm.addEventListener("change", async function () { 33 | config.settings[this.name] = !config.settings[this.name]; 34 | 35 | browser.storage.sync.set(config); 36 | browser.tabs.reload({ bypassCache: true }); 37 | 38 | respond(); 39 | }); 40 | }); 41 | 42 | async function respond() { 43 | const db = await browser.storage.sync.get("settings"); 44 | const save = await browser.storage.sync.get("saved"); 45 | 46 | // load settings 47 | for (const o of Object.keys(config.settings)) { 48 | const stored = JSON.parse(JSON.stringify(db))?.settings; 49 | 50 | // assign to config 51 | config.settings[o] = Object.keys(db).length == 0 ? false : !!stored[o]; 52 | document.querySelector(`input[name="${o}"]`).checked = 53 | config.settings[o]; 54 | } 55 | 56 | // load save 57 | if (Object.keys(save).length != 0) { 58 | config.saved = save.saved.slice(); 59 | } 60 | 61 | initSave(); 62 | 63 | document.getElementById("debug-console").innerHTML = JSON.stringify( 64 | config, 65 | null, 66 | 4, 67 | ); 68 | } 69 | 70 | document.addEventListener("DOMContentLoaded", respond); 71 | -------------------------------------------------------------------------------- /pages/watch/number.js: -------------------------------------------------------------------------------- 1 | // number.js 2 | // season-number 3 | // 4 | // Set the episode number based on season, not series. Example: 5 | // AOT EP 26 -> AOT Season 2, EP 1 6 | // 7 | 8 | function seriesID() { 9 | try { 10 | return location.href.split("/play/")[1].split("/")[0]; 11 | } catch (e) { 12 | console.warn("[pahe-plus]", e); 13 | return false; 14 | } 15 | } 16 | 17 | async function getEpisode(id) { 18 | const req = await fetch( 19 | `${endpoints.api}?m=release&id=${id}&sort=episode_asc&page=1`, 20 | ) 21 | .then((j) => j.json()) 22 | .catch((e) => { 23 | console.warn(`[pahe-plus] could not fetch ${endpoints.api}!`, e); 24 | }); 25 | 26 | if (!req || !req.data) return false; 27 | 28 | return req.data[0].episode; 29 | } 30 | 31 | function thisEpisode() { 32 | try { 33 | return parseInt( 34 | document 35 | .getElementById("episodeMenu") 36 | .innerText.replace("Episode ", ""), 37 | ); 38 | } catch (e) { 39 | console.warn("[pahe-plus]", e); 40 | return false; 41 | } 42 | } 43 | 44 | function addTitle(real) { 45 | const title = document.querySelector(".theatre-info > h1:nth-child(2)"); 46 | 47 | if (!title) return; 48 | 49 | title.insertAdjacentText("beforeend", ` (${real})`); 50 | 51 | return true; 52 | } 53 | 54 | async function realNumber() { 55 | const id = seriesID(); 56 | 57 | if (!id) { 58 | console.warn("[pahe-plus] could not get series id!"); 59 | return; 60 | } 61 | 62 | const ep = await getEpisode(id); 63 | const eep = thisEpisode(); 64 | 65 | if (!ep || typeof eep == "boolean") { 66 | console.warn("[pahe-plus] could not get first episode!"); 67 | return; 68 | } 69 | 70 | if (ep == 1) return; 71 | 72 | if (!addTitle(eep - ep + 1)) { 73 | console.warn("[pahe-plus] failed to add episode!"); 74 | } 75 | } 76 | 77 | pahe["season-number"] = realNumber; 78 | -------------------------------------------------------------------------------- /settings/js/saved.js: -------------------------------------------------------------------------------- 1 | // saved.js 2 | // Manage saved links and update storage. 3 | // 4 | 5 | const saveList = document.querySelector(".saved-items"); 6 | 7 | const clean = (s) => { 8 | return s 9 | .replace(/&/g, "&") 10 | .replace(/ { 15 | return s.length > 30 ? s.slice(0, 30) + "..." : s; 16 | }; 17 | 18 | async function removeSaved() { 19 | config.saved = config.saved.filter( 20 | (i) => i.name != this.parentElement.children[0].title, 21 | ); 22 | 23 | await browser.storage.sync.set({ 24 | saved: config.saved.slice(), 25 | }); 26 | 27 | saveList.innerHTML = null; 28 | browser.tabs.reload({ bypassCache: true }); 29 | respond(); 30 | } 31 | 32 | async function purgeSaved() { 33 | if (confirm("Are you sure?")) { 34 | config.saved = []; 35 | 36 | await browser.storage.sync.set({ 37 | saved: [], 38 | }); 39 | 40 | saveList.innerHTML = null; 41 | browser.tabs.reload({ bypassCache: true }); 42 | respond(); 43 | } 44 | } 45 | 46 | function initSave() { 47 | if (config.saved.length == 0) { 48 | saveList.innerHTML = "

Nothing saved yet...

"; 49 | document.getElementById("purgeSaved").addEventListener("click", () => { 50 | alert("Nothing to purge!"); 51 | }); 52 | 53 | return; 54 | } 55 | 56 | saveList.innerHTML = null; 57 | 58 | for (const obj of config.saved) { 59 | saveList.insertAdjacentHTML( 60 | "afterbegin", 61 | ` 62 |
  • 63 | ${shorten( 64 | clean(obj.name), 65 | )} 66 | 67 |
  • 68 | `, 69 | ); 70 | } 71 | 72 | document.querySelectorAll(".saved-remove").forEach((elm) => { 73 | elm.addEventListener("click", removeSaved); 74 | }); 75 | 76 | document.getElementById("purgeSaved").addEventListener("click", purgeSaved); 77 | } 78 | -------------------------------------------------------------------------------- /style/pages/watch.css: -------------------------------------------------------------------------------- 1 | .player-button { 2 | float: right; 3 | position: relative; 4 | transform: translateY(-50px); 5 | margin-left: 10px; 6 | } 7 | 8 | .pmax { 9 | height: 300px; 10 | } 11 | 12 | #player-bookmark-popout { 13 | position: absolute; 14 | width: 200px; 15 | padding: 10px; 16 | border-radius: 5px; 17 | text-align: center; 18 | background-color: #222; 19 | padding-bottom: 10px; 20 | right: 50%; 21 | transform: translateY(5px); 22 | } 23 | 24 | #player-bookmark-popout a { 25 | color: #d5015b; 26 | font-weight: bolder; 27 | font-size: 1.2em; 28 | } 29 | 30 | #player-bookmark-popout div { 31 | color: #eee; 32 | opacity: 0.8; 33 | font-size: 0.8em; 34 | } 35 | 36 | .player-button-inner { 37 | width: 20px; 38 | height: 20px; 39 | background-color: #d5015b; 40 | border-color: #d5015b; 41 | } 42 | 43 | .player-button-inner:hover { 44 | opacity: 0.9; 45 | } 46 | 47 | #save-episode { 48 | background-color: #fff; 49 | border-color: #fff; 50 | color: transparent !important; 51 | font-size: 0.9em; 52 | } 53 | 54 | #save-episode:hover { 55 | opacity: 0.8; 56 | } 57 | 58 | #save-episode:active { 59 | opacity: 0.3; 60 | } 61 | 62 | .save-active, 63 | .remove-active { 64 | animation-iteration-count: 1; 65 | animation-duration: 0.5s; 66 | position: relative; 67 | } 68 | 69 | .save-active { 70 | animation-name: smoothintro; 71 | } 72 | 73 | .remove-active { 74 | animation-name: smoothoutro; 75 | } 76 | 77 | .direct-link-item { 78 | color: #d5015b; 79 | } 80 | 81 | #pickDownload a:hover .direct-link-item { 82 | color: #fff; 83 | } 84 | 85 | /* prettier-ignore */ 86 | @keyframes smoothintro { 87 | 0% { top: 3px; } 88 | 100% { top: 0px; } 89 | } 90 | 91 | /* prettier-ignore */ 92 | @keyframes smoothoutro { 93 | 0% { top: 3px; } 94 | 100% { top: 0px; } 95 | } 96 | 97 | @media screen and (max-width: 600px) { 98 | .player-button { 99 | transform: none !important; 100 | margin-top: 30px; 101 | } 102 | } 103 | -------------------------------------------------------------------------------- /pages/info/score.js: -------------------------------------------------------------------------------- 1 | // score.js 2 | // anilist-score 3 | // 4 | // Display average score/rating. Uses the 5 | // public anilist API. 6 | // 7 | 8 | function anilistID() { 9 | const id = document.querySelector(".external-links > a:nth-child(2)"); 10 | 11 | if (!id) return false; 12 | if (!id.href.includes("anilist.co")) return false; 13 | 14 | return id.href.split("anilist.co/anime/")[1]; 15 | } 16 | 17 | async function getAnilistScore(id) { 18 | const query = ` 19 | { 20 | Media(id: ${id}) { 21 | averageScore 22 | popularity 23 | } 24 | } 25 | `; 26 | 27 | const req = await fetch(endpoints.info, { 28 | method: "POST", 29 | headers: { 30 | "Content-Type": "application/json", 31 | Accept: "application/json", 32 | }, 33 | 34 | body: JSON.stringify({ query }), 35 | }) 36 | .then((res) => res.json()) 37 | .catch((e) => { 38 | console.warn(`[pahe-plus] could not fetch ${endpoints.info}!`, e); 39 | }); 40 | 41 | if (!req || req.errors) { 42 | return false; 43 | } 44 | 45 | return req?.data?.Media; 46 | } 47 | 48 | function userScores({ averageScore, popularity }) { 49 | const title = document.querySelector(".title-wrapper"); 50 | 51 | title.insertAdjacentHTML( 52 | "beforeend", 53 | ` 54 |

    ${averageScore}% | ${popularity 55 | .toString() 56 | .replace(/\B(?=(\d{3})+(?!\d))/g, ",")} users

    57 | `, 58 | ); 59 | } 60 | 61 | async function score() { 62 | const aniID = anilistID(); 63 | 64 | if (!aniID) { 65 | console.warn("[pahe-plus] could not grab anilist id!"); 66 | return; 67 | } 68 | 69 | const scores = await getAnilistScore(aniID); 70 | 71 | if ( 72 | !scores || 73 | !Number.isInteger(scores.averageScore) || 74 | !Number.isInteger(scores.popularity) 75 | ) { 76 | console.warn("[pahe-plus] error fetching scores!"); 77 | 78 | return; 79 | } 80 | 81 | userScores(scores); 82 | } 83 | 84 | pahe["anilist-score"] = score; 85 | -------------------------------------------------------------------------------- /pages/bookmark/_.js: -------------------------------------------------------------------------------- 1 | // _.js 2 | // _ 3 | // 4 | // Files named _ will always be executed, there is no 5 | // option to disable them. 6 | // 7 | 8 | function replaceError() { 9 | const err = document.querySelector("main.text-center"); 10 | 11 | if (!err) return false; 12 | 13 | err.innerHTML = ` 14 |

    Loading...

    15 |
    16 |
    17 |
    18 |
    19 |
    20 |
    21 | `; 22 | 23 | return true; 24 | } 25 | 26 | async function getAnimeID(id) { 27 | const cid = await fetch(`https://${location.hostname}/a/${id}`).catch( 28 | (e) => { 29 | console.warn("[pahe-plus]", e); 30 | }, 31 | ); 32 | 33 | if (!cid || cid.status != 200 || !cid.url.includes("/anime/")) { 34 | location.href = "/"; 35 | return false; 36 | } 37 | 38 | return cid.url.split("/anime/")[1]; 39 | } 40 | 41 | async function redirect(url) { 42 | let id, json; 43 | 44 | try { 45 | json = JSON.parse(atob(url)); 46 | id = await getAnimeID(json.id); 47 | } catch (e) { 48 | console.warn("[pahe-plus]", e); 49 | location.href = "/"; 50 | 51 | return false; 52 | } 53 | 54 | if (!id) return false; 55 | 56 | const req = await fetch( 57 | `https://${location.hostname}/api?m=release&id=${id}&sort=episode_asc&page=${json.page}`, 58 | ) 59 | .then((j) => j.json()) 60 | .catch((e) => { 61 | console.warn(`[pahe-plus] could not fetch API!`, e); 62 | }); 63 | 64 | if (!req || !req.data) return false; 65 | 66 | const ep = req.data.map((d) => d.episode).indexOf(json.episode); 67 | const name = req.data[ep].session; 68 | 69 | location.href = `/play/${id}/${name}`; 70 | 71 | return true; 72 | } 73 | 74 | (() => { 75 | if (!replaceError()) { 76 | console.warn("[pahe-plus] failed to replace error!"); 77 | return; 78 | } 79 | 80 | const u = location.href.split("/b/"); 81 | 82 | if (!redirect(u[1])) { 83 | console.warn("[pahe-plus] failed to redirect!"); 84 | } 85 | })(); 86 | -------------------------------------------------------------------------------- /pages/general/random.js: -------------------------------------------------------------------------------- 1 | // random.js 2 | // random-anime 3 | // 4 | // Adds a button to the navbar that picks a random 5 | // anime. 6 | // 7 | 8 | async function getAnimeList() { 9 | const req = await fetch(`https://${location.hostname}/anime`) 10 | .then((t) => t.text()) 11 | .catch(() => { 12 | console.warn("[pahe-plus] could not fetch anime list!"); 13 | }); 14 | 15 | if (!req) return; 16 | const parser = new DOMParser(req); 17 | 18 | return [ 19 | ...parser 20 | .parseFromString(req, "text/html") 21 | .querySelectorAll(".tab-content a"), 22 | ].map((a) => a.href); 23 | } 24 | 25 | async function getRandomAnime() { 26 | const list = await getAnimeList(); 27 | 28 | if (!list) { 29 | console.warn("[pahe-plus] could not get anime list!"); 30 | return; 31 | } 32 | 33 | return list[~~(Math.random() * list.length)]; 34 | } 35 | 36 | function randButton() { 37 | const navbar = document.querySelector(".navbar-nav"); 38 | 39 | if (!navbar) return; 40 | 41 | // prettier-ignore 42 | navbar.insertAdjacentHTML("beforeend", ` 43 | 46 | `); 47 | 48 | return true; 49 | } 50 | 51 | function random() { 52 | if (!randButton()) { 53 | console.warn("[pahe-plus] could not create random button!"); 54 | return; 55 | } 56 | 57 | document.querySelector(".nav-link[title=random]").onclick = 58 | async function () { 59 | this.innerHTML = ` 60 |
    61 |
    62 |
    63 |
    64 |
    65 |
    66 | `; 67 | 68 | const url = await getRandomAnime(); 69 | 70 | if (!url) { 71 | console.warn("[pahe-plus] could not get random anime!"); 72 | this.innerHTML = "random"; 73 | 74 | return; 75 | } 76 | 77 | location.href = url; 78 | }; 79 | } 80 | 81 | pahe["random-anime"] = random; 82 | -------------------------------------------------------------------------------- /pages/watch/direct.js: -------------------------------------------------------------------------------- 1 | // direct.js 2 | // direct-links 3 | // 4 | // Skip pahe.win redirect when downloading 5 | // episodes. 6 | // 7 | 8 | function getURLS(str, lower = false) { 9 | const regexp = 10 | /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()'@:%_\+.~#?!&//=]*)/gi; 11 | const bracketsRegexp = /[()]/g; 12 | const urls = str.match(regexp); 13 | 14 | // https://github.com/huckbit/extract-urls 15 | if (urls) { 16 | return lower 17 | ? urls.map((item) => item.toLowerCase().replace(bracketsRegexp, "")) 18 | : urls.map((item) => item.replace(bracketsRegexp, "")); 19 | } 20 | 21 | return []; 22 | } 23 | 24 | async function getDirectDonwload(e) { 25 | e.preventDefault(); 26 | 27 | // Get URL 28 | const dl = e.target.href; 29 | 30 | if (!dl) { 31 | console.warn("[pahe-plus] could not find url."); 32 | return; 33 | } 34 | 35 | const req = await fetch(dl) 36 | .then((t) => t.text()) 37 | .catch(() => { 38 | console.warn(`[pahe-plus] could not fetch ${dl}!`); 39 | }); 40 | 41 | if (!req) return; 42 | 43 | // Find location 44 | try { 45 | const urls = getURLS(req, true); 46 | const dl = urls.filter((n) => n.includes("://kwik.")); 47 | 48 | if (dl.length > 0 && dl[0]) { 49 | window.open(dl[0], "_blank"); 50 | return; 51 | } 52 | 53 | throw new Error("Video not found."); 54 | } catch (e) { 55 | console.warn("[pahe-plus] error parsing direct download."); 56 | console.error(e); 57 | } 58 | } 59 | 60 | function insertDownloads() { 61 | const options = document.querySelectorAll("#pickDownload a"); 62 | 63 | if (!options || !options.length) { 64 | return false; 65 | } 66 | 67 | options.forEach((elm) => { 68 | elm.insertAdjacentHTML( 69 | "beforeend", 70 | ` (Direct) `, 71 | ); 72 | 73 | elm.onclick = getDirectDonwload; 74 | elm.target = ""; 75 | }); 76 | 77 | return true; 78 | } 79 | 80 | function direct() { 81 | if (!insertDownloads()) { 82 | console.warn("[pahe-plus] could not get insert direct download links!"); 83 | } 84 | } 85 | 86 | pahe["direct-links"] = direct; 87 | -------------------------------------------------------------------------------- /pages/watch/saved.js: -------------------------------------------------------------------------------- 1 | // saved.js 2 | // save-episode 3 | // 4 | // Alternative to bookmarks, save episodes into 5 | // extension storage. 6 | // 7 | 8 | const isSaved = (title) => conf.saved.map((n) => n.name).includes(title); 9 | 10 | async function saveItem(name, url) { 11 | conf.saved.push({ 12 | name, 13 | url, 14 | }); 15 | 16 | await browser.storage.sync.set({ 17 | saved: conf.saved.slice(), 18 | }); 19 | } 20 | 21 | async function deleteItem(name) { 22 | conf.saved = conf.saved.filter((i) => i.name != name); 23 | 24 | await browser.storage.sync.set({ 25 | saved: conf.saved.slice(), 26 | }); 27 | } 28 | 29 | async function savedToggle(_this, title, url) { 30 | if (!isSaved(title)) { 31 | await saveItem(title, url); 32 | 33 | // prettier-ignore 34 | _this.style = `mask: url(${browser.runtime.getURL("img/remove.svg")}) no-repeat center;`; 35 | _this.classList.add("save-active"); 36 | _this.classList.remove("remove-active"); 37 | 38 | return; 39 | } 40 | 41 | await deleteItem(title); 42 | _this.classList.remove("save-active"); 43 | _this.classList.add("remove-active"); 44 | 45 | // prettier-ignore 46 | _this.style = `mask: url(${browser.runtime.getURL("img/add.svg")}) no-repeat center;`; 47 | } 48 | 49 | function saveButton(title) { 50 | const info = document.querySelector(".theatre-info"); 51 | const icon = `img/${isSaved(title) ? "remove" : "add"}.svg`; 52 | if (!info) return; 53 | 54 | // prettier-ignore 55 | info.insertAdjacentHTML("beforeend", ` 56 | 60 | `); 61 | 62 | document.getElementById("save-episode").onclick = async function () { 63 | const static = await getStaticIDs(getIDs()); 64 | 65 | if (!static) { 66 | console.warn("[pahe-plus] could not get permalink!"); 67 | return; 68 | } 69 | 70 | const mark = `https://${location.hostname}/b/${buildBookmark( 71 | static.anime_id, 72 | static.episode, 73 | static.page, 74 | )}`; 75 | 76 | await savedToggle(this, title, mark); 77 | }; 78 | 79 | return true; 80 | } 81 | 82 | function saveEpisode() { 83 | const title = document.title.replace(" :: animepahe", ""); 84 | 85 | if (!saveButton(title)) { 86 | console.warn("[pahe-plus] could not insert save button!"); 87 | } 88 | } 89 | 90 | pahe["save-episode"] = saveEpisode; 91 | -------------------------------------------------------------------------------- /pages/info/episode.js: -------------------------------------------------------------------------------- 1 | // episode.js 2 | // show-upcoming 3 | // 4 | // Show upcoming episodes for airing shows. Uses the 5 | // public anilist API. 6 | // 7 | 8 | function anilistID() { 9 | const id = document.querySelector(".external-links > a:nth-child(2)"); 10 | 11 | if (!id) return false; 12 | if (!id.href.includes("anilist.co")) return false; 13 | 14 | return id.href.split("anilist.co/anime/")[1]; 15 | } 16 | 17 | function sdhms(sec) { 18 | const seconds = parseInt(sec); 19 | 20 | return ( 21 | `${Math.floor(seconds / (3600 * 24))}d ` + 22 | `${Math.floor((seconds % (3600 * 24)) / 3600)}h ` + 23 | `${Math.floor((seconds % 3600) / 60)}m` 24 | ); 25 | } 26 | 27 | async function getAiringStatus(id) { 28 | const query = ` 29 | { 30 | AiringSchedule(mediaId: ${id}, notYetAired: true) { 31 | airingAt, 32 | timeUntilAiring, 33 | episode 34 | } 35 | } 36 | `; 37 | 38 | const req = await fetch(endpoints.info, { 39 | method: "POST", 40 | headers: { 41 | "Content-Type": "application/json", 42 | Accept: "application/json", 43 | }, 44 | 45 | body: JSON.stringify({ query }), 46 | }) 47 | .then((res) => res.json()) 48 | .catch((e) => { 49 | console.warn(`[pahe-plus] could not fetch ${endpoints.info}!`, e); 50 | }); 51 | 52 | if (!req || req.errors) { 53 | return false; 54 | } 55 | 56 | return req?.data?.AiringSchedule; 57 | } 58 | 59 | function display(stat) { 60 | const info = document.querySelector(".anime-info"); 61 | const exactDate = new Date(0); 62 | 63 | exactDate.setUTCSeconds(stat.airingAt); 64 | 65 | // prettier-ignore 66 | info.insertAdjacentHTML("afterbegin", ` 67 |

    68 | Next Episode: 69 | ${exactDate.toISOString().split("T")[0]} | ${sdhms(stat.timeUntilAiring)} 70 |

    71 | `); 72 | } 73 | 74 | async function episode() { 75 | const aniID = anilistID(); 76 | 77 | if (!aniID) { 78 | console.warn("[pahe-plus] could not grab anilist id!"); 79 | return; 80 | } 81 | 82 | const status = await getAiringStatus(aniID); 83 | 84 | if ( 85 | !status || 86 | !Number.isInteger(status.airingAt) || 87 | !Number.isInteger(status.timeUntilAiring) || 88 | !Number.isInteger(status.episode) 89 | ) { 90 | console.warn( 91 | "[pahe-plus] error fetching airing status, anime is likely finished airing.", 92 | ); 93 | 94 | return; 95 | } 96 | 97 | display(status); 98 | } 99 | 100 | pahe["show-upcoming"] = episode; 101 | -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Additional features for animepahe.", 3 | "manifest_version": 2, 4 | "name": "Animepahe Plus", 5 | "version": "1.2.4", 6 | "homepage_url": "https://github.com/Cyan903/Animepahe-plus", 7 | "icons": { 8 | "48": "icons/dark-48.png" 9 | }, 10 | 11 | "permissions": [ 12 | "activeTab", 13 | "storage", 14 | "*://graphql.anilist.co/*", 15 | "*://pahe.win/*" 16 | ], 17 | 18 | "browser_action": { 19 | "default_icon": "icons/dark-32.png", 20 | "default_title": "Animepahe+", 21 | "default_popup": "settings/conf.html" 22 | }, 23 | 24 | "web_accessible_resources": [ 25 | "style/pages/*.css", 26 | "style/main.css", 27 | "img/*.svg", 28 | "img/*.png" 29 | ], 30 | 31 | "content_scripts": [ 32 | { 33 | "matches": [ 34 | "*://*.animepahe.com/*", 35 | "*://*.animepahe.org/*", 36 | "*://*.animepahe.si/*", 37 | "*://*.animepahe.ru/*" 38 | ], 39 | 40 | "run_at": "document_end", 41 | "css": ["style/main.css"], 42 | "js": [ 43 | "pages/index.js", 44 | "pages/browser.js", 45 | "pages/general/random.js", 46 | "pages/general/fakesite.js" 47 | ] 48 | }, 49 | 50 | { 51 | "matches": [ 52 | "*://*.animepahe.com/", 53 | "*://*.animepahe.org/", 54 | "*://*.animepahe.si/*", 55 | "*://*.animepahe.ru/" 56 | ], 57 | 58 | "run_at": "document_end", 59 | "js": ["pages/info/blur.js"] 60 | }, 61 | 62 | { 63 | "matches": [ 64 | "*://*.animepahe.com/anime/*", 65 | "*://*.animepahe.org/anime/*", 66 | "*://*.animepahe.si/anime/*", 67 | "*://*.animepahe.ru/anime/*" 68 | ], 69 | 70 | "run_at": "document_end", 71 | "css": ["style/pages/info.css"], 72 | "js": [ 73 | "pages/info/blur.js", 74 | "pages/info/episode.js", 75 | "pages/info/score.js" 76 | ] 77 | }, 78 | 79 | { 80 | "matches": [ 81 | "*://*.animepahe.com/play/*", 82 | "*://*.animepahe.org/play/*", 83 | "*://*.animepahe.si/play/*", 84 | "*://*.animepahe.ru/play/*" 85 | ], 86 | 87 | "run_at": "document_end", 88 | "css": ["style/pages/watch.css"], 89 | "js": [ 90 | "pages/watch/number.js", 91 | "pages/watch/bookmark.js", 92 | "pages/watch/resolution.js", 93 | "pages/watch/lights.js", 94 | "pages/watch/saved.js", 95 | "pages/watch/direct.js" 96 | ] 97 | }, 98 | 99 | { 100 | "matches": [ 101 | "*://*.animepahe.com/b/*", 102 | "*://*.animepahe.org/b/*", 103 | "*://*.animepahe.si/b/*", 104 | "*://*.animepahe.ru/b/*" 105 | ], 106 | 107 | "run_at": "document_end", 108 | "js": ["pages/bookmark/_.js"] 109 | } 110 | ], 111 | 112 | "options_ui": { 113 | "page": "settings/conf.html", 114 | "open_in_tab": true 115 | }, 116 | 117 | "browser_specific_settings": { 118 | "gecko": { 119 | "id": "pahe-plus@hwk", 120 | "strict_min_version": "58.0" 121 | } 122 | } 123 | } 124 | -------------------------------------------------------------------------------- /pages/watch/bookmark.js: -------------------------------------------------------------------------------- 1 | // bookmark.js 2 | // episode-bookmark 3 | // 4 | // Custom bookmarks for episodes. Bookmarks are permanent and will always 5 | // bring you back to the epsiode you saved. 6 | // 7 | 8 | function getIDs() { 9 | try { 10 | const urls = location.href.split("/play/")[1].split("/"); 11 | return { 12 | series: urls[0], 13 | episode: urls[1], 14 | }; 15 | } catch (e) { 16 | console.warn("[pahe-plus]", e); 17 | return false; 18 | } 19 | } 20 | 21 | function buildBookmark(id, episode, page) { 22 | return btoa( 23 | JSON.stringify({ 24 | id, 25 | episode, 26 | page, 27 | }), 28 | ); 29 | } 30 | 31 | async function getStaticIDs({ series, episode }) { 32 | let page = 1; 33 | 34 | do { 35 | const req = await fetch( 36 | `${endpoints.api}?m=release&id=${series}&sort=episode_asc&page=${page}`, 37 | ) 38 | .then((j) => j.json()) 39 | .catch((e) => { 40 | console.warn( 41 | `[pahe-plus] could not fetch ${endpoints.api}!`, 42 | e, 43 | ); 44 | }); 45 | 46 | if (!req || page > req.last_page || !req.data) { 47 | return false; 48 | } 49 | 50 | // find episode 51 | const session = req.data.map((d) => d.session); 52 | 53 | if (session.includes(episode)) { 54 | return { ...req.data[session.indexOf(episode)], page }; 55 | } 56 | } while (page++); 57 | } 58 | 59 | async function promptBookmark(ids) { 60 | const static = await getStaticIDs(ids); 61 | 62 | if (!static) { 63 | console.warn("[pahe-plus] failed to get static ids!"); 64 | return; 65 | } 66 | 67 | const bookmarkHref = document.getElementById("bookmark-href"); 68 | 69 | bookmarkHref.innerHTML = document.title.replace(" :: animepahe", ""); 70 | bookmarkHref.href = `/b/${buildBookmark( 71 | static.anime_id, 72 | static.episode, 73 | static.page, 74 | )}`; 75 | 76 | return true; 77 | } 78 | 79 | function insertBookmark() { 80 | const info = document.querySelector(".theatre-info"); 81 | const ids = getIDs(); 82 | 83 | if (!info || !ids) return; 84 | 85 | // prettier-ignore 86 | info.insertAdjacentHTML("beforeend", ` 87 |
    88 | 89 | 93 |
    94 | `); 95 | 96 | document.getElementById("ppahe-bookmark").onclick = async function () { 97 | const popout = document.getElementById("player-bookmark-popout"); 98 | 99 | this.style.opacity = "0.5"; 100 | this.disabled = true; 101 | 102 | popout.style.display = 103 | popout.style.display == "none" ? "block" : "none"; 104 | document.getElementById("bookmark-how").innerHTML = "Loading..."; 105 | document.getElementById("bookmark-href").innerHTML = ` 106 |
    107 |
    108 |
    109 |
    110 |
    111 |
    112 | `; 113 | 114 | await promptBookmark(ids); 115 | 116 | document.getElementById("bookmark-how").innerHTML = 117 | "Drag to bookmark toolbar"; 118 | this.style.opacity = "1"; 119 | this.disabled = false; 120 | }; 121 | 122 | return true; 123 | } 124 | 125 | function bookmark() { 126 | const ids = getIDs(); 127 | 128 | if (!ids) { 129 | console.warn("[pahe-plus] could not get anime id!"); 130 | return; 131 | } 132 | 133 | // don't insert if the url is invalid 134 | if (!insertBookmark()) { 135 | console.warn( 136 | "[pahe-plus] could not find proper elements... possible 404?", 137 | ); 138 | } 139 | } 140 | 141 | pahe["episode-bookmark"] = bookmark; 142 | -------------------------------------------------------------------------------- /settings/conf.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
    21 |
    General
    22 |
    23 |
    24 | 25 | 26 |
    27 |
    28 | 33 | 34 |
    35 |
    36 | 37 |
    Info
    38 |
    39 |
    40 | 41 | 42 |
    43 |
    44 | 45 | 46 |
    47 |
    48 | 49 | 50 |
    51 |
    52 | 53 |
    Watching
    54 |
    55 |
    56 | 61 | 62 |
    63 |
    64 | 65 | 66 |
    67 |
    68 | 73 | 74 |
    75 |
    76 | 77 | 78 |
    79 |
    80 | 81 | 82 |
    83 |
    84 | 85 | 86 |
    87 |
    88 |
    89 | 90 | 95 | 96 | 108 | 109 |
    110 | 113 | 114 | 115 |
    116 | 117 | 118 | github.com/Cyan903/Animepahe-plus 119 | 120 | 121 | 122 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | devDependencies: 8 | prettier: 9 | specifier: ^3.2.5 10 | version: 3.2.5 11 | web-ext: 12 | specifier: ^7.11.0 13 | version: 7.11.0 14 | 15 | packages: 16 | 17 | /@aashutoshrathi/word-wrap@1.2.6: 18 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} 19 | engines: {node: '>=0.10.0'} 20 | dev: true 21 | 22 | /@babel/code-frame@7.24.2: 23 | resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} 24 | engines: {node: '>=6.9.0'} 25 | dependencies: 26 | '@babel/highlight': 7.24.2 27 | picocolors: 1.0.0 28 | dev: true 29 | 30 | /@babel/helper-validator-identifier@7.22.20: 31 | resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} 32 | engines: {node: '>=6.9.0'} 33 | dev: true 34 | 35 | /@babel/highlight@7.24.2: 36 | resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} 37 | engines: {node: '>=6.9.0'} 38 | dependencies: 39 | '@babel/helper-validator-identifier': 7.22.20 40 | chalk: 2.4.2 41 | js-tokens: 4.0.0 42 | picocolors: 1.0.0 43 | dev: true 44 | 45 | /@babel/runtime@7.21.0: 46 | resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} 47 | engines: {node: '>=6.9.0'} 48 | dependencies: 49 | regenerator-runtime: 0.13.11 50 | dev: true 51 | 52 | /@devicefarmer/adbkit-logcat@2.1.3: 53 | resolution: {integrity: sha512-yeaGFjNBc/6+svbDeul1tNHtNChw6h8pSHAt5D+JsedUrMTN7tla7B15WLDyekxsuS2XlZHRxpuC6m92wiwCNw==} 54 | engines: {node: '>= 4'} 55 | dev: true 56 | 57 | /@devicefarmer/adbkit-monkey@1.2.1: 58 | resolution: {integrity: sha512-ZzZY/b66W2Jd6NHbAhLyDWOEIBWC11VizGFk7Wx7M61JZRz7HR9Cq5P+65RKWUU7u6wgsE8Lmh9nE4Mz+U2eTg==} 59 | engines: {node: '>= 0.10.4'} 60 | dev: true 61 | 62 | /@devicefarmer/adbkit@3.2.3: 63 | resolution: {integrity: sha512-wK9rVrabs4QU0oK8Jnwi+HRBEm+s1x/o63kgthUe0y7K1bfcYmgLuQf41/adsj/5enddlSxzkJavl2EwOu+r1g==} 64 | engines: {node: '>= 0.10.4'} 65 | hasBin: true 66 | dependencies: 67 | '@devicefarmer/adbkit-logcat': 2.1.3 68 | '@devicefarmer/adbkit-monkey': 1.2.1 69 | bluebird: 3.7.2 70 | commander: 9.5.0 71 | debug: 4.3.4 72 | node-forge: 1.3.1 73 | split: 1.0.1 74 | transitivePeerDependencies: 75 | - supports-color 76 | dev: true 77 | 78 | /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): 79 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 80 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 81 | peerDependencies: 82 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 83 | dependencies: 84 | eslint: 8.56.0 85 | eslint-visitor-keys: 3.4.3 86 | dev: true 87 | 88 | /@eslint-community/regexpp@4.10.0: 89 | resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} 90 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 91 | dev: true 92 | 93 | /@eslint/eslintrc@2.1.4: 94 | resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} 95 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 96 | dependencies: 97 | ajv: 6.12.6 98 | debug: 4.3.4 99 | espree: 9.6.1 100 | globals: 13.24.0 101 | ignore: 5.3.1 102 | import-fresh: 3.3.0 103 | js-yaml: 4.1.0 104 | minimatch: 3.1.2 105 | strip-json-comments: 3.1.1 106 | transitivePeerDependencies: 107 | - supports-color 108 | dev: true 109 | 110 | /@eslint/js@8.56.0: 111 | resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} 112 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 113 | dev: true 114 | 115 | /@fluent/syntax@0.19.0: 116 | resolution: {integrity: sha512-5D2qVpZrgpjtqU4eNOcWGp1gnUCgjfM+vKGE2y03kKN6z5EBhtx0qdRFbg8QuNNj8wXNoX93KJoYb+NqoxswmQ==} 117 | engines: {node: '>=14.0.0', npm: '>=7.0.0'} 118 | dev: true 119 | 120 | /@humanwhocodes/config-array@0.11.14: 121 | resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} 122 | engines: {node: '>=10.10.0'} 123 | dependencies: 124 | '@humanwhocodes/object-schema': 2.0.2 125 | debug: 4.3.4 126 | minimatch: 3.1.2 127 | transitivePeerDependencies: 128 | - supports-color 129 | dev: true 130 | 131 | /@humanwhocodes/module-importer@1.0.1: 132 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 133 | engines: {node: '>=12.22'} 134 | dev: true 135 | 136 | /@humanwhocodes/object-schema@2.0.2: 137 | resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} 138 | dev: true 139 | 140 | /@isaacs/cliui@8.0.2: 141 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 142 | engines: {node: '>=12'} 143 | dependencies: 144 | string-width: 5.1.2 145 | string-width-cjs: /string-width@4.2.3 146 | strip-ansi: 7.1.0 147 | strip-ansi-cjs: /strip-ansi@6.0.1 148 | wrap-ansi: 8.1.0 149 | wrap-ansi-cjs: /wrap-ansi@7.0.0 150 | dev: true 151 | 152 | /@mdn/browser-compat-data@5.5.7: 153 | resolution: {integrity: sha512-DoHTZ/TjtNfUu9eiqJd+x3IcCQrhS+yOYU436TKUnlE36jZwNbK535D1CmTsSYdi/UcdCWNm5KRQZ9g1tlZCPw==} 154 | dev: true 155 | 156 | /@nodelib/fs.scandir@2.1.5: 157 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 158 | engines: {node: '>= 8'} 159 | dependencies: 160 | '@nodelib/fs.stat': 2.0.5 161 | run-parallel: 1.2.0 162 | dev: true 163 | 164 | /@nodelib/fs.stat@2.0.5: 165 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 166 | engines: {node: '>= 8'} 167 | dev: true 168 | 169 | /@nodelib/fs.walk@1.2.8: 170 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 171 | engines: {node: '>= 8'} 172 | dependencies: 173 | '@nodelib/fs.scandir': 2.1.5 174 | fastq: 1.17.1 175 | dev: true 176 | 177 | /@pkgjs/parseargs@0.11.0: 178 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 179 | engines: {node: '>=14'} 180 | requiresBuild: true 181 | dev: true 182 | optional: true 183 | 184 | /@pnpm/config.env-replace@1.1.0: 185 | resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} 186 | engines: {node: '>=12.22.0'} 187 | dev: true 188 | 189 | /@pnpm/network.ca-file@1.0.2: 190 | resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} 191 | engines: {node: '>=12.22.0'} 192 | dependencies: 193 | graceful-fs: 4.2.10 194 | dev: true 195 | 196 | /@pnpm/npm-conf@2.2.2: 197 | resolution: {integrity: sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==} 198 | engines: {node: '>=12'} 199 | dependencies: 200 | '@pnpm/config.env-replace': 1.1.0 201 | '@pnpm/network.ca-file': 1.0.2 202 | config-chain: 1.1.13 203 | dev: true 204 | 205 | /@sindresorhus/is@5.6.0: 206 | resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} 207 | engines: {node: '>=14.16'} 208 | dev: true 209 | 210 | /@szmarczak/http-timer@5.0.1: 211 | resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} 212 | engines: {node: '>=14.16'} 213 | dependencies: 214 | defer-to-connect: 2.0.1 215 | dev: true 216 | 217 | /@types/http-cache-semantics@4.0.4: 218 | resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} 219 | dev: true 220 | 221 | /@types/minimatch@3.0.5: 222 | resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} 223 | dev: true 224 | 225 | /@types/node@20.11.30: 226 | resolution: {integrity: sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==} 227 | dependencies: 228 | undici-types: 5.26.5 229 | dev: true 230 | 231 | /@types/yauzl@2.10.3: 232 | resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} 233 | dependencies: 234 | '@types/node': 20.11.30 235 | dev: true 236 | 237 | /@ungap/structured-clone@1.2.0: 238 | resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} 239 | dev: true 240 | 241 | /abort-controller@3.0.0: 242 | resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} 243 | engines: {node: '>=6.5'} 244 | dependencies: 245 | event-target-shim: 5.0.1 246 | dev: true 247 | 248 | /acorn-jsx@5.3.2(acorn@8.11.3): 249 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 250 | peerDependencies: 251 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 252 | dependencies: 253 | acorn: 8.11.3 254 | dev: true 255 | 256 | /acorn@8.11.3: 257 | resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} 258 | engines: {node: '>=0.4.0'} 259 | hasBin: true 260 | dev: true 261 | 262 | /addons-linter@6.21.0(node-fetch@3.3.1): 263 | resolution: {integrity: sha512-4GBn14BR16FZE7dog6uz+1HO6V3B+mAVxmbwxRhed2y5eyrwIW832TmEpku+5A5bbovBZ4gilXEtBsl6A1AMmg==} 264 | engines: {node: '>=16.0.0'} 265 | hasBin: true 266 | dependencies: 267 | '@fluent/syntax': 0.19.0 268 | '@mdn/browser-compat-data': 5.5.7 269 | addons-moz-compare: 1.3.0 270 | addons-scanner-utils: 9.9.0(node-fetch@3.3.1) 271 | ajv: 8.12.0 272 | chalk: 4.1.2 273 | cheerio: 1.0.0-rc.12 274 | columnify: 1.6.0 275 | common-tags: 1.8.2 276 | deepmerge: 4.3.1 277 | eslint: 8.56.0 278 | eslint-plugin-no-unsanitized: 4.0.2(eslint@8.56.0) 279 | eslint-visitor-keys: 3.4.3 280 | espree: 9.6.1 281 | esprima: 4.0.1 282 | fast-json-patch: 3.1.1 283 | glob: 10.3.10 284 | image-size: 1.1.1 285 | is-mergeable-object: 1.1.1 286 | jed: 1.1.1 287 | json-merge-patch: 1.0.2 288 | os-locale: 5.0.0 289 | pino: 8.17.2 290 | postcss: 8.4.33 291 | relaxed-json: 1.0.3 292 | semver: 7.5.4 293 | sha.js: 2.4.11 294 | source-map-support: 0.5.21 295 | tosource: 1.0.0 296 | upath: 2.0.1 297 | yargs: 17.7.2 298 | yauzl: 2.10.0 299 | transitivePeerDependencies: 300 | - body-parser 301 | - express 302 | - node-fetch 303 | - safe-compare 304 | - supports-color 305 | dev: true 306 | 307 | /addons-moz-compare@1.3.0: 308 | resolution: {integrity: sha512-/rXpQeaY0nOKhNx00pmZXdk5Mu+KhVlL3/pSBuAYwrxRrNiTvI/9xfQI8Lmm7DMMl+PDhtfAHY/0ibTpdeoQQQ==} 309 | dev: true 310 | 311 | /addons-scanner-utils@9.9.0(node-fetch@3.3.1): 312 | resolution: {integrity: sha512-YDP10U3sEZMuIgnjXMiAYgUU64jTbxmhpUXMlhi1nKO4Etz+ctGWoTUst7IQRoLWaY9y2r1KZDG3jALxLA1n7Q==} 313 | peerDependencies: 314 | body-parser: 1.20.2 315 | express: 4.18.2 316 | node-fetch: 2.6.11 317 | safe-compare: 1.1.4 318 | peerDependenciesMeta: 319 | body-parser: 320 | optional: true 321 | express: 322 | optional: true 323 | node-fetch: 324 | optional: true 325 | safe-compare: 326 | optional: true 327 | dependencies: 328 | '@types/yauzl': 2.10.3 329 | common-tags: 1.8.2 330 | first-chunk-stream: 3.0.0 331 | node-fetch: 3.3.1 332 | strip-bom-stream: 4.0.0 333 | upath: 2.0.1 334 | yauzl: 2.10.0 335 | dev: true 336 | 337 | /adm-zip@0.5.12: 338 | resolution: {integrity: sha512-6TVU49mK6KZb4qG6xWaaM4C7sA/sgUMLy/JYMOzkcp3BvVLpW0fXDFQiIzAuxFCt/2+xD7fNIiPFAoLZPhVNLQ==} 339 | engines: {node: '>=6.0'} 340 | dev: true 341 | 342 | /ajv@6.12.6: 343 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 344 | dependencies: 345 | fast-deep-equal: 3.1.3 346 | fast-json-stable-stringify: 2.1.0 347 | json-schema-traverse: 0.4.1 348 | uri-js: 4.4.1 349 | dev: true 350 | 351 | /ajv@8.12.0: 352 | resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} 353 | dependencies: 354 | fast-deep-equal: 3.1.3 355 | json-schema-traverse: 1.0.0 356 | require-from-string: 2.0.2 357 | uri-js: 4.4.1 358 | dev: true 359 | 360 | /ansi-align@3.0.1: 361 | resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} 362 | dependencies: 363 | string-width: 4.2.3 364 | dev: true 365 | 366 | /ansi-regex@5.0.1: 367 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 368 | engines: {node: '>=8'} 369 | dev: true 370 | 371 | /ansi-regex@6.0.1: 372 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 373 | engines: {node: '>=12'} 374 | dev: true 375 | 376 | /ansi-styles@3.2.1: 377 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 378 | engines: {node: '>=4'} 379 | dependencies: 380 | color-convert: 1.9.3 381 | dev: true 382 | 383 | /ansi-styles@4.3.0: 384 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 385 | engines: {node: '>=8'} 386 | dependencies: 387 | color-convert: 2.0.1 388 | dev: true 389 | 390 | /ansi-styles@6.2.1: 391 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 392 | engines: {node: '>=12'} 393 | dev: true 394 | 395 | /any-promise@1.3.0: 396 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 397 | dev: true 398 | 399 | /argparse@2.0.1: 400 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 401 | dev: true 402 | 403 | /array-differ@4.0.0: 404 | resolution: {integrity: sha512-Q6VPTLMsmXZ47ENG3V+wQyZS1ZxXMxFyYzA+Z/GMrJ6yIutAIEf9wTyroTzmGjNfox9/h3GdGBCVh43GVFx4Uw==} 405 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 406 | dev: true 407 | 408 | /array-union@3.0.1: 409 | resolution: {integrity: sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==} 410 | engines: {node: '>=12'} 411 | dev: true 412 | 413 | /asn1@0.2.6: 414 | resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} 415 | dependencies: 416 | safer-buffer: 2.1.2 417 | dev: true 418 | 419 | /assert-plus@1.0.0: 420 | resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} 421 | engines: {node: '>=0.8'} 422 | dev: true 423 | 424 | /async@3.2.5: 425 | resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} 426 | dev: true 427 | 428 | /asynckit@0.4.0: 429 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 430 | dev: true 431 | 432 | /at-least-node@1.0.0: 433 | resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} 434 | engines: {node: '>= 4.0.0'} 435 | dev: true 436 | 437 | /atomic-sleep@1.0.0: 438 | resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} 439 | engines: {node: '>=8.0.0'} 440 | dev: true 441 | 442 | /aws-sign2@0.7.0: 443 | resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} 444 | dev: true 445 | 446 | /aws4@1.12.0: 447 | resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} 448 | dev: true 449 | 450 | /balanced-match@1.0.2: 451 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 452 | dev: true 453 | 454 | /base64-js@1.5.1: 455 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 456 | dev: true 457 | 458 | /bcrypt-pbkdf@1.0.2: 459 | resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} 460 | dependencies: 461 | tweetnacl: 0.14.5 462 | dev: true 463 | 464 | /bluebird@3.7.2: 465 | resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} 466 | dev: true 467 | 468 | /boolbase@1.0.0: 469 | resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} 470 | dev: true 471 | 472 | /boxen@7.1.1: 473 | resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} 474 | engines: {node: '>=14.16'} 475 | dependencies: 476 | ansi-align: 3.0.1 477 | camelcase: 7.0.1 478 | chalk: 5.3.0 479 | cli-boxes: 3.0.0 480 | string-width: 5.1.2 481 | type-fest: 2.19.0 482 | widest-line: 4.0.1 483 | wrap-ansi: 8.1.0 484 | dev: true 485 | 486 | /brace-expansion@1.1.11: 487 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 488 | dependencies: 489 | balanced-match: 1.0.2 490 | concat-map: 0.0.1 491 | dev: true 492 | 493 | /brace-expansion@2.0.1: 494 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 495 | dependencies: 496 | balanced-match: 1.0.2 497 | dev: true 498 | 499 | /buffer-crc32@0.2.13: 500 | resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} 501 | dev: true 502 | 503 | /buffer-equal-constant-time@1.0.1: 504 | resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} 505 | dev: true 506 | 507 | /buffer-from@1.1.2: 508 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 509 | dev: true 510 | 511 | /buffer@6.0.3: 512 | resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} 513 | dependencies: 514 | base64-js: 1.5.1 515 | ieee754: 1.2.1 516 | dev: true 517 | 518 | /bunyan@1.8.15: 519 | resolution: {integrity: sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig==} 520 | engines: {'0': node >=0.10.0} 521 | hasBin: true 522 | optionalDependencies: 523 | dtrace-provider: 0.8.8 524 | moment: 2.30.1 525 | mv: 2.1.1 526 | safe-json-stringify: 1.2.0 527 | dev: true 528 | 529 | /cacheable-lookup@7.0.0: 530 | resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} 531 | engines: {node: '>=14.16'} 532 | dev: true 533 | 534 | /cacheable-request@10.2.14: 535 | resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} 536 | engines: {node: '>=14.16'} 537 | dependencies: 538 | '@types/http-cache-semantics': 4.0.4 539 | get-stream: 6.0.1 540 | http-cache-semantics: 4.1.1 541 | keyv: 4.5.4 542 | mimic-response: 4.0.0 543 | normalize-url: 8.0.1 544 | responselike: 3.0.0 545 | dev: true 546 | 547 | /callsites@3.1.0: 548 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 549 | engines: {node: '>=6'} 550 | dev: true 551 | 552 | /camelcase@7.0.1: 553 | resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} 554 | engines: {node: '>=14.16'} 555 | dev: true 556 | 557 | /caseless@0.12.0: 558 | resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} 559 | dev: true 560 | 561 | /chalk@2.4.2: 562 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 563 | engines: {node: '>=4'} 564 | dependencies: 565 | ansi-styles: 3.2.1 566 | escape-string-regexp: 1.0.5 567 | supports-color: 5.5.0 568 | dev: true 569 | 570 | /chalk@4.1.2: 571 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 572 | engines: {node: '>=10'} 573 | dependencies: 574 | ansi-styles: 4.3.0 575 | supports-color: 7.2.0 576 | dev: true 577 | 578 | /chalk@5.3.0: 579 | resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} 580 | engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 581 | dev: true 582 | 583 | /cheerio-select@2.1.0: 584 | resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} 585 | dependencies: 586 | boolbase: 1.0.0 587 | css-select: 5.1.0 588 | css-what: 6.1.0 589 | domelementtype: 2.3.0 590 | domhandler: 5.0.3 591 | domutils: 3.1.0 592 | dev: true 593 | 594 | /cheerio@1.0.0-rc.12: 595 | resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} 596 | engines: {node: '>= 6'} 597 | dependencies: 598 | cheerio-select: 2.1.0 599 | dom-serializer: 2.0.0 600 | domhandler: 5.0.3 601 | domutils: 3.1.0 602 | htmlparser2: 8.0.2 603 | parse5: 7.1.2 604 | parse5-htmlparser2-tree-adapter: 7.0.0 605 | dev: true 606 | 607 | /chrome-launcher@0.15.1: 608 | resolution: {integrity: sha512-UugC8u59/w2AyX5sHLZUHoxBAiSiunUhZa3zZwMH6zPVis0C3dDKiRWyUGIo14tTbZHGVviWxv3PQWZ7taZ4fg==} 609 | engines: {node: '>=12.13.0'} 610 | hasBin: true 611 | dependencies: 612 | '@types/node': 20.11.30 613 | escape-string-regexp: 4.0.0 614 | is-wsl: 2.2.0 615 | lighthouse-logger: 1.4.2 616 | transitivePeerDependencies: 617 | - supports-color 618 | dev: true 619 | 620 | /ci-info@3.9.0: 621 | resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} 622 | engines: {node: '>=8'} 623 | dev: true 624 | 625 | /cli-boxes@3.0.0: 626 | resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} 627 | engines: {node: '>=10'} 628 | dev: true 629 | 630 | /cliui@8.0.1: 631 | resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} 632 | engines: {node: '>=12'} 633 | dependencies: 634 | string-width: 4.2.3 635 | strip-ansi: 6.0.1 636 | wrap-ansi: 7.0.0 637 | dev: true 638 | 639 | /clone@1.0.4: 640 | resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} 641 | engines: {node: '>=0.8'} 642 | dev: true 643 | 644 | /color-convert@1.9.3: 645 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 646 | dependencies: 647 | color-name: 1.1.3 648 | dev: true 649 | 650 | /color-convert@2.0.1: 651 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 652 | engines: {node: '>=7.0.0'} 653 | dependencies: 654 | color-name: 1.1.4 655 | dev: true 656 | 657 | /color-name@1.1.3: 658 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 659 | dev: true 660 | 661 | /color-name@1.1.4: 662 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 663 | dev: true 664 | 665 | /columnify@1.6.0: 666 | resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==} 667 | engines: {node: '>=8.0.0'} 668 | dependencies: 669 | strip-ansi: 6.0.1 670 | wcwidth: 1.0.1 671 | dev: true 672 | 673 | /combined-stream@1.0.8: 674 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 675 | engines: {node: '>= 0.8'} 676 | dependencies: 677 | delayed-stream: 1.0.0 678 | dev: true 679 | 680 | /commander@2.20.3: 681 | resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} 682 | dev: true 683 | 684 | /commander@2.9.0: 685 | resolution: {integrity: sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==} 686 | engines: {node: '>= 0.6.x'} 687 | dependencies: 688 | graceful-readlink: 1.0.1 689 | dev: true 690 | 691 | /commander@9.5.0: 692 | resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} 693 | engines: {node: ^12.20.0 || >=14} 694 | dev: true 695 | 696 | /common-tags@1.8.2: 697 | resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} 698 | engines: {node: '>=4.0.0'} 699 | dev: true 700 | 701 | /concat-map@0.0.1: 702 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 703 | dev: true 704 | 705 | /concat-stream@1.6.2: 706 | resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} 707 | engines: {'0': node >= 0.8} 708 | dependencies: 709 | buffer-from: 1.1.2 710 | inherits: 2.0.4 711 | readable-stream: 2.3.8 712 | typedarray: 0.0.6 713 | dev: true 714 | 715 | /config-chain@1.1.13: 716 | resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} 717 | dependencies: 718 | ini: 1.3.8 719 | proto-list: 1.2.4 720 | dev: true 721 | 722 | /configstore@6.0.0: 723 | resolution: {integrity: sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==} 724 | engines: {node: '>=12'} 725 | dependencies: 726 | dot-prop: 6.0.1 727 | graceful-fs: 4.2.11 728 | unique-string: 3.0.0 729 | write-file-atomic: 3.0.3 730 | xdg-basedir: 5.1.0 731 | dev: true 732 | 733 | /core-js@3.29.0: 734 | resolution: {integrity: sha512-VG23vuEisJNkGl6XQmFJd3rEG/so/CNatqeE+7uZAwTSwFeB/qaO0be8xZYUNWprJ/GIwL8aMt9cj1kvbpTZhg==} 735 | requiresBuild: true 736 | dev: true 737 | 738 | /core-util-is@1.0.2: 739 | resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} 740 | dev: true 741 | 742 | /core-util-is@1.0.3: 743 | resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} 744 | dev: true 745 | 746 | /cross-spawn@7.0.3: 747 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 748 | engines: {node: '>= 8'} 749 | dependencies: 750 | path-key: 3.1.1 751 | shebang-command: 2.0.0 752 | which: 2.0.2 753 | dev: true 754 | 755 | /crypto-random-string@4.0.0: 756 | resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} 757 | engines: {node: '>=12'} 758 | dependencies: 759 | type-fest: 1.4.0 760 | dev: true 761 | 762 | /css-select@5.1.0: 763 | resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} 764 | dependencies: 765 | boolbase: 1.0.0 766 | css-what: 6.1.0 767 | domhandler: 5.0.3 768 | domutils: 3.1.0 769 | nth-check: 2.1.1 770 | dev: true 771 | 772 | /css-what@6.1.0: 773 | resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} 774 | engines: {node: '>= 6'} 775 | dev: true 776 | 777 | /dashdash@1.14.1: 778 | resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} 779 | engines: {node: '>=0.10'} 780 | dependencies: 781 | assert-plus: 1.0.0 782 | dev: true 783 | 784 | /data-uri-to-buffer@4.0.1: 785 | resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} 786 | engines: {node: '>= 12'} 787 | dev: true 788 | 789 | /debounce@1.2.1: 790 | resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} 791 | dev: true 792 | 793 | /debug@2.6.9: 794 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 795 | peerDependencies: 796 | supports-color: '*' 797 | peerDependenciesMeta: 798 | supports-color: 799 | optional: true 800 | dependencies: 801 | ms: 2.0.0 802 | dev: true 803 | 804 | /debug@4.3.4: 805 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 806 | engines: {node: '>=6.0'} 807 | peerDependencies: 808 | supports-color: '*' 809 | peerDependenciesMeta: 810 | supports-color: 811 | optional: true 812 | dependencies: 813 | ms: 2.1.2 814 | dev: true 815 | 816 | /decamelize@6.0.0: 817 | resolution: {integrity: sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==} 818 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 819 | dev: true 820 | 821 | /decompress-response@6.0.0: 822 | resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} 823 | engines: {node: '>=10'} 824 | dependencies: 825 | mimic-response: 3.1.0 826 | dev: true 827 | 828 | /deep-extend@0.6.0: 829 | resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} 830 | engines: {node: '>=4.0.0'} 831 | dev: true 832 | 833 | /deep-is@0.1.4: 834 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 835 | dev: true 836 | 837 | /deepcopy@2.1.0: 838 | resolution: {integrity: sha512-8cZeTb1ZKC3bdSCP6XOM1IsTczIO73fdqtwa2B0N15eAz7gmyhQo+mc5gnFuulsgN3vIQYmTgbmQVKalH1dKvQ==} 839 | dependencies: 840 | type-detect: 4.0.8 841 | dev: true 842 | 843 | /deepmerge@4.3.1: 844 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 845 | engines: {node: '>=0.10.0'} 846 | dev: true 847 | 848 | /defaults@1.0.4: 849 | resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} 850 | dependencies: 851 | clone: 1.0.4 852 | dev: true 853 | 854 | /defer-to-connect@2.0.1: 855 | resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} 856 | engines: {node: '>=10'} 857 | dev: true 858 | 859 | /define-lazy-prop@2.0.0: 860 | resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} 861 | engines: {node: '>=8'} 862 | dev: true 863 | 864 | /delayed-stream@1.0.0: 865 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 866 | engines: {node: '>=0.4.0'} 867 | dev: true 868 | 869 | /doctrine@3.0.0: 870 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 871 | engines: {node: '>=6.0.0'} 872 | dependencies: 873 | esutils: 2.0.3 874 | dev: true 875 | 876 | /dom-serializer@2.0.0: 877 | resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} 878 | dependencies: 879 | domelementtype: 2.3.0 880 | domhandler: 5.0.3 881 | entities: 4.5.0 882 | dev: true 883 | 884 | /domelementtype@2.3.0: 885 | resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} 886 | dev: true 887 | 888 | /domhandler@5.0.3: 889 | resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} 890 | engines: {node: '>= 4'} 891 | dependencies: 892 | domelementtype: 2.3.0 893 | dev: true 894 | 895 | /domutils@3.1.0: 896 | resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} 897 | dependencies: 898 | dom-serializer: 2.0.0 899 | domelementtype: 2.3.0 900 | domhandler: 5.0.3 901 | dev: true 902 | 903 | /dot-prop@6.0.1: 904 | resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} 905 | engines: {node: '>=10'} 906 | dependencies: 907 | is-obj: 2.0.0 908 | dev: true 909 | 910 | /dtrace-provider@0.8.8: 911 | resolution: {integrity: sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==} 912 | engines: {node: '>=0.10'} 913 | requiresBuild: true 914 | dependencies: 915 | nan: 2.19.0 916 | dev: true 917 | optional: true 918 | 919 | /eastasianwidth@0.2.0: 920 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 921 | dev: true 922 | 923 | /ecc-jsbn@0.1.2: 924 | resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} 925 | dependencies: 926 | jsbn: 0.1.1 927 | safer-buffer: 2.1.2 928 | dev: true 929 | 930 | /ecdsa-sig-formatter@1.0.11: 931 | resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} 932 | dependencies: 933 | safe-buffer: 5.2.1 934 | dev: true 935 | 936 | /emoji-regex@8.0.0: 937 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 938 | dev: true 939 | 940 | /emoji-regex@9.2.2: 941 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 942 | dev: true 943 | 944 | /end-of-stream@1.4.4: 945 | resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} 946 | dependencies: 947 | once: 1.4.0 948 | dev: true 949 | 950 | /entities@4.5.0: 951 | resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} 952 | engines: {node: '>=0.12'} 953 | dev: true 954 | 955 | /error-ex@1.3.2: 956 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 957 | dependencies: 958 | is-arrayish: 0.2.1 959 | dev: true 960 | 961 | /es6-error@4.1.1: 962 | resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} 963 | dev: true 964 | 965 | /es6-promisify@7.0.0: 966 | resolution: {integrity: sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q==} 967 | engines: {node: '>=6'} 968 | dev: true 969 | 970 | /escalade@3.1.2: 971 | resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} 972 | engines: {node: '>=6'} 973 | dev: true 974 | 975 | /escape-goat@4.0.0: 976 | resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==} 977 | engines: {node: '>=12'} 978 | dev: true 979 | 980 | /escape-string-regexp@1.0.5: 981 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 982 | engines: {node: '>=0.8.0'} 983 | dev: true 984 | 985 | /escape-string-regexp@4.0.0: 986 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 987 | engines: {node: '>=10'} 988 | dev: true 989 | 990 | /eslint-plugin-no-unsanitized@4.0.2(eslint@8.56.0): 991 | resolution: {integrity: sha512-Pry0S9YmHoz8NCEMRQh7N0Yexh2MYCNPIlrV52hTmS7qXnTghWsjXouF08bgsrrZqaW9tt1ZiK3j5NEmPE+EjQ==} 992 | peerDependencies: 993 | eslint: ^6 || ^7 || ^8 994 | dependencies: 995 | eslint: 8.56.0 996 | dev: true 997 | 998 | /eslint-scope@7.2.2: 999 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 1000 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1001 | dependencies: 1002 | esrecurse: 4.3.0 1003 | estraverse: 5.3.0 1004 | dev: true 1005 | 1006 | /eslint-visitor-keys@3.4.3: 1007 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 1008 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1009 | dev: true 1010 | 1011 | /eslint@8.56.0: 1012 | resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} 1013 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1014 | hasBin: true 1015 | dependencies: 1016 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) 1017 | '@eslint-community/regexpp': 4.10.0 1018 | '@eslint/eslintrc': 2.1.4 1019 | '@eslint/js': 8.56.0 1020 | '@humanwhocodes/config-array': 0.11.14 1021 | '@humanwhocodes/module-importer': 1.0.1 1022 | '@nodelib/fs.walk': 1.2.8 1023 | '@ungap/structured-clone': 1.2.0 1024 | ajv: 6.12.6 1025 | chalk: 4.1.2 1026 | cross-spawn: 7.0.3 1027 | debug: 4.3.4 1028 | doctrine: 3.0.0 1029 | escape-string-regexp: 4.0.0 1030 | eslint-scope: 7.2.2 1031 | eslint-visitor-keys: 3.4.3 1032 | espree: 9.6.1 1033 | esquery: 1.5.0 1034 | esutils: 2.0.3 1035 | fast-deep-equal: 3.1.3 1036 | file-entry-cache: 6.0.1 1037 | find-up: 5.0.0 1038 | glob-parent: 6.0.2 1039 | globals: 13.24.0 1040 | graphemer: 1.4.0 1041 | ignore: 5.3.1 1042 | imurmurhash: 0.1.4 1043 | is-glob: 4.0.3 1044 | is-path-inside: 3.0.3 1045 | js-yaml: 4.1.0 1046 | json-stable-stringify-without-jsonify: 1.0.1 1047 | levn: 0.4.1 1048 | lodash.merge: 4.6.2 1049 | minimatch: 3.1.2 1050 | natural-compare: 1.4.0 1051 | optionator: 0.9.3 1052 | strip-ansi: 6.0.1 1053 | text-table: 0.2.0 1054 | transitivePeerDependencies: 1055 | - supports-color 1056 | dev: true 1057 | 1058 | /espree@9.6.1: 1059 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 1060 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1061 | dependencies: 1062 | acorn: 8.11.3 1063 | acorn-jsx: 5.3.2(acorn@8.11.3) 1064 | eslint-visitor-keys: 3.4.3 1065 | dev: true 1066 | 1067 | /esprima@4.0.1: 1068 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 1069 | engines: {node: '>=4'} 1070 | hasBin: true 1071 | dev: true 1072 | 1073 | /esquery@1.5.0: 1074 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 1075 | engines: {node: '>=0.10'} 1076 | dependencies: 1077 | estraverse: 5.3.0 1078 | dev: true 1079 | 1080 | /esrecurse@4.3.0: 1081 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1082 | engines: {node: '>=4.0'} 1083 | dependencies: 1084 | estraverse: 5.3.0 1085 | dev: true 1086 | 1087 | /estraverse@5.3.0: 1088 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1089 | engines: {node: '>=4.0'} 1090 | dev: true 1091 | 1092 | /esutils@2.0.3: 1093 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1094 | engines: {node: '>=0.10.0'} 1095 | dev: true 1096 | 1097 | /event-target-shim@5.0.1: 1098 | resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} 1099 | engines: {node: '>=6'} 1100 | dev: true 1101 | 1102 | /events@3.3.0: 1103 | resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} 1104 | engines: {node: '>=0.8.x'} 1105 | dev: true 1106 | 1107 | /execa@4.1.0: 1108 | resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} 1109 | engines: {node: '>=10'} 1110 | dependencies: 1111 | cross-spawn: 7.0.3 1112 | get-stream: 5.2.0 1113 | human-signals: 1.1.1 1114 | is-stream: 2.0.1 1115 | merge-stream: 2.0.0 1116 | npm-run-path: 4.0.1 1117 | onetime: 5.1.2 1118 | signal-exit: 3.0.7 1119 | strip-final-newline: 2.0.0 1120 | dev: true 1121 | 1122 | /extend@3.0.2: 1123 | resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} 1124 | dev: true 1125 | 1126 | /extsprintf@1.3.0: 1127 | resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} 1128 | engines: {'0': node >=0.6.0} 1129 | dev: true 1130 | 1131 | /fast-deep-equal@3.1.3: 1132 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1133 | dev: true 1134 | 1135 | /fast-json-patch@3.1.1: 1136 | resolution: {integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==} 1137 | dev: true 1138 | 1139 | /fast-json-stable-stringify@2.1.0: 1140 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1141 | dev: true 1142 | 1143 | /fast-levenshtein@2.0.6: 1144 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1145 | dev: true 1146 | 1147 | /fast-redact@3.5.0: 1148 | resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} 1149 | engines: {node: '>=6'} 1150 | dev: true 1151 | 1152 | /fastq@1.17.1: 1153 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 1154 | dependencies: 1155 | reusify: 1.0.4 1156 | dev: true 1157 | 1158 | /fd-slicer@1.1.0: 1159 | resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} 1160 | dependencies: 1161 | pend: 1.2.0 1162 | dev: true 1163 | 1164 | /fetch-blob@3.2.0: 1165 | resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} 1166 | engines: {node: ^12.20 || >= 14.13} 1167 | dependencies: 1168 | node-domexception: 1.0.0 1169 | web-streams-polyfill: 3.3.3 1170 | dev: true 1171 | 1172 | /file-entry-cache@6.0.1: 1173 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1174 | engines: {node: ^10.12.0 || >=12.0.0} 1175 | dependencies: 1176 | flat-cache: 3.2.0 1177 | dev: true 1178 | 1179 | /find-up@5.0.0: 1180 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1181 | engines: {node: '>=10'} 1182 | dependencies: 1183 | locate-path: 6.0.0 1184 | path-exists: 4.0.0 1185 | dev: true 1186 | 1187 | /firefox-profile@4.3.2: 1188 | resolution: {integrity: sha512-/C+Eqa0YgIsQT2p66p7Ygzqe7NlE/GNTbhw2SBCm5V3OsWDPITNdTPEcH2Q2fe7eMpYYNPKdUcuVioZBZiR6kA==} 1189 | hasBin: true 1190 | dependencies: 1191 | adm-zip: 0.5.12 1192 | fs-extra: 9.0.1 1193 | ini: 2.0.0 1194 | minimist: 1.2.8 1195 | xml2js: 0.5.0 1196 | dev: true 1197 | 1198 | /first-chunk-stream@3.0.0: 1199 | resolution: {integrity: sha512-LNRvR4hr/S8cXXkIY5pTgVP7L3tq6LlYWcg9nWBuW7o1NMxKZo6oOVa/6GIekMGI0Iw7uC+HWimMe9u/VAeKqw==} 1200 | engines: {node: '>=8'} 1201 | dev: true 1202 | 1203 | /flat-cache@3.2.0: 1204 | resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} 1205 | engines: {node: ^10.12.0 || >=12.0.0} 1206 | dependencies: 1207 | flatted: 3.3.1 1208 | keyv: 4.5.4 1209 | rimraf: 3.0.2 1210 | dev: true 1211 | 1212 | /flatted@3.3.1: 1213 | resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} 1214 | dev: true 1215 | 1216 | /foreground-child@3.1.1: 1217 | resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} 1218 | engines: {node: '>=14'} 1219 | dependencies: 1220 | cross-spawn: 7.0.3 1221 | signal-exit: 4.1.0 1222 | dev: true 1223 | 1224 | /forever-agent@0.6.1: 1225 | resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} 1226 | dev: true 1227 | 1228 | /form-data-encoder@2.1.4: 1229 | resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} 1230 | engines: {node: '>= 14.17'} 1231 | dev: true 1232 | 1233 | /form-data@2.3.3: 1234 | resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} 1235 | engines: {node: '>= 0.12'} 1236 | dependencies: 1237 | asynckit: 0.4.0 1238 | combined-stream: 1.0.8 1239 | mime-types: 2.1.35 1240 | dev: true 1241 | 1242 | /formdata-polyfill@4.0.10: 1243 | resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} 1244 | engines: {node: '>=12.20.0'} 1245 | dependencies: 1246 | fetch-blob: 3.2.0 1247 | dev: true 1248 | 1249 | /fs-extra@11.1.0: 1250 | resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==} 1251 | engines: {node: '>=14.14'} 1252 | dependencies: 1253 | graceful-fs: 4.2.11 1254 | jsonfile: 6.1.0 1255 | universalify: 2.0.1 1256 | dev: true 1257 | 1258 | /fs-extra@9.0.1: 1259 | resolution: {integrity: sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==} 1260 | engines: {node: '>=10'} 1261 | dependencies: 1262 | at-least-node: 1.0.0 1263 | graceful-fs: 4.2.11 1264 | jsonfile: 6.1.0 1265 | universalify: 1.0.0 1266 | dev: true 1267 | 1268 | /fs.realpath@1.0.0: 1269 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1270 | dev: true 1271 | 1272 | /fx-runner@1.4.0: 1273 | resolution: {integrity: sha512-rci1g6U0rdTg6bAaBboP7XdRu01dzTAaKXxFf+PUqGuCv6Xu7o8NZdY1D5MvKGIjb6EdS1g3VlXOgksir1uGkg==} 1274 | hasBin: true 1275 | dependencies: 1276 | commander: 2.9.0 1277 | shell-quote: 1.7.3 1278 | spawn-sync: 1.0.15 1279 | when: 3.7.7 1280 | which: 1.2.4 1281 | winreg: 0.0.12 1282 | dev: true 1283 | 1284 | /get-caller-file@2.0.5: 1285 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 1286 | engines: {node: 6.* || 8.* || >= 10.*} 1287 | dev: true 1288 | 1289 | /get-stream@5.2.0: 1290 | resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} 1291 | engines: {node: '>=8'} 1292 | dependencies: 1293 | pump: 3.0.0 1294 | dev: true 1295 | 1296 | /get-stream@6.0.1: 1297 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 1298 | engines: {node: '>=10'} 1299 | dev: true 1300 | 1301 | /getpass@0.1.7: 1302 | resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} 1303 | dependencies: 1304 | assert-plus: 1.0.0 1305 | dev: true 1306 | 1307 | /glob-parent@6.0.2: 1308 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1309 | engines: {node: '>=10.13.0'} 1310 | dependencies: 1311 | is-glob: 4.0.3 1312 | dev: true 1313 | 1314 | /glob-to-regexp@0.4.1: 1315 | resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} 1316 | dev: true 1317 | 1318 | /glob@10.3.10: 1319 | resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} 1320 | engines: {node: '>=16 || 14 >=14.17'} 1321 | hasBin: true 1322 | dependencies: 1323 | foreground-child: 3.1.1 1324 | jackspeak: 2.3.6 1325 | minimatch: 9.0.3 1326 | minipass: 7.0.4 1327 | path-scurry: 1.10.1 1328 | dev: true 1329 | 1330 | /glob@6.0.4: 1331 | resolution: {integrity: sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==} 1332 | requiresBuild: true 1333 | dependencies: 1334 | inflight: 1.0.6 1335 | inherits: 2.0.4 1336 | minimatch: 3.1.2 1337 | once: 1.4.0 1338 | path-is-absolute: 1.0.1 1339 | dev: true 1340 | optional: true 1341 | 1342 | /glob@7.2.3: 1343 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1344 | dependencies: 1345 | fs.realpath: 1.0.0 1346 | inflight: 1.0.6 1347 | inherits: 2.0.4 1348 | minimatch: 3.1.2 1349 | once: 1.4.0 1350 | path-is-absolute: 1.0.1 1351 | dev: true 1352 | 1353 | /global-dirs@3.0.1: 1354 | resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} 1355 | engines: {node: '>=10'} 1356 | dependencies: 1357 | ini: 2.0.0 1358 | dev: true 1359 | 1360 | /globals@13.24.0: 1361 | resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} 1362 | engines: {node: '>=8'} 1363 | dependencies: 1364 | type-fest: 0.20.2 1365 | dev: true 1366 | 1367 | /got@12.6.1: 1368 | resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} 1369 | engines: {node: '>=14.16'} 1370 | dependencies: 1371 | '@sindresorhus/is': 5.6.0 1372 | '@szmarczak/http-timer': 5.0.1 1373 | cacheable-lookup: 7.0.0 1374 | cacheable-request: 10.2.14 1375 | decompress-response: 6.0.0 1376 | form-data-encoder: 2.1.4 1377 | get-stream: 6.0.1 1378 | http2-wrapper: 2.2.1 1379 | lowercase-keys: 3.0.0 1380 | p-cancelable: 3.0.0 1381 | responselike: 3.0.0 1382 | dev: true 1383 | 1384 | /graceful-fs@4.2.10: 1385 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} 1386 | dev: true 1387 | 1388 | /graceful-fs@4.2.11: 1389 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1390 | dev: true 1391 | 1392 | /graceful-readlink@1.0.1: 1393 | resolution: {integrity: sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==} 1394 | dev: true 1395 | 1396 | /graphemer@1.4.0: 1397 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1398 | dev: true 1399 | 1400 | /growly@1.3.0: 1401 | resolution: {integrity: sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==} 1402 | dev: true 1403 | 1404 | /har-schema@2.0.0: 1405 | resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} 1406 | engines: {node: '>=4'} 1407 | dev: true 1408 | 1409 | /har-validator@5.1.5: 1410 | resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} 1411 | engines: {node: '>=6'} 1412 | deprecated: this library is no longer supported 1413 | dependencies: 1414 | ajv: 6.12.6 1415 | har-schema: 2.0.0 1416 | dev: true 1417 | 1418 | /has-flag@3.0.0: 1419 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1420 | engines: {node: '>=4'} 1421 | dev: true 1422 | 1423 | /has-flag@4.0.0: 1424 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1425 | engines: {node: '>=8'} 1426 | dev: true 1427 | 1428 | /has-yarn@3.0.0: 1429 | resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==} 1430 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1431 | dev: true 1432 | 1433 | /htmlparser2@8.0.2: 1434 | resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} 1435 | dependencies: 1436 | domelementtype: 2.3.0 1437 | domhandler: 5.0.3 1438 | domutils: 3.1.0 1439 | entities: 4.5.0 1440 | dev: true 1441 | 1442 | /http-cache-semantics@4.1.1: 1443 | resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} 1444 | dev: true 1445 | 1446 | /http-signature@1.2.0: 1447 | resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} 1448 | engines: {node: '>=0.8', npm: '>=1.3.7'} 1449 | dependencies: 1450 | assert-plus: 1.0.0 1451 | jsprim: 1.4.2 1452 | sshpk: 1.18.0 1453 | dev: true 1454 | 1455 | /http2-wrapper@2.2.1: 1456 | resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} 1457 | engines: {node: '>=10.19.0'} 1458 | dependencies: 1459 | quick-lru: 5.1.1 1460 | resolve-alpn: 1.2.1 1461 | dev: true 1462 | 1463 | /human-signals@1.1.1: 1464 | resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} 1465 | engines: {node: '>=8.12.0'} 1466 | dev: true 1467 | 1468 | /ieee754@1.2.1: 1469 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 1470 | dev: true 1471 | 1472 | /ignore@5.3.1: 1473 | resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} 1474 | engines: {node: '>= 4'} 1475 | dev: true 1476 | 1477 | /image-size@1.1.1: 1478 | resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} 1479 | engines: {node: '>=16.x'} 1480 | hasBin: true 1481 | dependencies: 1482 | queue: 6.0.2 1483 | dev: true 1484 | 1485 | /immediate@3.0.6: 1486 | resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} 1487 | dev: true 1488 | 1489 | /import-fresh@3.3.0: 1490 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1491 | engines: {node: '>=6'} 1492 | dependencies: 1493 | parent-module: 1.0.1 1494 | resolve-from: 4.0.0 1495 | dev: true 1496 | 1497 | /import-lazy@4.0.0: 1498 | resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} 1499 | engines: {node: '>=8'} 1500 | dev: true 1501 | 1502 | /imurmurhash@0.1.4: 1503 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1504 | engines: {node: '>=0.8.19'} 1505 | dev: true 1506 | 1507 | /inflight@1.0.6: 1508 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1509 | dependencies: 1510 | once: 1.4.0 1511 | wrappy: 1.0.2 1512 | dev: true 1513 | 1514 | /inherits@2.0.4: 1515 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1516 | dev: true 1517 | 1518 | /ini@1.3.8: 1519 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} 1520 | dev: true 1521 | 1522 | /ini@2.0.0: 1523 | resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} 1524 | engines: {node: '>=10'} 1525 | dev: true 1526 | 1527 | /invert-kv@3.0.1: 1528 | resolution: {integrity: sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==} 1529 | engines: {node: '>=8'} 1530 | dev: true 1531 | 1532 | /is-absolute@0.1.7: 1533 | resolution: {integrity: sha512-Xi9/ZSn4NFapG8RP98iNPMOeaV3mXPisxKxzKtHVqr3g56j/fBn+yZmnxSVAA8lmZbl2J9b/a4kJvfU3hqQYgA==} 1534 | engines: {node: '>=0.10.0'} 1535 | dependencies: 1536 | is-relative: 0.1.3 1537 | dev: true 1538 | 1539 | /is-arrayish@0.2.1: 1540 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 1541 | dev: true 1542 | 1543 | /is-ci@3.0.1: 1544 | resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} 1545 | hasBin: true 1546 | dependencies: 1547 | ci-info: 3.9.0 1548 | dev: true 1549 | 1550 | /is-docker@2.2.1: 1551 | resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} 1552 | engines: {node: '>=8'} 1553 | hasBin: true 1554 | dev: true 1555 | 1556 | /is-extglob@2.1.1: 1557 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1558 | engines: {node: '>=0.10.0'} 1559 | dev: true 1560 | 1561 | /is-fullwidth-code-point@3.0.0: 1562 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1563 | engines: {node: '>=8'} 1564 | dev: true 1565 | 1566 | /is-glob@4.0.3: 1567 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1568 | engines: {node: '>=0.10.0'} 1569 | dependencies: 1570 | is-extglob: 2.1.1 1571 | dev: true 1572 | 1573 | /is-installed-globally@0.4.0: 1574 | resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} 1575 | engines: {node: '>=10'} 1576 | dependencies: 1577 | global-dirs: 3.0.1 1578 | is-path-inside: 3.0.3 1579 | dev: true 1580 | 1581 | /is-mergeable-object@1.1.1: 1582 | resolution: {integrity: sha512-CPduJfuGg8h8vW74WOxHtHmtQutyQBzR+3MjQ6iDHIYdbOnm1YC7jv43SqCoU8OPGTJD4nibmiryA4kmogbGrA==} 1583 | dev: true 1584 | 1585 | /is-npm@6.0.0: 1586 | resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==} 1587 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1588 | dev: true 1589 | 1590 | /is-obj@2.0.0: 1591 | resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} 1592 | engines: {node: '>=8'} 1593 | dev: true 1594 | 1595 | /is-path-inside@3.0.3: 1596 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1597 | engines: {node: '>=8'} 1598 | dev: true 1599 | 1600 | /is-relative@0.1.3: 1601 | resolution: {integrity: sha512-wBOr+rNM4gkAZqoLRJI4myw5WzzIdQosFAAbnvfXP5z1LyzgAI3ivOKehC5KfqlQJZoihVhirgtCBj378Eg8GA==} 1602 | engines: {node: '>=0.10.0'} 1603 | dev: true 1604 | 1605 | /is-stream@2.0.1: 1606 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 1607 | engines: {node: '>=8'} 1608 | dev: true 1609 | 1610 | /is-typedarray@1.0.0: 1611 | resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} 1612 | dev: true 1613 | 1614 | /is-utf8@0.2.1: 1615 | resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} 1616 | dev: true 1617 | 1618 | /is-wsl@2.2.0: 1619 | resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} 1620 | engines: {node: '>=8'} 1621 | dependencies: 1622 | is-docker: 2.2.1 1623 | dev: true 1624 | 1625 | /is-yarn-global@0.4.1: 1626 | resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} 1627 | engines: {node: '>=12'} 1628 | dev: true 1629 | 1630 | /isarray@1.0.0: 1631 | resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} 1632 | dev: true 1633 | 1634 | /isexe@1.1.2: 1635 | resolution: {integrity: sha512-d2eJzK691yZwPHcv1LbeAOa91yMJ9QmfTgSO1oXB65ezVhXQsxBac2vEB4bMVms9cGzaA99n6V2viHMq82VLDw==} 1636 | dev: true 1637 | 1638 | /isexe@2.0.0: 1639 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1640 | dev: true 1641 | 1642 | /isstream@0.1.2: 1643 | resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} 1644 | dev: true 1645 | 1646 | /jackspeak@2.3.6: 1647 | resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} 1648 | engines: {node: '>=14'} 1649 | dependencies: 1650 | '@isaacs/cliui': 8.0.2 1651 | optionalDependencies: 1652 | '@pkgjs/parseargs': 0.11.0 1653 | dev: true 1654 | 1655 | /jed@1.1.1: 1656 | resolution: {integrity: sha512-z35ZSEcXHxLW4yumw0dF6L464NT36vmx3wxJw8MDpraBcWuNVgUPZgPJKcu1HekNgwlMFNqol7i/IpSbjhqwqA==} 1657 | dev: true 1658 | 1659 | /jose@4.13.1: 1660 | resolution: {integrity: sha512-MSJQC5vXco5Br38mzaQKiq9mwt7lwj2eXpgpRyQYNHYt2lq1PjkWa7DLXX0WVcQLE9HhMh3jPiufS7fhJf+CLQ==} 1661 | dev: true 1662 | 1663 | /js-tokens@4.0.0: 1664 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1665 | dev: true 1666 | 1667 | /js-yaml@4.1.0: 1668 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1669 | hasBin: true 1670 | dependencies: 1671 | argparse: 2.0.1 1672 | dev: true 1673 | 1674 | /jsbn@0.1.1: 1675 | resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} 1676 | dev: true 1677 | 1678 | /json-buffer@3.0.1: 1679 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1680 | dev: true 1681 | 1682 | /json-merge-patch@1.0.2: 1683 | resolution: {integrity: sha512-M6Vp2GN9L7cfuMXiWOmHj9bEFbeC250iVtcKQbqVgEsDVYnIsrNsbU+h/Y/PkbBQCtEa4Bez+Ebv0zfbC8ObLg==} 1684 | dependencies: 1685 | fast-deep-equal: 3.1.3 1686 | dev: true 1687 | 1688 | /json-parse-even-better-errors@2.3.1: 1689 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 1690 | dev: true 1691 | 1692 | /json-schema-traverse@0.4.1: 1693 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1694 | dev: true 1695 | 1696 | /json-schema-traverse@1.0.0: 1697 | resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} 1698 | dev: true 1699 | 1700 | /json-schema@0.4.0: 1701 | resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} 1702 | dev: true 1703 | 1704 | /json-stable-stringify-without-jsonify@1.0.1: 1705 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1706 | dev: true 1707 | 1708 | /json-stringify-safe@5.0.1: 1709 | resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} 1710 | dev: true 1711 | 1712 | /jsonfile@6.1.0: 1713 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} 1714 | dependencies: 1715 | universalify: 2.0.1 1716 | optionalDependencies: 1717 | graceful-fs: 4.2.11 1718 | dev: true 1719 | 1720 | /jsonwebtoken@9.0.0: 1721 | resolution: {integrity: sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==} 1722 | engines: {node: '>=12', npm: '>=6'} 1723 | dependencies: 1724 | jws: 3.2.2 1725 | lodash: 4.17.21 1726 | ms: 2.1.3 1727 | semver: 7.6.0 1728 | dev: true 1729 | 1730 | /jsprim@1.4.2: 1731 | resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} 1732 | engines: {node: '>=0.6.0'} 1733 | dependencies: 1734 | assert-plus: 1.0.0 1735 | extsprintf: 1.3.0 1736 | json-schema: 0.4.0 1737 | verror: 1.10.0 1738 | dev: true 1739 | 1740 | /jszip@3.10.1: 1741 | resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} 1742 | dependencies: 1743 | lie: 3.3.0 1744 | pako: 1.0.11 1745 | readable-stream: 2.3.8 1746 | setimmediate: 1.0.5 1747 | dev: true 1748 | 1749 | /jwa@1.4.1: 1750 | resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} 1751 | dependencies: 1752 | buffer-equal-constant-time: 1.0.1 1753 | ecdsa-sig-formatter: 1.0.11 1754 | safe-buffer: 5.2.1 1755 | dev: true 1756 | 1757 | /jws@3.2.2: 1758 | resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} 1759 | dependencies: 1760 | jwa: 1.4.1 1761 | safe-buffer: 5.2.1 1762 | dev: true 1763 | 1764 | /keyv@4.5.4: 1765 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1766 | dependencies: 1767 | json-buffer: 3.0.1 1768 | dev: true 1769 | 1770 | /latest-version@7.0.0: 1771 | resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} 1772 | engines: {node: '>=14.16'} 1773 | dependencies: 1774 | package-json: 8.1.1 1775 | dev: true 1776 | 1777 | /lcid@3.1.1: 1778 | resolution: {integrity: sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==} 1779 | engines: {node: '>=8'} 1780 | dependencies: 1781 | invert-kv: 3.0.1 1782 | dev: true 1783 | 1784 | /levn@0.4.1: 1785 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1786 | engines: {node: '>= 0.8.0'} 1787 | dependencies: 1788 | prelude-ls: 1.2.1 1789 | type-check: 0.4.0 1790 | dev: true 1791 | 1792 | /lie@3.3.0: 1793 | resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} 1794 | dependencies: 1795 | immediate: 3.0.6 1796 | dev: true 1797 | 1798 | /lighthouse-logger@1.4.2: 1799 | resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} 1800 | dependencies: 1801 | debug: 2.6.9 1802 | marky: 1.2.5 1803 | transitivePeerDependencies: 1804 | - supports-color 1805 | dev: true 1806 | 1807 | /lines-and-columns@2.0.4: 1808 | resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} 1809 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1810 | dev: true 1811 | 1812 | /locate-path@6.0.0: 1813 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1814 | engines: {node: '>=10'} 1815 | dependencies: 1816 | p-locate: 5.0.0 1817 | dev: true 1818 | 1819 | /lodash.merge@4.6.2: 1820 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1821 | dev: true 1822 | 1823 | /lodash@4.17.21: 1824 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 1825 | dev: true 1826 | 1827 | /lowercase-keys@3.0.0: 1828 | resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} 1829 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1830 | dev: true 1831 | 1832 | /lru-cache@10.2.0: 1833 | resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} 1834 | engines: {node: 14 || >=16.14} 1835 | dev: true 1836 | 1837 | /lru-cache@6.0.0: 1838 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1839 | engines: {node: '>=10'} 1840 | dependencies: 1841 | yallist: 4.0.0 1842 | dev: true 1843 | 1844 | /make-error@1.3.6: 1845 | resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} 1846 | dev: true 1847 | 1848 | /map-age-cleaner@0.1.3: 1849 | resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} 1850 | engines: {node: '>=6'} 1851 | dependencies: 1852 | p-defer: 1.0.0 1853 | dev: true 1854 | 1855 | /marky@1.2.5: 1856 | resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} 1857 | dev: true 1858 | 1859 | /mem@5.1.1: 1860 | resolution: {integrity: sha512-qvwipnozMohxLXG1pOqoLiZKNkC4r4qqRucSoDwXowsNGDSULiqFTRUF05vcZWnwJSG22qTsynQhxbaMtnX9gw==} 1861 | engines: {node: '>=8'} 1862 | dependencies: 1863 | map-age-cleaner: 0.1.3 1864 | mimic-fn: 2.1.0 1865 | p-is-promise: 2.1.0 1866 | dev: true 1867 | 1868 | /merge-stream@2.0.0: 1869 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1870 | dev: true 1871 | 1872 | /mime-db@1.52.0: 1873 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 1874 | engines: {node: '>= 0.6'} 1875 | dev: true 1876 | 1877 | /mime-types@2.1.35: 1878 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 1879 | engines: {node: '>= 0.6'} 1880 | dependencies: 1881 | mime-db: 1.52.0 1882 | dev: true 1883 | 1884 | /mimic-fn@2.1.0: 1885 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 1886 | engines: {node: '>=6'} 1887 | dev: true 1888 | 1889 | /mimic-response@3.1.0: 1890 | resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} 1891 | engines: {node: '>=10'} 1892 | dev: true 1893 | 1894 | /mimic-response@4.0.0: 1895 | resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} 1896 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1897 | dev: true 1898 | 1899 | /minimatch@3.1.2: 1900 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1901 | dependencies: 1902 | brace-expansion: 1.1.11 1903 | dev: true 1904 | 1905 | /minimatch@9.0.3: 1906 | resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} 1907 | engines: {node: '>=16 || 14 >=14.17'} 1908 | dependencies: 1909 | brace-expansion: 2.0.1 1910 | dev: true 1911 | 1912 | /minimist@1.2.8: 1913 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 1914 | dev: true 1915 | 1916 | /minipass@7.0.4: 1917 | resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} 1918 | engines: {node: '>=16 || 14 >=14.17'} 1919 | dev: true 1920 | 1921 | /mkdirp@0.5.6: 1922 | resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} 1923 | hasBin: true 1924 | requiresBuild: true 1925 | dependencies: 1926 | minimist: 1.2.8 1927 | dev: true 1928 | optional: true 1929 | 1930 | /mkdirp@1.0.4: 1931 | resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} 1932 | engines: {node: '>=10'} 1933 | hasBin: true 1934 | dev: true 1935 | 1936 | /moment@2.30.1: 1937 | resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} 1938 | requiresBuild: true 1939 | dev: true 1940 | optional: true 1941 | 1942 | /ms@2.0.0: 1943 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 1944 | dev: true 1945 | 1946 | /ms@2.1.2: 1947 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1948 | dev: true 1949 | 1950 | /ms@2.1.3: 1951 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1952 | dev: true 1953 | 1954 | /multimatch@6.0.0: 1955 | resolution: {integrity: sha512-I7tSVxHGPlmPN/enE3mS1aOSo6bWBfls+3HmuEeCUBCE7gWnm3cBXCBkpurzFjVRwC6Kld8lLaZ1Iv5vOcjvcQ==} 1956 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1957 | dependencies: 1958 | '@types/minimatch': 3.0.5 1959 | array-differ: 4.0.0 1960 | array-union: 3.0.1 1961 | minimatch: 3.1.2 1962 | dev: true 1963 | 1964 | /mv@2.1.1: 1965 | resolution: {integrity: sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==} 1966 | engines: {node: '>=0.8.0'} 1967 | requiresBuild: true 1968 | dependencies: 1969 | mkdirp: 0.5.6 1970 | ncp: 2.0.0 1971 | rimraf: 2.4.5 1972 | dev: true 1973 | optional: true 1974 | 1975 | /mz@2.7.0: 1976 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1977 | dependencies: 1978 | any-promise: 1.3.0 1979 | object-assign: 4.1.1 1980 | thenify-all: 1.6.0 1981 | dev: true 1982 | 1983 | /nan@2.19.0: 1984 | resolution: {integrity: sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==} 1985 | requiresBuild: true 1986 | dev: true 1987 | optional: true 1988 | 1989 | /nanoid@3.3.7: 1990 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 1991 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1992 | hasBin: true 1993 | dev: true 1994 | 1995 | /natural-compare@1.4.0: 1996 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1997 | dev: true 1998 | 1999 | /ncp@2.0.0: 2000 | resolution: {integrity: sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==} 2001 | hasBin: true 2002 | requiresBuild: true 2003 | dev: true 2004 | optional: true 2005 | 2006 | /node-domexception@1.0.0: 2007 | resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} 2008 | engines: {node: '>=10.5.0'} 2009 | dev: true 2010 | 2011 | /node-fetch@3.3.1: 2012 | resolution: {integrity: sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==} 2013 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2014 | dependencies: 2015 | data-uri-to-buffer: 4.0.1 2016 | fetch-blob: 3.2.0 2017 | formdata-polyfill: 4.0.10 2018 | dev: true 2019 | 2020 | /node-forge@1.3.1: 2021 | resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} 2022 | engines: {node: '>= 6.13.0'} 2023 | dev: true 2024 | 2025 | /node-notifier@10.0.1: 2026 | resolution: {integrity: sha512-YX7TSyDukOZ0g+gmzjB6abKu+hTGvO8+8+gIFDsRCU2t8fLV/P2unmt+LGFaIa4y64aX98Qksa97rgz4vMNeLQ==} 2027 | dependencies: 2028 | growly: 1.3.0 2029 | is-wsl: 2.2.0 2030 | semver: 7.6.0 2031 | shellwords: 0.1.1 2032 | uuid: 8.3.2 2033 | which: 2.0.2 2034 | dev: true 2035 | 2036 | /normalize-url@8.0.1: 2037 | resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} 2038 | engines: {node: '>=14.16'} 2039 | dev: true 2040 | 2041 | /npm-run-path@4.0.1: 2042 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 2043 | engines: {node: '>=8'} 2044 | dependencies: 2045 | path-key: 3.1.1 2046 | dev: true 2047 | 2048 | /nth-check@2.1.1: 2049 | resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} 2050 | dependencies: 2051 | boolbase: 1.0.0 2052 | dev: true 2053 | 2054 | /oauth-sign@0.9.0: 2055 | resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} 2056 | dev: true 2057 | 2058 | /object-assign@4.1.1: 2059 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 2060 | engines: {node: '>=0.10.0'} 2061 | dev: true 2062 | 2063 | /on-exit-leak-free@2.1.2: 2064 | resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} 2065 | engines: {node: '>=14.0.0'} 2066 | dev: true 2067 | 2068 | /once@1.4.0: 2069 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 2070 | dependencies: 2071 | wrappy: 1.0.2 2072 | dev: true 2073 | 2074 | /onetime@5.1.2: 2075 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 2076 | engines: {node: '>=6'} 2077 | dependencies: 2078 | mimic-fn: 2.1.0 2079 | dev: true 2080 | 2081 | /open@8.4.2: 2082 | resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} 2083 | engines: {node: '>=12'} 2084 | dependencies: 2085 | define-lazy-prop: 2.0.0 2086 | is-docker: 2.2.1 2087 | is-wsl: 2.2.0 2088 | dev: true 2089 | 2090 | /optionator@0.9.3: 2091 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} 2092 | engines: {node: '>= 0.8.0'} 2093 | dependencies: 2094 | '@aashutoshrathi/word-wrap': 1.2.6 2095 | deep-is: 0.1.4 2096 | fast-levenshtein: 2.0.6 2097 | levn: 0.4.1 2098 | prelude-ls: 1.2.1 2099 | type-check: 0.4.0 2100 | dev: true 2101 | 2102 | /os-locale@5.0.0: 2103 | resolution: {integrity: sha512-tqZcNEDAIZKBEPnHPlVDvKrp7NzgLi7jRmhKiUoa2NUmhl13FtkAGLUVR+ZsYvApBQdBfYm43A4tXXQ4IrYLBA==} 2104 | engines: {node: '>=10'} 2105 | dependencies: 2106 | execa: 4.1.0 2107 | lcid: 3.1.1 2108 | mem: 5.1.1 2109 | dev: true 2110 | 2111 | /os-shim@0.1.3: 2112 | resolution: {integrity: sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A==} 2113 | engines: {node: '>= 0.4.0'} 2114 | dev: true 2115 | 2116 | /p-cancelable@3.0.0: 2117 | resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} 2118 | engines: {node: '>=12.20'} 2119 | dev: true 2120 | 2121 | /p-defer@1.0.0: 2122 | resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} 2123 | engines: {node: '>=4'} 2124 | dev: true 2125 | 2126 | /p-is-promise@2.1.0: 2127 | resolution: {integrity: sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==} 2128 | engines: {node: '>=6'} 2129 | dev: true 2130 | 2131 | /p-limit@3.1.0: 2132 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 2133 | engines: {node: '>=10'} 2134 | dependencies: 2135 | yocto-queue: 0.1.0 2136 | dev: true 2137 | 2138 | /p-locate@5.0.0: 2139 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 2140 | engines: {node: '>=10'} 2141 | dependencies: 2142 | p-limit: 3.1.0 2143 | dev: true 2144 | 2145 | /package-json@8.1.1: 2146 | resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} 2147 | engines: {node: '>=14.16'} 2148 | dependencies: 2149 | got: 12.6.1 2150 | registry-auth-token: 5.0.2 2151 | registry-url: 6.0.1 2152 | semver: 7.6.0 2153 | dev: true 2154 | 2155 | /pako@1.0.11: 2156 | resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} 2157 | dev: true 2158 | 2159 | /parent-module@1.0.1: 2160 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 2161 | engines: {node: '>=6'} 2162 | dependencies: 2163 | callsites: 3.1.0 2164 | dev: true 2165 | 2166 | /parse-json@6.0.2: 2167 | resolution: {integrity: sha512-SA5aMiaIjXkAiBrW/yPgLgQAQg42f7K3ACO+2l/zOvtQBwX58DMUsFJXelW2fx3yMBmWOVkR6j1MGsdSbCA4UA==} 2168 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2169 | dependencies: 2170 | '@babel/code-frame': 7.24.2 2171 | error-ex: 1.3.2 2172 | json-parse-even-better-errors: 2.3.1 2173 | lines-and-columns: 2.0.4 2174 | dev: true 2175 | 2176 | /parse5-htmlparser2-tree-adapter@7.0.0: 2177 | resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} 2178 | dependencies: 2179 | domhandler: 5.0.3 2180 | parse5: 7.1.2 2181 | dev: true 2182 | 2183 | /parse5@7.1.2: 2184 | resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} 2185 | dependencies: 2186 | entities: 4.5.0 2187 | dev: true 2188 | 2189 | /path-exists@4.0.0: 2190 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2191 | engines: {node: '>=8'} 2192 | dev: true 2193 | 2194 | /path-is-absolute@1.0.1: 2195 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 2196 | engines: {node: '>=0.10.0'} 2197 | dev: true 2198 | 2199 | /path-key@3.1.1: 2200 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2201 | engines: {node: '>=8'} 2202 | dev: true 2203 | 2204 | /path-scurry@1.10.1: 2205 | resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} 2206 | engines: {node: '>=16 || 14 >=14.17'} 2207 | dependencies: 2208 | lru-cache: 10.2.0 2209 | minipass: 7.0.4 2210 | dev: true 2211 | 2212 | /pend@1.2.0: 2213 | resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} 2214 | dev: true 2215 | 2216 | /performance-now@2.1.0: 2217 | resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} 2218 | dev: true 2219 | 2220 | /picocolors@1.0.0: 2221 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2222 | dev: true 2223 | 2224 | /pino-abstract-transport@1.1.0: 2225 | resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==} 2226 | dependencies: 2227 | readable-stream: 4.5.2 2228 | split2: 4.2.0 2229 | dev: true 2230 | 2231 | /pino-std-serializers@6.2.2: 2232 | resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} 2233 | dev: true 2234 | 2235 | /pino@8.17.2: 2236 | resolution: {integrity: sha512-LA6qKgeDMLr2ux2y/YiUt47EfgQ+S9LznBWOJdN3q1dx2sv0ziDLUBeVpyVv17TEcGCBuWf0zNtg3M5m1NhhWQ==} 2237 | hasBin: true 2238 | dependencies: 2239 | atomic-sleep: 1.0.0 2240 | fast-redact: 3.5.0 2241 | on-exit-leak-free: 2.1.2 2242 | pino-abstract-transport: 1.1.0 2243 | pino-std-serializers: 6.2.2 2244 | process-warning: 3.0.0 2245 | quick-format-unescaped: 4.0.4 2246 | real-require: 0.2.0 2247 | safe-stable-stringify: 2.4.3 2248 | sonic-boom: 3.8.0 2249 | thread-stream: 2.4.1 2250 | dev: true 2251 | 2252 | /postcss@8.4.33: 2253 | resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} 2254 | engines: {node: ^10 || ^12 || >=14} 2255 | dependencies: 2256 | nanoid: 3.3.7 2257 | picocolors: 1.0.0 2258 | source-map-js: 1.2.0 2259 | dev: true 2260 | 2261 | /prelude-ls@1.2.1: 2262 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 2263 | engines: {node: '>= 0.8.0'} 2264 | dev: true 2265 | 2266 | /prettier@3.2.5: 2267 | resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} 2268 | engines: {node: '>=14'} 2269 | hasBin: true 2270 | dev: true 2271 | 2272 | /process-nextick-args@2.0.1: 2273 | resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} 2274 | dev: true 2275 | 2276 | /process-warning@3.0.0: 2277 | resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} 2278 | dev: true 2279 | 2280 | /process@0.11.10: 2281 | resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} 2282 | engines: {node: '>= 0.6.0'} 2283 | dev: true 2284 | 2285 | /promise-toolbox@0.21.0: 2286 | resolution: {integrity: sha512-NV8aTmpwrZv+Iys54sSFOBx3tuVaOBvvrft5PNppnxy9xpU/akHbaWIril22AB22zaPgrgwKdD0KsrM0ptUtpg==} 2287 | engines: {node: '>=6'} 2288 | dependencies: 2289 | make-error: 1.3.6 2290 | dev: true 2291 | 2292 | /proto-list@1.2.4: 2293 | resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} 2294 | dev: true 2295 | 2296 | /psl@1.9.0: 2297 | resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} 2298 | dev: true 2299 | 2300 | /pump@3.0.0: 2301 | resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} 2302 | dependencies: 2303 | end-of-stream: 1.4.4 2304 | once: 1.4.0 2305 | dev: true 2306 | 2307 | /punycode@2.3.1: 2308 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 2309 | engines: {node: '>=6'} 2310 | dev: true 2311 | 2312 | /pupa@3.1.0: 2313 | resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==} 2314 | engines: {node: '>=12.20'} 2315 | dependencies: 2316 | escape-goat: 4.0.0 2317 | dev: true 2318 | 2319 | /qs@6.5.3: 2320 | resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} 2321 | engines: {node: '>=0.6'} 2322 | dev: true 2323 | 2324 | /queue-microtask@1.2.3: 2325 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2326 | dev: true 2327 | 2328 | /queue@6.0.2: 2329 | resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} 2330 | dependencies: 2331 | inherits: 2.0.4 2332 | dev: true 2333 | 2334 | /quick-format-unescaped@4.0.4: 2335 | resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} 2336 | dev: true 2337 | 2338 | /quick-lru@5.1.1: 2339 | resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} 2340 | engines: {node: '>=10'} 2341 | dev: true 2342 | 2343 | /rc@1.2.8: 2344 | resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} 2345 | hasBin: true 2346 | dependencies: 2347 | deep-extend: 0.6.0 2348 | ini: 1.3.8 2349 | minimist: 1.2.8 2350 | strip-json-comments: 2.0.1 2351 | dev: true 2352 | 2353 | /readable-stream@2.3.8: 2354 | resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} 2355 | dependencies: 2356 | core-util-is: 1.0.3 2357 | inherits: 2.0.4 2358 | isarray: 1.0.0 2359 | process-nextick-args: 2.0.1 2360 | safe-buffer: 5.1.2 2361 | string_decoder: 1.1.1 2362 | util-deprecate: 1.0.2 2363 | dev: true 2364 | 2365 | /readable-stream@4.5.2: 2366 | resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} 2367 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2368 | dependencies: 2369 | abort-controller: 3.0.0 2370 | buffer: 6.0.3 2371 | events: 3.3.0 2372 | process: 0.11.10 2373 | string_decoder: 1.3.0 2374 | dev: true 2375 | 2376 | /real-require@0.2.0: 2377 | resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} 2378 | engines: {node: '>= 12.13.0'} 2379 | dev: true 2380 | 2381 | /regenerator-runtime@0.13.11: 2382 | resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} 2383 | dev: true 2384 | 2385 | /registry-auth-token@5.0.2: 2386 | resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} 2387 | engines: {node: '>=14'} 2388 | dependencies: 2389 | '@pnpm/npm-conf': 2.2.2 2390 | dev: true 2391 | 2392 | /registry-url@6.0.1: 2393 | resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} 2394 | engines: {node: '>=12'} 2395 | dependencies: 2396 | rc: 1.2.8 2397 | dev: true 2398 | 2399 | /relaxed-json@1.0.3: 2400 | resolution: {integrity: sha512-b7wGPo7o2KE/g7SqkJDDbav6zmrEeP4TK2VpITU72J/M949TLe/23y/ZHJo+pskcGM52xIfFoT9hydwmgr1AEg==} 2401 | engines: {node: '>= 0.10.0'} 2402 | hasBin: true 2403 | dependencies: 2404 | chalk: 2.4.2 2405 | commander: 2.20.3 2406 | dev: true 2407 | 2408 | /request@2.88.2: 2409 | resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} 2410 | engines: {node: '>= 6'} 2411 | deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 2412 | dependencies: 2413 | aws-sign2: 0.7.0 2414 | aws4: 1.12.0 2415 | caseless: 0.12.0 2416 | combined-stream: 1.0.8 2417 | extend: 3.0.2 2418 | forever-agent: 0.6.1 2419 | form-data: 2.3.3 2420 | har-validator: 5.1.5 2421 | http-signature: 1.2.0 2422 | is-typedarray: 1.0.0 2423 | isstream: 0.1.2 2424 | json-stringify-safe: 5.0.1 2425 | mime-types: 2.1.35 2426 | oauth-sign: 0.9.0 2427 | performance-now: 2.1.0 2428 | qs: 6.5.3 2429 | safe-buffer: 5.2.1 2430 | tough-cookie: 2.5.0 2431 | tunnel-agent: 0.6.0 2432 | uuid: 3.4.0 2433 | dev: true 2434 | 2435 | /require-directory@2.1.1: 2436 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 2437 | engines: {node: '>=0.10.0'} 2438 | dev: true 2439 | 2440 | /require-from-string@2.0.2: 2441 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 2442 | engines: {node: '>=0.10.0'} 2443 | dev: true 2444 | 2445 | /resolve-alpn@1.2.1: 2446 | resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} 2447 | dev: true 2448 | 2449 | /resolve-from@4.0.0: 2450 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2451 | engines: {node: '>=4'} 2452 | dev: true 2453 | 2454 | /responselike@3.0.0: 2455 | resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} 2456 | engines: {node: '>=14.16'} 2457 | dependencies: 2458 | lowercase-keys: 3.0.0 2459 | dev: true 2460 | 2461 | /reusify@1.0.4: 2462 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2463 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2464 | dev: true 2465 | 2466 | /rimraf@2.4.5: 2467 | resolution: {integrity: sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==} 2468 | hasBin: true 2469 | requiresBuild: true 2470 | dependencies: 2471 | glob: 6.0.4 2472 | dev: true 2473 | optional: true 2474 | 2475 | /rimraf@3.0.2: 2476 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2477 | hasBin: true 2478 | dependencies: 2479 | glob: 7.2.3 2480 | dev: true 2481 | 2482 | /run-parallel@1.2.0: 2483 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2484 | dependencies: 2485 | queue-microtask: 1.2.3 2486 | dev: true 2487 | 2488 | /safe-buffer@5.1.2: 2489 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 2490 | dev: true 2491 | 2492 | /safe-buffer@5.2.1: 2493 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 2494 | dev: true 2495 | 2496 | /safe-json-stringify@1.2.0: 2497 | resolution: {integrity: sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==} 2498 | requiresBuild: true 2499 | dev: true 2500 | optional: true 2501 | 2502 | /safe-stable-stringify@2.4.3: 2503 | resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} 2504 | engines: {node: '>=10'} 2505 | dev: true 2506 | 2507 | /safer-buffer@2.1.2: 2508 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 2509 | dev: true 2510 | 2511 | /sax@1.3.0: 2512 | resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} 2513 | dev: true 2514 | 2515 | /semver-diff@4.0.0: 2516 | resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} 2517 | engines: {node: '>=12'} 2518 | dependencies: 2519 | semver: 7.6.0 2520 | dev: true 2521 | 2522 | /semver@7.5.4: 2523 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} 2524 | engines: {node: '>=10'} 2525 | hasBin: true 2526 | dependencies: 2527 | lru-cache: 6.0.0 2528 | dev: true 2529 | 2530 | /semver@7.6.0: 2531 | resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} 2532 | engines: {node: '>=10'} 2533 | hasBin: true 2534 | dependencies: 2535 | lru-cache: 6.0.0 2536 | dev: true 2537 | 2538 | /setimmediate@1.0.5: 2539 | resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} 2540 | dev: true 2541 | 2542 | /sha.js@2.4.11: 2543 | resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} 2544 | hasBin: true 2545 | dependencies: 2546 | inherits: 2.0.4 2547 | safe-buffer: 5.2.1 2548 | dev: true 2549 | 2550 | /shebang-command@2.0.0: 2551 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2552 | engines: {node: '>=8'} 2553 | dependencies: 2554 | shebang-regex: 3.0.0 2555 | dev: true 2556 | 2557 | /shebang-regex@3.0.0: 2558 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2559 | engines: {node: '>=8'} 2560 | dev: true 2561 | 2562 | /shell-quote@1.7.3: 2563 | resolution: {integrity: sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==} 2564 | dev: true 2565 | 2566 | /shellwords@0.1.1: 2567 | resolution: {integrity: sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==} 2568 | dev: true 2569 | 2570 | /sign-addon@5.3.0: 2571 | resolution: {integrity: sha512-7nHlCzhQgVMLBNiXVEgbG/raq48awOW0lYMN5uo1BaB3mp0+k8M8pvDwbfTlr3apcxZJsk9HQsAW1POwoJugpQ==} 2572 | deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. 2573 | dependencies: 2574 | common-tags: 1.8.2 2575 | core-js: 3.29.0 2576 | deepcopy: 2.1.0 2577 | es6-error: 4.1.1 2578 | es6-promisify: 7.0.0 2579 | jsonwebtoken: 9.0.0 2580 | mz: 2.7.0 2581 | request: 2.88.2 2582 | source-map-support: 0.5.21 2583 | stream-to-promise: 3.0.0 2584 | dev: true 2585 | 2586 | /signal-exit@3.0.7: 2587 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 2588 | dev: true 2589 | 2590 | /signal-exit@4.1.0: 2591 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 2592 | engines: {node: '>=14'} 2593 | dev: true 2594 | 2595 | /sonic-boom@3.8.0: 2596 | resolution: {integrity: sha512-ybz6OYOUjoQQCQ/i4LU8kaToD8ACtYP+Cj5qd2AO36bwbdewxWJ3ArmJ2cr6AvxlL2o0PqnCcPGUgkILbfkaCA==} 2597 | dependencies: 2598 | atomic-sleep: 1.0.0 2599 | dev: true 2600 | 2601 | /source-map-js@1.2.0: 2602 | resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} 2603 | engines: {node: '>=0.10.0'} 2604 | dev: true 2605 | 2606 | /source-map-support@0.5.21: 2607 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 2608 | dependencies: 2609 | buffer-from: 1.1.2 2610 | source-map: 0.6.1 2611 | dev: true 2612 | 2613 | /source-map@0.6.1: 2614 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 2615 | engines: {node: '>=0.10.0'} 2616 | dev: true 2617 | 2618 | /spawn-sync@1.0.15: 2619 | resolution: {integrity: sha512-9DWBgrgYZzNghseho0JOuh+5fg9u6QWhAWa51QC7+U5rCheZ/j1DrEZnyE0RBBRqZ9uEXGPgSSM0nky6burpVw==} 2620 | requiresBuild: true 2621 | dependencies: 2622 | concat-stream: 1.6.2 2623 | os-shim: 0.1.3 2624 | dev: true 2625 | 2626 | /split2@4.2.0: 2627 | resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} 2628 | engines: {node: '>= 10.x'} 2629 | dev: true 2630 | 2631 | /split@1.0.1: 2632 | resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==} 2633 | dependencies: 2634 | through: 2.3.8 2635 | dev: true 2636 | 2637 | /sshpk@1.18.0: 2638 | resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} 2639 | engines: {node: '>=0.10.0'} 2640 | hasBin: true 2641 | dependencies: 2642 | asn1: 0.2.6 2643 | assert-plus: 1.0.0 2644 | bcrypt-pbkdf: 1.0.2 2645 | dashdash: 1.14.1 2646 | ecc-jsbn: 0.1.2 2647 | getpass: 0.1.7 2648 | jsbn: 0.1.1 2649 | safer-buffer: 2.1.2 2650 | tweetnacl: 0.14.5 2651 | dev: true 2652 | 2653 | /stream-to-array@2.3.0: 2654 | resolution: {integrity: sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==} 2655 | dependencies: 2656 | any-promise: 1.3.0 2657 | dev: true 2658 | 2659 | /stream-to-promise@3.0.0: 2660 | resolution: {integrity: sha512-h+7wLeFiYegOdgTfTxjRsrT7/Op7grnKEIHWgaO1RTHwcwk7xRreMr3S8XpDfDMesSxzgM2V4CxNCFAGo6ssnA==} 2661 | engines: {node: '>= 10'} 2662 | dependencies: 2663 | any-promise: 1.3.0 2664 | end-of-stream: 1.4.4 2665 | stream-to-array: 2.3.0 2666 | dev: true 2667 | 2668 | /string-width@4.2.3: 2669 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 2670 | engines: {node: '>=8'} 2671 | dependencies: 2672 | emoji-regex: 8.0.0 2673 | is-fullwidth-code-point: 3.0.0 2674 | strip-ansi: 6.0.1 2675 | dev: true 2676 | 2677 | /string-width@5.1.2: 2678 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 2679 | engines: {node: '>=12'} 2680 | dependencies: 2681 | eastasianwidth: 0.2.0 2682 | emoji-regex: 9.2.2 2683 | strip-ansi: 7.1.0 2684 | dev: true 2685 | 2686 | /string_decoder@1.1.1: 2687 | resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} 2688 | dependencies: 2689 | safe-buffer: 5.1.2 2690 | dev: true 2691 | 2692 | /string_decoder@1.3.0: 2693 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 2694 | dependencies: 2695 | safe-buffer: 5.2.1 2696 | dev: true 2697 | 2698 | /strip-ansi@6.0.1: 2699 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2700 | engines: {node: '>=8'} 2701 | dependencies: 2702 | ansi-regex: 5.0.1 2703 | dev: true 2704 | 2705 | /strip-ansi@7.1.0: 2706 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 2707 | engines: {node: '>=12'} 2708 | dependencies: 2709 | ansi-regex: 6.0.1 2710 | dev: true 2711 | 2712 | /strip-bom-buf@2.0.0: 2713 | resolution: {integrity: sha512-gLFNHucd6gzb8jMsl5QmZ3QgnUJmp7qn4uUSHNwEXumAp7YizoGYw19ZUVfuq4aBOQUtyn2k8X/CwzWB73W2lQ==} 2714 | engines: {node: '>=8'} 2715 | dependencies: 2716 | is-utf8: 0.2.1 2717 | dev: true 2718 | 2719 | /strip-bom-stream@4.0.0: 2720 | resolution: {integrity: sha512-0ApK3iAkHv6WbgLICw/J4nhwHeDZsBxIIsOD+gHgZICL6SeJ0S9f/WZqemka9cjkTyMN5geId6e8U5WGFAn3cQ==} 2721 | engines: {node: '>=8'} 2722 | dependencies: 2723 | first-chunk-stream: 3.0.0 2724 | strip-bom-buf: 2.0.0 2725 | dev: true 2726 | 2727 | /strip-bom@5.0.0: 2728 | resolution: {integrity: sha512-p+byADHF7SzEcVnLvc/r3uognM1hUhObuHXxJcgLCfD194XAkaLbjq3Wzb0N5G2tgIjH0dgT708Z51QxMeu60A==} 2729 | engines: {node: '>=12'} 2730 | dev: true 2731 | 2732 | /strip-final-newline@2.0.0: 2733 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 2734 | engines: {node: '>=6'} 2735 | dev: true 2736 | 2737 | /strip-json-comments@2.0.1: 2738 | resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} 2739 | engines: {node: '>=0.10.0'} 2740 | dev: true 2741 | 2742 | /strip-json-comments@3.1.1: 2743 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2744 | engines: {node: '>=8'} 2745 | dev: true 2746 | 2747 | /strip-json-comments@5.0.0: 2748 | resolution: {integrity: sha512-V1LGY4UUo0jgwC+ELQ2BNWfPa17TIuwBLg+j1AA/9RPzKINl1lhxVEu2r+ZTTO8aetIsUzE5Qj6LMSBkoGYKKw==} 2749 | engines: {node: '>=14.16'} 2750 | dev: true 2751 | 2752 | /supports-color@5.5.0: 2753 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 2754 | engines: {node: '>=4'} 2755 | dependencies: 2756 | has-flag: 3.0.0 2757 | dev: true 2758 | 2759 | /supports-color@7.2.0: 2760 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2761 | engines: {node: '>=8'} 2762 | dependencies: 2763 | has-flag: 4.0.0 2764 | dev: true 2765 | 2766 | /text-table@0.2.0: 2767 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 2768 | dev: true 2769 | 2770 | /thenify-all@1.6.0: 2771 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 2772 | engines: {node: '>=0.8'} 2773 | dependencies: 2774 | thenify: 3.3.1 2775 | dev: true 2776 | 2777 | /thenify@3.3.1: 2778 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 2779 | dependencies: 2780 | any-promise: 1.3.0 2781 | dev: true 2782 | 2783 | /thread-stream@2.4.1: 2784 | resolution: {integrity: sha512-d/Ex2iWd1whipbT681JmTINKw0ZwOUBZm7+Gjs64DHuX34mmw8vJL2bFAaNacaW72zYiTJxSHi5abUuOi5nsfg==} 2785 | dependencies: 2786 | real-require: 0.2.0 2787 | dev: true 2788 | 2789 | /through@2.3.8: 2790 | resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} 2791 | dev: true 2792 | 2793 | /tmp@0.2.1: 2794 | resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} 2795 | engines: {node: '>=8.17.0'} 2796 | dependencies: 2797 | rimraf: 3.0.2 2798 | dev: true 2799 | 2800 | /tosource@1.0.0: 2801 | resolution: {integrity: sha512-N6g8eQ1eerw6Y1pBhdgkubWIiPFwXa2POSUrlL8jth5CyyEWNWzoGKRkO3CaO7Jx27hlJP54muB3btIAbx4MPg==} 2802 | engines: {node: '>=0.4.0'} 2803 | dev: true 2804 | 2805 | /tough-cookie@2.5.0: 2806 | resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} 2807 | engines: {node: '>=0.8'} 2808 | dependencies: 2809 | psl: 1.9.0 2810 | punycode: 2.3.1 2811 | dev: true 2812 | 2813 | /tunnel-agent@0.6.0: 2814 | resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} 2815 | dependencies: 2816 | safe-buffer: 5.2.1 2817 | dev: true 2818 | 2819 | /tweetnacl@0.14.5: 2820 | resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} 2821 | dev: true 2822 | 2823 | /type-check@0.4.0: 2824 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 2825 | engines: {node: '>= 0.8.0'} 2826 | dependencies: 2827 | prelude-ls: 1.2.1 2828 | dev: true 2829 | 2830 | /type-detect@4.0.8: 2831 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 2832 | engines: {node: '>=4'} 2833 | dev: true 2834 | 2835 | /type-fest@0.20.2: 2836 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 2837 | engines: {node: '>=10'} 2838 | dev: true 2839 | 2840 | /type-fest@1.4.0: 2841 | resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} 2842 | engines: {node: '>=10'} 2843 | dev: true 2844 | 2845 | /type-fest@2.19.0: 2846 | resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} 2847 | engines: {node: '>=12.20'} 2848 | dev: true 2849 | 2850 | /typedarray-to-buffer@3.1.5: 2851 | resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} 2852 | dependencies: 2853 | is-typedarray: 1.0.0 2854 | dev: true 2855 | 2856 | /typedarray@0.0.6: 2857 | resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} 2858 | dev: true 2859 | 2860 | /undici-types@5.26.5: 2861 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} 2862 | dev: true 2863 | 2864 | /unique-string@3.0.0: 2865 | resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} 2866 | engines: {node: '>=12'} 2867 | dependencies: 2868 | crypto-random-string: 4.0.0 2869 | dev: true 2870 | 2871 | /universalify@1.0.0: 2872 | resolution: {integrity: sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==} 2873 | engines: {node: '>= 10.0.0'} 2874 | dev: true 2875 | 2876 | /universalify@2.0.1: 2877 | resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} 2878 | engines: {node: '>= 10.0.0'} 2879 | dev: true 2880 | 2881 | /upath@2.0.1: 2882 | resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} 2883 | engines: {node: '>=4'} 2884 | dev: true 2885 | 2886 | /update-notifier@6.0.2: 2887 | resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} 2888 | engines: {node: '>=14.16'} 2889 | dependencies: 2890 | boxen: 7.1.1 2891 | chalk: 5.3.0 2892 | configstore: 6.0.0 2893 | has-yarn: 3.0.0 2894 | import-lazy: 4.0.0 2895 | is-ci: 3.0.1 2896 | is-installed-globally: 0.4.0 2897 | is-npm: 6.0.0 2898 | is-yarn-global: 0.4.1 2899 | latest-version: 7.0.0 2900 | pupa: 3.1.0 2901 | semver: 7.6.0 2902 | semver-diff: 4.0.0 2903 | xdg-basedir: 5.1.0 2904 | dev: true 2905 | 2906 | /uri-js@4.4.1: 2907 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 2908 | dependencies: 2909 | punycode: 2.3.1 2910 | dev: true 2911 | 2912 | /util-deprecate@1.0.2: 2913 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 2914 | dev: true 2915 | 2916 | /uuid@3.4.0: 2917 | resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} 2918 | deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. 2919 | hasBin: true 2920 | dev: true 2921 | 2922 | /uuid@8.3.2: 2923 | resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} 2924 | hasBin: true 2925 | dev: true 2926 | 2927 | /verror@1.10.0: 2928 | resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} 2929 | engines: {'0': node >=0.6.0} 2930 | dependencies: 2931 | assert-plus: 1.0.0 2932 | core-util-is: 1.0.2 2933 | extsprintf: 1.3.0 2934 | dev: true 2935 | 2936 | /watchpack@2.4.0: 2937 | resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} 2938 | engines: {node: '>=10.13.0'} 2939 | dependencies: 2940 | glob-to-regexp: 0.4.1 2941 | graceful-fs: 4.2.11 2942 | dev: true 2943 | 2944 | /wcwidth@1.0.1: 2945 | resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} 2946 | dependencies: 2947 | defaults: 1.0.4 2948 | dev: true 2949 | 2950 | /web-ext@7.11.0: 2951 | resolution: {integrity: sha512-EG6YXHITNDJB/h6Rc5FF08eMoN45sZPBBIIlEraBzxJ0RdJZ8Z3xvUUawbDwt+mowfv9X0XRWlLSwdWbRKgojg==} 2952 | engines: {node: '>=14.0.0', npm: '>=6.9.0'} 2953 | hasBin: true 2954 | dependencies: 2955 | '@babel/runtime': 7.21.0 2956 | '@devicefarmer/adbkit': 3.2.3 2957 | addons-linter: 6.21.0(node-fetch@3.3.1) 2958 | bunyan: 1.8.15 2959 | camelcase: 7.0.1 2960 | chrome-launcher: 0.15.1 2961 | debounce: 1.2.1 2962 | decamelize: 6.0.0 2963 | es6-error: 4.1.1 2964 | firefox-profile: 4.3.2 2965 | fs-extra: 11.1.0 2966 | fx-runner: 1.4.0 2967 | import-fresh: 3.3.0 2968 | jose: 4.13.1 2969 | mkdirp: 1.0.4 2970 | multimatch: 6.0.0 2971 | mz: 2.7.0 2972 | node-fetch: 3.3.1 2973 | node-notifier: 10.0.1 2974 | open: 8.4.2 2975 | parse-json: 6.0.2 2976 | promise-toolbox: 0.21.0 2977 | sign-addon: 5.3.0 2978 | source-map-support: 0.5.21 2979 | strip-bom: 5.0.0 2980 | strip-json-comments: 5.0.0 2981 | tmp: 0.2.1 2982 | update-notifier: 6.0.2 2983 | watchpack: 2.4.0 2984 | ws: 8.13.0 2985 | yargs: 17.7.1 2986 | zip-dir: 2.0.0 2987 | transitivePeerDependencies: 2988 | - body-parser 2989 | - bufferutil 2990 | - express 2991 | - safe-compare 2992 | - supports-color 2993 | - utf-8-validate 2994 | dev: true 2995 | 2996 | /web-streams-polyfill@3.3.3: 2997 | resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} 2998 | engines: {node: '>= 8'} 2999 | dev: true 3000 | 3001 | /when@3.7.7: 3002 | resolution: {integrity: sha512-9lFZp/KHoqH6bPKjbWqa+3Dg/K/r2v0X/3/G2x4DBGchVS2QX2VXL3cZV994WQVnTM1/PD71Az25nAzryEUugw==} 3003 | dev: true 3004 | 3005 | /which@1.2.4: 3006 | resolution: {integrity: sha512-zDRAqDSBudazdfM9zpiI30Fu9ve47htYXcGi3ln0wfKu2a7SmrT6F3VDoYONu//48V8Vz4TdCRNPjtvyRO3yBA==} 3007 | hasBin: true 3008 | dependencies: 3009 | is-absolute: 0.1.7 3010 | isexe: 1.1.2 3011 | dev: true 3012 | 3013 | /which@2.0.2: 3014 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 3015 | engines: {node: '>= 8'} 3016 | hasBin: true 3017 | dependencies: 3018 | isexe: 2.0.0 3019 | dev: true 3020 | 3021 | /widest-line@4.0.1: 3022 | resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} 3023 | engines: {node: '>=12'} 3024 | dependencies: 3025 | string-width: 5.1.2 3026 | dev: true 3027 | 3028 | /winreg@0.0.12: 3029 | resolution: {integrity: sha512-typ/+JRmi7RqP1NanzFULK36vczznSNN8kWVA9vIqXyv8GhghUlwhGp1Xj3Nms1FsPcNnsQrJOR10N58/nQ9hQ==} 3030 | dev: true 3031 | 3032 | /wrap-ansi@7.0.0: 3033 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 3034 | engines: {node: '>=10'} 3035 | dependencies: 3036 | ansi-styles: 4.3.0 3037 | string-width: 4.2.3 3038 | strip-ansi: 6.0.1 3039 | dev: true 3040 | 3041 | /wrap-ansi@8.1.0: 3042 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 3043 | engines: {node: '>=12'} 3044 | dependencies: 3045 | ansi-styles: 6.2.1 3046 | string-width: 5.1.2 3047 | strip-ansi: 7.1.0 3048 | dev: true 3049 | 3050 | /wrappy@1.0.2: 3051 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 3052 | dev: true 3053 | 3054 | /write-file-atomic@3.0.3: 3055 | resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} 3056 | dependencies: 3057 | imurmurhash: 0.1.4 3058 | is-typedarray: 1.0.0 3059 | signal-exit: 3.0.7 3060 | typedarray-to-buffer: 3.1.5 3061 | dev: true 3062 | 3063 | /ws@8.13.0: 3064 | resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} 3065 | engines: {node: '>=10.0.0'} 3066 | peerDependencies: 3067 | bufferutil: ^4.0.1 3068 | utf-8-validate: '>=5.0.2' 3069 | peerDependenciesMeta: 3070 | bufferutil: 3071 | optional: true 3072 | utf-8-validate: 3073 | optional: true 3074 | dev: true 3075 | 3076 | /xdg-basedir@5.1.0: 3077 | resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} 3078 | engines: {node: '>=12'} 3079 | dev: true 3080 | 3081 | /xml2js@0.5.0: 3082 | resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} 3083 | engines: {node: '>=4.0.0'} 3084 | dependencies: 3085 | sax: 1.3.0 3086 | xmlbuilder: 11.0.1 3087 | dev: true 3088 | 3089 | /xmlbuilder@11.0.1: 3090 | resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} 3091 | engines: {node: '>=4.0'} 3092 | dev: true 3093 | 3094 | /y18n@5.0.8: 3095 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 3096 | engines: {node: '>=10'} 3097 | dev: true 3098 | 3099 | /yallist@4.0.0: 3100 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 3101 | dev: true 3102 | 3103 | /yargs-parser@21.1.1: 3104 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 3105 | engines: {node: '>=12'} 3106 | dev: true 3107 | 3108 | /yargs@17.7.1: 3109 | resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==} 3110 | engines: {node: '>=12'} 3111 | dependencies: 3112 | cliui: 8.0.1 3113 | escalade: 3.1.2 3114 | get-caller-file: 2.0.5 3115 | require-directory: 2.1.1 3116 | string-width: 4.2.3 3117 | y18n: 5.0.8 3118 | yargs-parser: 21.1.1 3119 | dev: true 3120 | 3121 | /yargs@17.7.2: 3122 | resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} 3123 | engines: {node: '>=12'} 3124 | dependencies: 3125 | cliui: 8.0.1 3126 | escalade: 3.1.2 3127 | get-caller-file: 2.0.5 3128 | require-directory: 2.1.1 3129 | string-width: 4.2.3 3130 | y18n: 5.0.8 3131 | yargs-parser: 21.1.1 3132 | dev: true 3133 | 3134 | /yauzl@2.10.0: 3135 | resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} 3136 | dependencies: 3137 | buffer-crc32: 0.2.13 3138 | fd-slicer: 1.1.0 3139 | dev: true 3140 | 3141 | /yocto-queue@0.1.0: 3142 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 3143 | engines: {node: '>=10'} 3144 | dev: true 3145 | 3146 | /zip-dir@2.0.0: 3147 | resolution: {integrity: sha512-uhlsJZWz26FLYXOD6WVuq+fIcZ3aBPGo/cFdiLlv3KNwpa52IF3ISV8fLhQLiqVu5No3VhlqlgthN6gehil1Dg==} 3148 | dependencies: 3149 | async: 3.2.5 3150 | jszip: 3.10.1 3151 | dev: true 3152 | --------------------------------------------------------------------------------