├── .gitignore ├── LICENSE ├── README.md ├── assets └── entangler.jpg ├── example-anon.js ├── example.js ├── index.js ├── package-lock.json └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | # Gun 2 | radata 3 | 4 | # Logs 5 | logs 6 | *.log 7 | npm-debug.log* 8 | yarn-debug.log* 9 | yarn-error.log* 10 | lerna-debug.log* 11 | 12 | # Diagnostic reports (https://nodejs.org/api/report.html) 13 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 14 | 15 | # Runtime data 16 | pids 17 | *.pid 18 | *.seed 19 | *.pid.lock 20 | 21 | # Directory for instrumented libs generated by jscoverage/JSCover 22 | lib-cov 23 | 24 | # Coverage directory used by tools like istanbul 25 | coverage 26 | *.lcov 27 | 28 | # nyc test coverage 29 | .nyc_output 30 | 31 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 32 | .grunt 33 | 34 | # Bower dependency directory (https://bower.io/) 35 | bower_components 36 | 37 | # node-waf configuration 38 | .lock-wscript 39 | 40 | # Compiled binary addons (https://nodejs.org/api/addons.html) 41 | build/Release 42 | 43 | # Dependency directories 44 | node_modules/ 45 | jspm_packages/ 46 | 47 | # TypeScript v1 declaration files 48 | typings/ 49 | 50 | # TypeScript cache 51 | *.tsbuildinfo 52 | 53 | # Optional npm cache directory 54 | .npm 55 | 56 | # Optional eslint cache 57 | .eslintcache 58 | 59 | # Microbundle cache 60 | .rpt2_cache/ 61 | .rts2_cache_cjs/ 62 | .rts2_cache_es/ 63 | .rts2_cache_umd/ 64 | 65 | # Optional REPL history 66 | .node_repl_history 67 | 68 | # Output of 'npm pack' 69 | *.tgz 70 | 71 | # Yarn Integrity file 72 | .yarn-integrity 73 | 74 | # dotenv environment variables file 75 | .env 76 | .env.test 77 | 78 | # parcel-bundler cache (https://parceljs.org/) 79 | .cache 80 | 81 | # Next.js build output 82 | .next 83 | 84 | # Nuxt.js build / generate output 85 | .nuxt 86 | dist 87 | 88 | # Gatsby files 89 | .cache/ 90 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 91 | # https://nextjs.org/blog/next-9-1#public-directory-support 92 | # public 93 | 94 | # vuepress build output 95 | .vuepress/dist 96 | 97 | # Serverless directories 98 | .serverless/ 99 | 100 | # FuseBox cache 101 | .fusebox/ 102 | 103 | # DynamoDB Local files 104 | .dynamodb/ 105 | 106 | # TernJS port file 107 | .tern-port 108 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Daniel Raeder 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Entangler 2 | A time-based one-time password (TOTP) generator and authenticator for Gun DB 3 | 4 | Entangler generates a 6 digit passcode every 30 seconds. It generates an `otpauth://` URI and QR codes (both console and image) that can be linked with popular authenticator apps like Microsoft Authenticator, Google Authenticator, LastPass--and many others. But it is not limited to big tech authenticator apps. 5 | 6 | ![Entangler](assets/entangler.jpg) 7 | 8 | ## About 9 | ### How it works 10 | Entangler generates a new token every 0 and 30 seconds of of every passing minute. When a peer passes in the correct token for that 30 second window, entangler will respond with the source instance's Gun SEA pair. The returned SEA pair may be used to sync Gun user accounts, reset passwords, or other purposes that might depend on passing SEA data over the network to another peer. 11 | 12 | Entangler uses [Bugoff](https://github.com/draeder/bugoff) (an extension built on [Bugout](https://github.com/chr15m/bugout)) which also uses Gun's SEA suite to securely exchange ephemeral messages between peers without the need to store data in the Gun DB graph. 13 | 14 | ## Usage 15 | ### Install 16 | ```js 17 | > npm i entangler 18 | ``` 19 | 20 | ## Examples 21 | ### Initiator Peer Instance 22 | This is an example of creating and authenticating a Gun user, then creating an Entangler instance. The insance does not necessarily need to be an existing user. Engangler will accept any SEA pair, for example one created with `Gun.SEA.pair()` 23 | 24 | ```js 25 | const Gun = require('gun') 26 | require('entangler') 27 | 28 | let gun = new Gun() 29 | let user = gun.user() 30 | 31 | // Create new Gun user or authenticate existing one 32 | let username = 'A secure username123' // A secure username 33 | let password = 'A secure password123' // A secure password 34 | 35 | user.create(username, password, cb => { 36 | user.auth(username, password) 37 | }) 38 | 39 | gun.on('auth', async ack => { 40 | console.log('Authenticated') 41 | 42 | // Create an entangler instance with an SEA pair 43 | // The username and password here does not need, and probably shouldn't, match a Gun user's username and password! 44 | gun.entangler(ack.sea, {user: username, secret: password}) 45 | 46 | // Return the OTP auth URI QR code image 47 | console.log(await gun.entangler.QR.image()) 48 | 49 | // Print the OTP auth URI QR code to the terminal in ASCII 50 | console.log(await gun.entangler.QR.terminal()) 51 | 52 | // Get the current token 53 | console.log(await gun.entangler.token()) 54 | 55 | // Get tokens as they are generated 56 | gun.entangler.tokens(token => { 57 | console.log(token) 58 | }) 59 | 60 | }) 61 | ``` 62 | 63 | ### Anonymous Peer 64 | This is a peer that will be attempting to authenticate to the initiating peer's Entangler instance with the TOTP passcode. 65 | 66 | ```js 67 | const Gun = require('gun') 68 | const prompt = require('readline-sync') 69 | require('entangler') 70 | 71 | let gun = new Gun() 72 | 73 | // Look up user by alias 74 | gun.entangler('~@A secure username123') 75 | 76 | // Look up user by pub key (no prepending '~') 77 | gun.entangler(pubkey) 78 | 79 | // Prompt for a passcode 80 | let passcode = prompt.question('Enter your pin + token: ') 81 | 82 | // Verify the passed passcode 83 | gun.entangler.verify(passcode) 84 | 85 | // If the passcode is accepted, the initiator's SEA is returned and can be used to log the user in 86 | gun.entangler.once('authorized', (sea)=>{ 87 | gun.user().auth(sea) 88 | }) 89 | 90 | // The user has been logged in successfully 91 | gun.on('auth', ack => { 92 | console.log('Authenticated!!') 93 | }) 94 | 95 | // If the passcode is rejected, handle the error events 96 | gun.entangler.on('error', err => { 97 | if(err) console.log(err) 98 | if(err.code === 401){ 99 | let passcode = prompt.question('Pleae try again: ') 100 | gun.entangler.verify(passcode) 101 | } 102 | }) 103 | ``` 104 | 105 | ## API 106 | ### Events 107 | #### `authorized` 108 | The peer successfully authenticated the TOTP passcode, so the initiating peer's SEA is passed as a callback to this event. 109 | 110 | #### `error` 111 | There was an error authenticating the TOTP passcode. 112 | 113 | **Error codes** 114 | - Incorrect passcode: `{code: 401, text: 'Incorrect passcode'}` 115 | - Maximum number of attempts reached: `{code: 403, text: 'Maximum number of attempts reached'}` 116 | - Attempts timed out: `{code: 408, text: 'Attempts timed out'}` 117 | 118 | ### Methods 119 | #### `gun.entangler((sea, [opts]) || (alias || pubkey))` 120 | For an Entangler initiator, creates an Entangler instance for the passed in `Gun.SEA.pair` and optional `opts`. 121 | 122 | **Example:** `gun.entangler(ack.sea, {user: username, secret: password})` 123 | 124 | For an Entangler peer, connects to an Engangler instance and attempts authorization with that instance and the TOTP passoce. 125 | 126 | **Example (by alias):** `gun.entangler(~@alias)` 127 | **Example (by pubkey):** `gun.entangler(pubkey)` 128 | > The pubkey should not start with a preceding `~` 129 | 130 | #### `gun.entangler.QR.image()` 131 | Return the OTP auth URI QR code image. This is an asynchronous call and must be used with `await`. 132 | 133 | **Example:** `console.log(await gun.entangler.QR.image())` 134 | 135 | #### `gun.entangler.QR.terminal()` 136 | Print the OTP auth URI QR code to the console/terminal using ascii output. This is an asynchronous call and must be used with `await`. 137 | 138 | **Example:** `console.log(await gun.entangler.QR.terminal())` 139 | 140 | #### `gun.entangler.token()` 141 | Return the current authenticator token. This may be called at any time and will return the token for the current time window. This is an asynchronous call and must be used with `await`. 142 | 143 | **Example:** `console.log(await gun.entangler.token())` 144 | 145 | #### `gun.entangler.tokens(callback)` 146 | Return tokens as they are generated. This method will return a new token every 0 and 30 seconds of every minute. 147 | 148 | **Example:** 149 | ```js 150 | gun.entangler.tokens(token => { 151 | console.log(token) 152 | }) 153 | ``` 154 | 155 | ### Optional parameters `opts` 156 | Entangler's optional `opts` object can be tailored to aid in securing Entangler further. 157 | 158 | #### `opts.address = [string]` default = Gun.SEA.pair().pub 159 | `opts.address` is an optional string that may be passed in as an identifier for peers to swarm around and connect to each other. It is converted to a SHA256 hash and announced to the Webtorrent network via Bugoff, which further hashes that hash to SHA256. A SHA256 hash of a SHA256 hash! 160 | 161 | #### `opts.issuer = [string]` default = 'Entangler Authenticator' 162 | A TOTP issuer is used to describe the TOTP instance to authenticator apps. 163 | 164 | #### `opts.user = [string]` default = randomly generated Base32 string 165 | You may pass in your own string for `opts.user`. This is the TOTP user ID, which gets converted to a Base32 encoded SHA256 hash of the passed in string. 166 | 167 | #### `opts.secret = [string]` default = randomly generated Base32 string 168 | You may pass in your own string for `opts.password`. This is the TOTP secret, which gets converted to a Base32 encoded SHA256 hash of the passed in string. 169 | 170 | #### `opts.pin = [string || number]` default = '' 171 | You may supply a pin, which can be either a string or a number, as an optional additional security measure to protect the Entangler instance. 172 | 173 | #### `opts.timeout = [msec]` default = 5 minutes (1000 * 60 * 5 msec ) 174 | The amount of time in milliseconds since this peer's first passcode entry attempt. Once this timeout has been met or exceeded, this peer can no longer make attempts. 175 | 176 | > Note: A peeer may try again by establishing a new connection. 177 | 178 | #### `opts.maxAttempts = [number]` default = 10 179 | The maximum attempts for a peer to enter incorrect passcodes. 180 | -------------------------------------------------------------------------------- /assets/entangler.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/draeder/entangler/15e0f6fc2923fc35b78b890ec9922d84e7015e57/assets/entangler.jpg -------------------------------------------------------------------------------- /example-anon.js: -------------------------------------------------------------------------------- 1 | const Gun = require('gun') 2 | const prompt = require('readline-sync') 3 | require('./index') 4 | 5 | let gun = new Gun() 6 | 7 | // Look up user by alias 8 | gun.entangler('~@A secure username123') 9 | 10 | // Look up user by pub key (no prepending '~') 11 | //gun.entangler(pubkey) 12 | 13 | let passcode = prompt.question('Enter your pin + token: ') 14 | 15 | gun.entangler.verify(passcode) 16 | 17 | gun.entangler.once('authorized', (sea)=>{ 18 | gun.user().auth(sea) 19 | }) 20 | 21 | gun.on('auth', ack => { 22 | console.log('Authenticated!!') 23 | }) 24 | 25 | gun.entangler.on('error', err => { 26 | if(err) console.log(err) 27 | if(err.code === 401){ 28 | let passcode = prompt.question('Pleae try again: ') 29 | gun.entangler.verify(passcode) 30 | } 31 | }) -------------------------------------------------------------------------------- /example.js: -------------------------------------------------------------------------------- 1 | const Gun = require('gun') 2 | require('./') 3 | 4 | let gun = new Gun() 5 | let user = gun.user() 6 | 7 | // create new user or authenticate existing one 8 | let username = 'A secure username123' // A secure username 9 | let password = 'A secure password123' // A secure password 10 | 11 | user.create(username, password, cb => { 12 | user.auth(username, password) 13 | }) 14 | 15 | gun.on('auth', async ack => { 16 | console.log('Authenticated') 17 | 18 | // Create an Entanglement instance 19 | gun.entangler(ack.sea, {user: username, secret: password}) 20 | 21 | // Return the whole Entanglement object 22 | console.log(await gun.entangler) 23 | 24 | // Return the OTP auth URI QR code image 25 | //console.log(await gun.entangler.QR.image()) 26 | 27 | // Print the OTP auth URI QR code to the terminal in ASCII 28 | console.log(await gun.entangler.QR.terminal()) 29 | 30 | // Get the current token 31 | console.log(await gun.entangler.token()) 32 | 33 | // Get tokens as they are generated 34 | gun.entangler.tokens(token => { 35 | console.log(token) 36 | }) 37 | 38 | }) 39 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const crypto = require('crypto') 2 | var EventEmitter = require('events').EventEmitter 3 | const base32 = require('hi-base32') 4 | const qrcode = require('qrcode') 5 | const { authenticator } = require('@otplib/preset-default') 6 | const Gun = require('gun') 7 | const { SEA } = require('gun') 8 | const Bugoff = require('bugoff') 9 | 10 | Gun.chain.entangler = async function(sea, opts) { 11 | const emitter = new EventEmitter() 12 | 13 | this.entangler = { 14 | attempts: {}, 15 | on: emitter.on.bind(emitter), 16 | once: emitter.on.bind(emitter), 17 | emit: emitter.emit.bind(emitter) 18 | } 19 | 20 | let anon = true 21 | let instanceSEA 22 | 23 | this.entangler.verify = async (passcode) => { 24 | this.entangler.passcode = base64(passcode) 25 | } 26 | 27 | if(typeof sea === 'string'){ 28 | anon = true 29 | let pubkey = this.get(sea).once((data, key)=>{}).then(data => { 30 | try { 31 | return Object.keys(data)[1] 32 | } 33 | catch (err){ 34 | return new Promise((resolve, reject) => {this.user(sea).once((data, key) => resolve(key))}) 35 | } 36 | }) 37 | pubkey = await pubkey 38 | pubkey = pubkey.split('~')[1] 39 | this.entangler.address = sha(pubkey) 40 | instanceSEA = await SEA.pair() 41 | } else { 42 | anon = false 43 | } 44 | 45 | if(anon === false) { 46 | this.entangler = { 47 | on: emitter.on.bind(emitter), 48 | once: emitter.on.bind(emitter), 49 | emit: emitter.emit.bind(emitter), 50 | address: opts && opts.address || sha(sea.pub), 51 | issuer: opts && opts.issuer || 'Entanglement Authenticator', 52 | user: opts && opts.user ? base32.encode(sha(opts.user)) : authenticator.generateSecret(), 53 | secret: opts && opts.secret ? base32.encode(sha(opts.secret)) : authenticator.generateSecret(), 54 | pin: opts && opts.pin || '', 55 | timeout: opts && opts.timeout || 1000 * 60 * 5, 56 | maxAttempts: opts && opts.maxAttempts || 10, 57 | attempts: {}, 58 | period: opts && opts.period || 30, 59 | digits: opts && opts.digits || 6, 60 | algorithm: opts && opts.algorithm || 'SHA1', 61 | uri: `otpauth://totp/${encodeURI(this.entangler.issuer)}:${this.entangler.user}?secret=${this.entangler.secret}&period=${this.entangler.period||30}&digits=${this.entangler.digits||6}&algorithm=${this.entangler.algorithm||'SHA256'}&issuer=${encodeURI(this.entangler.issuer)}`, 62 | QR: {} 63 | } 64 | 65 | this.entangler.uri = `otpauth://totp/${encodeURI(this.entangler.issuer)}:${this.entangler.user}?secret=${this.entangler.secret}&period=${this.entangler.period||30}&digits=${this.entangler.digits||6}&algorithm=${this.entangler.algorithm||'SHA256'}&issuer=${encodeURI(this.entangler.issuer)}` 66 | 67 | this.entangler.QR.terminal = async () => { 68 | try { 69 | return await qrcode.toString(this.entangler.uri,{type:'terminal', small: true}) 70 | } 71 | catch (err){ 72 | throw new Error(err) 73 | } 74 | } 75 | this.entangler.QR.image = async () => { 76 | try { 77 | return await qrcode.toDataURL(this.entangler.uri) 78 | } catch (err) { 79 | throw new Error(err) 80 | } 81 | } 82 | instanceSEA = sea 83 | } 84 | 85 | let bugoff = new Bugoff(this.entangler.address) 86 | bugoff.SEA(instanceSEA) 87 | 88 | bugoff.register('accepted', async (address, sea, cb) =>{ 89 | this.entangler.emit('authorized', sea) 90 | }) 91 | 92 | bugoff.register('rejected', async (address, err, cb) =>{ 93 | this.entangler.emit('error', err) 94 | if(err.code === 401) bugoff.rpc(address, 'challenge', this.entangler.passcode) 95 | else { 96 | cb(bugoff.destroy()) 97 | if(process) process.exit() 98 | else debugger 99 | } 100 | }) 101 | 102 | bugoff.register('challenge', async (address, verify, cb) =>{ 103 | if(!this.entangler.attempts[address]) { 104 | this.entangler.attempts[address] = {count: 1, first: new Date().getTime()} 105 | } 106 | 107 | let t = new Date().getTime() - this.entangler.attempts[address].first 108 | 109 | if(t >= this.entangler.timeout){ 110 | bugoff.rpc(address, 'rejected', {code: 408, text: 'Attempts timed out'}) 111 | } else 112 | if(this.entangler.attempts[address].count >= this.entangler.maxAttempts){ 113 | bugoff.rpc(address, 'rejected', {code: 403, text: 'Maximum number of attempts reached'}) 114 | } else 115 | if(anon === false){ 116 | let check = base64(verify) 117 | let token = await this.entangler.token() 118 | let pin = this.entangler.pin.toString() 119 | if(check.lastIndexOf(token.length + pin.length === check.length && await this.entangler.token()) >= 0 && check.includes(pin)){ 120 | bugoff.rpc(address, 'accepted', sea) 121 | this.entangler.passcode = undefined 122 | } else { 123 | bugoff.rpc(address, 'rejected', {code: 401, text: 'Incorrect passcode'}) 124 | this.entangler.attempts[address].count++ 125 | this.entangler.passcode = undefined 126 | } 127 | } 128 | }) 129 | 130 | bugoff.on('seen', address => { 131 | if(this.entangler.passcode) bugoff.rpc(address, 'challenge', this.entangler.passcode) 132 | }) 133 | 134 | this.entangler.token = async () => authenticator.generate(this.entangler.secret) 135 | 136 | let secret = this.entangler.secret 137 | this.entangler.tokens = async function(cb) { 138 | const interval = setInterval(() => { 139 | let sec = new Date().getSeconds() 140 | if (sec === 0 || sec === 30) { 141 | cb(authenticator.generate(secret)) 142 | } 143 | }, 1000) 144 | } 145 | 146 | function sha(input){ 147 | return crypto.createHash('sha256').update(JSON.stringify(input)).digest('hex') 148 | } 149 | 150 | function base64(string){ 151 | let regx = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/; 152 | if(regx.test(string) === false){ 153 | return new Buffer.from(string).toString('base64') 154 | } else { 155 | let data = new Buffer.from(string, 'base64') 156 | return new Buffer.from(data).toString() 157 | } 158 | } 159 | 160 | return this 161 | } -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "entanglement", 3 | "version": "0.1.8", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@otplib/core": { 8 | "version": "12.0.1", 9 | "resolved": "https://registry.npmjs.org/@otplib/core/-/core-12.0.1.tgz", 10 | "integrity": "sha512-4sGntwbA/AC+SbPhbsziRiD+jNDdIzsZ3JUyfZwjtKyc/wufl1pnSIaG4Uqx8ymPagujub0o92kgBnB89cuAMA==" 11 | }, 12 | "@otplib/plugin-crypto": { 13 | "version": "12.0.1", 14 | "resolved": "https://registry.npmjs.org/@otplib/plugin-crypto/-/plugin-crypto-12.0.1.tgz", 15 | "integrity": "sha512-qPuhN3QrT7ZZLcLCyKOSNhuijUi9G5guMRVrxq63r9YNOxxQjPm59gVxLM+7xGnHnM6cimY57tuKsjK7y9LM1g==", 16 | "requires": { 17 | "@otplib/core": "^12.0.1" 18 | } 19 | }, 20 | "@otplib/plugin-thirty-two": { 21 | "version": "12.0.1", 22 | "resolved": "https://registry.npmjs.org/@otplib/plugin-thirty-two/-/plugin-thirty-two-12.0.1.tgz", 23 | "integrity": "sha512-MtT+uqRso909UkbrrYpJ6XFjj9D+x2Py7KjTO9JDPhL0bJUYVu5kFP4TFZW4NFAywrAtFRxOVY261u0qwb93gA==", 24 | "requires": { 25 | "@otplib/core": "^12.0.1", 26 | "thirty-two": "^1.0.2" 27 | } 28 | }, 29 | "@otplib/preset-default": { 30 | "version": "12.0.1", 31 | "resolved": "https://registry.npmjs.org/@otplib/preset-default/-/preset-default-12.0.1.tgz", 32 | "integrity": "sha512-xf1v9oOJRyXfluBhMdpOkr+bsE+Irt+0D5uHtvg6x1eosfmHCsCC6ej/m7FXiWqdo0+ZUI6xSKDhJwc8yfiOPQ==", 33 | "requires": { 34 | "@otplib/core": "^12.0.1", 35 | "@otplib/plugin-crypto": "^12.0.1", 36 | "@otplib/plugin-thirty-two": "^12.0.1" 37 | } 38 | }, 39 | "@peculiar/asn1-schema": { 40 | "version": "2.0.44", 41 | "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.0.44.tgz", 42 | "integrity": "sha512-uaCnjQ9A9WwQSMuDJcNOCYEPXTahgKbFMvI7eMOMd8lXgx0J1eU7F3BoMsK5PFxa3dVUxjSQbaOjfgGoeHGgoQ==", 43 | "optional": true, 44 | "requires": { 45 | "@types/asn1js": "^2.0.2", 46 | "asn1js": "^2.1.1", 47 | "pvtsutils": "^1.2.1", 48 | "tslib": "^2.3.0" 49 | } 50 | }, 51 | "@peculiar/json-schema": { 52 | "version": "1.1.12", 53 | "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz", 54 | "integrity": "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==", 55 | "optional": true, 56 | "requires": { 57 | "tslib": "^2.0.0" 58 | } 59 | }, 60 | "@peculiar/webcrypto": { 61 | "version": "1.2.3", 62 | "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.2.3.tgz", 63 | "integrity": "sha512-q7wDfZy3k/tpnsYB23/MyyDkjn6IdHh8w+xwoVMS5cu6CjVoFzngXDZEOOuSE4zus2yO6ciQhhHxd4XkLpwVnQ==", 64 | "optional": true, 65 | "requires": { 66 | "@peculiar/asn1-schema": "^2.0.44", 67 | "@peculiar/json-schema": "^1.1.12", 68 | "pvtsutils": "^1.2.1", 69 | "tslib": "^2.3.1", 70 | "webcrypto-core": "^1.4.0" 71 | } 72 | }, 73 | "@types/asn1js": { 74 | "version": "2.0.2", 75 | "resolved": "https://registry.npmjs.org/@types/asn1js/-/asn1js-2.0.2.tgz", 76 | "integrity": "sha512-t4YHCgtD+ERvH0FyxvNlYwJ2ezhqw7t+Ygh4urQ7dJER8i185JPv6oIM3ey5YQmGN6Zp9EMbpohkjZi9t3UxwA==", 77 | "optional": true 78 | }, 79 | "@webtorrent/http-node": { 80 | "version": "1.3.0", 81 | "resolved": "https://registry.npmjs.org/@webtorrent/http-node/-/http-node-1.3.0.tgz", 82 | "integrity": "sha512-GWZQKroPES4z91Ijx6zsOsb7+USOxjy66s8AoTWg0HiBBdfnbtf9aeh3Uav0MgYn4BL8Q7tVSUpd0gGpngKGEQ==", 83 | "requires": { 84 | "freelist": "^1.0.3", 85 | "http-parser-js": "^0.4.3" 86 | } 87 | }, 88 | "addr-to-ip-port": { 89 | "version": "1.5.4", 90 | "resolved": "https://registry.npmjs.org/addr-to-ip-port/-/addr-to-ip-port-1.5.4.tgz", 91 | "integrity": "sha512-ByxmJgv8vjmDcl3IDToxL2yrWFrRtFpZAToY0f46XFXl8zS081t7El5MXIodwm7RC6DhHBRoOSMLFSPKCtHukg==" 92 | }, 93 | "addressparser": { 94 | "version": "0.3.2", 95 | "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-0.3.2.tgz", 96 | "integrity": "sha1-WYc/Nej89sc2HBAjkmHXbhU0i7I=", 97 | "optional": true 98 | }, 99 | "ansi-regex": { 100 | "version": "5.0.1", 101 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 102 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 103 | }, 104 | "ansi-styles": { 105 | "version": "4.3.0", 106 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 107 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 108 | "requires": { 109 | "color-convert": "^2.0.1" 110 | } 111 | }, 112 | "array.prototype.every": { 113 | "version": "1.1.3", 114 | "resolved": "https://registry.npmjs.org/array.prototype.every/-/array.prototype.every-1.1.3.tgz", 115 | "integrity": "sha512-vWnriJI//SOMOWtXbU/VXhJ/InfnNHPF6BLKn5WfY8xXy+NWql0fUy20GO3sdqBhCAO+qw8S/E5nJiZX+QFdCA==", 116 | "requires": { 117 | "call-bind": "^1.0.2", 118 | "define-properties": "^1.1.3", 119 | "es-abstract": "^1.19.0", 120 | "is-string": "^1.0.7" 121 | } 122 | }, 123 | "asn1js": { 124 | "version": "2.2.0", 125 | "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-2.2.0.tgz", 126 | "integrity": "sha512-oagLNqpfNv7CvmyMoexMDNyVDSiq1rya0AEUgcLlNHdHgNl6U/hi8xY370n5y+ZIFEXOx0J4B1qF2NDjMRxklA==", 127 | "optional": true, 128 | "requires": { 129 | "pvutils": "^1.0.17" 130 | } 131 | }, 132 | "available-typed-arrays": { 133 | "version": "1.0.5", 134 | "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", 135 | "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" 136 | }, 137 | "balanced-match": { 138 | "version": "1.0.2", 139 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 140 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 141 | }, 142 | "base-x": { 143 | "version": "3.0.9", 144 | "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", 145 | "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", 146 | "requires": { 147 | "safe-buffer": "^5.0.1" 148 | } 149 | }, 150 | "base64-js": { 151 | "version": "1.5.1", 152 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 153 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" 154 | }, 155 | "bencode": { 156 | "version": "2.0.2", 157 | "resolved": "https://registry.npmjs.org/bencode/-/bencode-2.0.2.tgz", 158 | "integrity": "sha512-0ilVjnE2diLdbec/3KN14SP0KE85wh8v/FceNRMbAB2ioc3yTj9tgqdoK9tFEH++TZ10JreTS29qTwg7+SpTiQ==" 159 | }, 160 | "bep53-range": { 161 | "version": "1.1.1", 162 | "resolved": "https://registry.npmjs.org/bep53-range/-/bep53-range-1.1.1.tgz", 163 | "integrity": "sha512-ct6s33iiwRCUPp9KXnJ4QMWDgHIgaw36caK/5XEQ9L8dCzSQlJt1Vk6VmHh1VD4AlGCAI4C2zmtfItifBBPrhQ==" 164 | }, 165 | "binary-search": { 166 | "version": "1.3.6", 167 | "resolved": "https://registry.npmjs.org/binary-search/-/binary-search-1.3.6.tgz", 168 | "integrity": "sha512-nbE1WxOTTrUWIfsfZ4aHGYu5DOuNkbxGokjV6Z2kxfJK3uaAb8zNK1muzOeipoLHZjInT4Br88BHpzevc681xA==" 169 | }, 170 | "bitfield": { 171 | "version": "4.0.0", 172 | "resolved": "https://registry.npmjs.org/bitfield/-/bitfield-4.0.0.tgz", 173 | "integrity": "sha512-jtuSG9CQr5yoHFuvhgf50+DH8Aezl3C/mMSfqdG4DqP7Kqe34uBUtCEHPN9oWaldTm96/i7y5e778SnM5ES4rw==" 174 | }, 175 | "bittorrent-dht": { 176 | "version": "10.0.2", 177 | "resolved": "https://registry.npmjs.org/bittorrent-dht/-/bittorrent-dht-10.0.2.tgz", 178 | "integrity": "sha512-V7+V6ZCfxHtn/wvaRuUvxucJhocb8StgKurQJUdHboVjNGWjALVG+VAYuZqz5iN+/j4vmd4GwqjR1ixYCMkyVA==", 179 | "requires": { 180 | "bencode": "^2.0.0", 181 | "debug": "^4.1.1", 182 | "k-bucket": "^5.0.0", 183 | "k-rpc": "^5.0.0", 184 | "last-one-wins": "^1.0.4", 185 | "lru": "^3.1.0", 186 | "randombytes": "^2.0.5", 187 | "record-cache": "^1.0.2", 188 | "simple-sha1": "^3.1.0" 189 | }, 190 | "dependencies": { 191 | "debug": { 192 | "version": "4.3.3", 193 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 194 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 195 | "requires": { 196 | "ms": "2.1.2" 197 | } 198 | }, 199 | "ms": { 200 | "version": "2.1.2", 201 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 202 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 203 | } 204 | } 205 | }, 206 | "bittorrent-lsd": { 207 | "version": "1.1.1", 208 | "resolved": "https://registry.npmjs.org/bittorrent-lsd/-/bittorrent-lsd-1.1.1.tgz", 209 | "integrity": "sha512-dWxU2Mr2lU6jzIKgZrTsXgeXDCIcYpR1b6f2n89fn7juwPAYbNU04OgWjcQPLiNliY0filsX5CQAWntVErpk+Q==", 210 | "requires": { 211 | "chrome-dgram": "^3.0.6", 212 | "debug": "^4.2.0" 213 | }, 214 | "dependencies": { 215 | "debug": { 216 | "version": "4.3.3", 217 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 218 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 219 | "requires": { 220 | "ms": "2.1.2" 221 | } 222 | }, 223 | "ms": { 224 | "version": "2.1.2", 225 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 226 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 227 | } 228 | } 229 | }, 230 | "bittorrent-peerid": { 231 | "version": "1.3.4", 232 | "resolved": "https://registry.npmjs.org/bittorrent-peerid/-/bittorrent-peerid-1.3.4.tgz", 233 | "integrity": "sha512-Xzk1FJFHmsc9H8IKFtDUkfAZIT1HW8r6UqajfZBBxWmpA1v7FsPO8xPFtnFzCqcXlPN3yi8dDmlqZCemyB7P8w==" 234 | }, 235 | "bittorrent-protocol": { 236 | "version": "3.4.3", 237 | "resolved": "https://registry.npmjs.org/bittorrent-protocol/-/bittorrent-protocol-3.4.3.tgz", 238 | "integrity": "sha512-FNQMWrVptQlOxT5+s4M8QO6yWv67WwquUwpg+0dMcPj2UjwGt+XP3U/jVPg16PxxOBz0N371L+Qe7H2LdALC9Q==", 239 | "requires": { 240 | "bencode": "^2.0.1", 241 | "bitfield": "^4.0.0", 242 | "debug": "^4.3.1", 243 | "randombytes": "^2.1.0", 244 | "rc4": "^0.1.5", 245 | "readable-stream": "^3.6.0", 246 | "simple-sha1": "^3.1.0", 247 | "speedometer": "^1.1.0", 248 | "unordered-array-remove": "^1.0.2" 249 | }, 250 | "dependencies": { 251 | "debug": { 252 | "version": "4.3.3", 253 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 254 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 255 | "requires": { 256 | "ms": "2.1.2" 257 | } 258 | }, 259 | "ms": { 260 | "version": "2.1.2", 261 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 262 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 263 | } 264 | } 265 | }, 266 | "bittorrent-tracker": { 267 | "version": "9.18.3", 268 | "resolved": "https://registry.npmjs.org/bittorrent-tracker/-/bittorrent-tracker-9.18.3.tgz", 269 | "integrity": "sha512-IhLKp8wUgA7WXTfJggw/HB8qxhwlLNDWRraUFxXRHTgOQXcMiKITGcErzvC7B7mMOcUnk0wiUsZdaaQ8lzz3LQ==", 270 | "requires": { 271 | "bencode": "^2.0.1", 272 | "bittorrent-peerid": "^1.3.3", 273 | "bn.js": "^5.2.0", 274 | "bufferutil": "^4.0.3", 275 | "chrome-dgram": "^3.0.6", 276 | "clone": "^2.0.0", 277 | "compact2string": "^1.4.1", 278 | "debug": "^4.1.1", 279 | "ip": "^1.1.5", 280 | "lru": "^3.1.0", 281 | "minimist": "^1.2.5", 282 | "once": "^1.4.0", 283 | "queue-microtask": "^1.2.3", 284 | "random-iterate": "^1.0.1", 285 | "randombytes": "^2.1.0", 286 | "run-parallel": "^1.2.0", 287 | "run-series": "^1.1.9", 288 | "simple-get": "^4.0.0", 289 | "simple-peer": "^9.11.0", 290 | "simple-websocket": "^9.1.0", 291 | "socks": "^2.0.0", 292 | "string2compact": "^1.3.0", 293 | "unordered-array-remove": "^1.0.2", 294 | "utf-8-validate": "^5.0.5", 295 | "ws": "^7.4.5" 296 | }, 297 | "dependencies": { 298 | "debug": { 299 | "version": "4.3.3", 300 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 301 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 302 | "requires": { 303 | "ms": "2.1.2" 304 | } 305 | }, 306 | "ms": { 307 | "version": "2.1.2", 308 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 309 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 310 | } 311 | } 312 | }, 313 | "blob-to-buffer": { 314 | "version": "1.2.9", 315 | "resolved": "https://registry.npmjs.org/blob-to-buffer/-/blob-to-buffer-1.2.9.tgz", 316 | "integrity": "sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA==" 317 | }, 318 | "block-stream2": { 319 | "version": "2.1.0", 320 | "resolved": "https://registry.npmjs.org/block-stream2/-/block-stream2-2.1.0.tgz", 321 | "integrity": "sha512-suhjmLI57Ewpmq00qaygS8UgEq2ly2PCItenIyhMqVjo4t4pGzqMvfgJuX8iWTeSDdfSSqS6j38fL4ToNL7Pfg==", 322 | "requires": { 323 | "readable-stream": "^3.4.0" 324 | } 325 | }, 326 | "bn.js": { 327 | "version": "5.2.0", 328 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", 329 | "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" 330 | }, 331 | "brace-expansion": { 332 | "version": "1.1.11", 333 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 334 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 335 | "requires": { 336 | "balanced-match": "^1.0.0", 337 | "concat-map": "0.0.1" 338 | } 339 | }, 340 | "browserify-package-json": { 341 | "version": "1.0.1", 342 | "resolved": "https://registry.npmjs.org/browserify-package-json/-/browserify-package-json-1.0.1.tgz", 343 | "integrity": "sha1-mN3oqlxWH9bT/km7qhArdLOW/eo=" 344 | }, 345 | "bs58": { 346 | "version": "4.0.1", 347 | "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", 348 | "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", 349 | "requires": { 350 | "base-x": "^3.0.2" 351 | } 352 | }, 353 | "bs58check": { 354 | "version": "2.1.2", 355 | "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", 356 | "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", 357 | "requires": { 358 | "bs58": "^4.0.0", 359 | "create-hash": "^1.1.0", 360 | "safe-buffer": "^5.1.2" 361 | } 362 | }, 363 | "buffer": { 364 | "version": "6.0.3", 365 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", 366 | "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", 367 | "requires": { 368 | "base64-js": "^1.3.1", 369 | "ieee754": "^1.2.1" 370 | } 371 | }, 372 | "buffer-alloc": { 373 | "version": "1.2.0", 374 | "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", 375 | "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", 376 | "requires": { 377 | "buffer-alloc-unsafe": "^1.1.0", 378 | "buffer-fill": "^1.0.0" 379 | } 380 | }, 381 | "buffer-alloc-unsafe": { 382 | "version": "1.1.0", 383 | "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", 384 | "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" 385 | }, 386 | "buffer-fill": { 387 | "version": "1.0.0", 388 | "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", 389 | "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" 390 | }, 391 | "bufferutil": { 392 | "version": "4.0.6", 393 | "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", 394 | "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", 395 | "optional": true, 396 | "requires": { 397 | "node-gyp-build": "^4.3.0" 398 | } 399 | }, 400 | "bugoff": { 401 | "version": "0.0.8", 402 | "resolved": "https://registry.npmjs.org/bugoff/-/bugoff-0.0.8.tgz", 403 | "integrity": "sha512-YNlB9RDi9uXVGuZ7bz4O25TGPD3/XPIjKJzKyax3HDVxjVR+VVVNlWr/x6sSZSdlqp8nebl+3pwukcbHwcbbKw==", 404 | "requires": { 405 | "bugout": "0.0.12", 406 | "gun": "^0.2020.1235", 407 | "tape": "^5.4.0" 408 | } 409 | }, 410 | "bugout": { 411 | "version": "0.0.12", 412 | "resolved": "https://registry.npmjs.org/bugout/-/bugout-0.0.12.tgz", 413 | "integrity": "sha512-u6Lx+XpoY2BNRAR9k5MZEEmpIBDe5XL/eJmZ0oofqMyN6pux5gqQSwXiDooK3lJsLNXPyYauAjAB+S3REJb5jA==", 414 | "requires": { 415 | "bencode": "^2.0.0", 416 | "bs58": "^4.0.1", 417 | "bs58check": "^2.1.2", 418 | "debug": "^3.1.0", 419 | "inherits": "^2.0.3", 420 | "ripemd160": "^2.0.2", 421 | "tweetnacl": "^1.0.0", 422 | "webtorrent": "^1.0.2" 423 | } 424 | }, 425 | "cache-chunk-store": { 426 | "version": "3.2.2", 427 | "resolved": "https://registry.npmjs.org/cache-chunk-store/-/cache-chunk-store-3.2.2.tgz", 428 | "integrity": "sha512-2lJdWbgHFFxcSth9s2wpId3CR3v1YC63KjP4T9WhpW7LWlY7Hiiei3QwwqzkWqlJTfR8lSy9F5kRQECeyj+yQA==", 429 | "requires": { 430 | "lru": "^3.1.0", 431 | "queue-microtask": "^1.2.3" 432 | } 433 | }, 434 | "call-bind": { 435 | "version": "1.0.2", 436 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 437 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 438 | "requires": { 439 | "function-bind": "^1.1.1", 440 | "get-intrinsic": "^1.0.2" 441 | } 442 | }, 443 | "camelcase": { 444 | "version": "5.3.1", 445 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 446 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" 447 | }, 448 | "chrome-dgram": { 449 | "version": "3.0.6", 450 | "resolved": "https://registry.npmjs.org/chrome-dgram/-/chrome-dgram-3.0.6.tgz", 451 | "integrity": "sha512-bqBsUuaOiXiqxXt/zA/jukNJJ4oaOtc7ciwqJpZVEaaXwwxqgI2/ZdG02vXYWUhHGziDlvGMQWk0qObgJwVYKA==", 452 | "requires": { 453 | "inherits": "^2.0.4", 454 | "run-series": "^1.1.9" 455 | } 456 | }, 457 | "chrome-dns": { 458 | "version": "1.0.1", 459 | "resolved": "https://registry.npmjs.org/chrome-dns/-/chrome-dns-1.0.1.tgz", 460 | "integrity": "sha512-HqsYJgIc8ljJJOqOzLphjAs79EUuWSX3nzZi2LNkzlw3GIzAeZbaSektC8iT/tKvLqZq8yl1GJu5o6doA4TRbg==", 461 | "requires": { 462 | "chrome-net": "^3.3.2" 463 | } 464 | }, 465 | "chrome-net": { 466 | "version": "3.3.4", 467 | "resolved": "https://registry.npmjs.org/chrome-net/-/chrome-net-3.3.4.tgz", 468 | "integrity": "sha512-Jzy2EnzmE+ligqIZUsmWnck9RBXLuUy6CaKyuNMtowFG3ZvLt8d+WBJCTPEludV0DHpIKjAOlwjFmTaEdfdWCw==", 469 | "requires": { 470 | "inherits": "^2.0.1" 471 | } 472 | }, 473 | "chunk-store-stream": { 474 | "version": "4.3.0", 475 | "resolved": "https://registry.npmjs.org/chunk-store-stream/-/chunk-store-stream-4.3.0.tgz", 476 | "integrity": "sha512-qby+/RXoiMoTVtPiylWZt7KFF1jy6M829TzMi2hxZtBIH9ptV19wxcft6zGiXLokJgCbuZPGNGab6DWHqiSEKw==", 477 | "requires": { 478 | "block-stream2": "^2.0.0", 479 | "readable-stream": "^3.6.0" 480 | } 481 | }, 482 | "cipher-base": { 483 | "version": "1.0.4", 484 | "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", 485 | "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", 486 | "requires": { 487 | "inherits": "^2.0.1", 488 | "safe-buffer": "^5.0.1" 489 | } 490 | }, 491 | "cliui": { 492 | "version": "6.0.0", 493 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", 494 | "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", 495 | "requires": { 496 | "string-width": "^4.2.0", 497 | "strip-ansi": "^6.0.0", 498 | "wrap-ansi": "^6.2.0" 499 | } 500 | }, 501 | "clone": { 502 | "version": "2.1.2", 503 | "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", 504 | "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" 505 | }, 506 | "color-convert": { 507 | "version": "2.0.1", 508 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 509 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 510 | "requires": { 511 | "color-name": "~1.1.4" 512 | } 513 | }, 514 | "color-name": { 515 | "version": "1.1.4", 516 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 517 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 518 | }, 519 | "compact2string": { 520 | "version": "1.4.1", 521 | "resolved": "https://registry.npmjs.org/compact2string/-/compact2string-1.4.1.tgz", 522 | "integrity": "sha512-3D+EY5nsRhqnOwDxveBv5T8wGo4DEvYxjDtPGmdOX+gfr5gE92c2RC0w2wa+xEefm07QuVqqcF3nZJUZ92l/og==", 523 | "requires": { 524 | "ipaddr.js": ">= 0.1.5" 525 | } 526 | }, 527 | "concat-map": { 528 | "version": "0.0.1", 529 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 530 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 531 | }, 532 | "cpus": { 533 | "version": "1.0.3", 534 | "resolved": "https://registry.npmjs.org/cpus/-/cpus-1.0.3.tgz", 535 | "integrity": "sha512-PXHBvGLuL69u55IkLa5e5838fLhIMHxmkV4ge42a8alGyn7BtawYgI0hQ849EedvtHIOLNNH3i6eQU1BiE9SUA==" 536 | }, 537 | "create-hash": { 538 | "version": "1.2.0", 539 | "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", 540 | "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", 541 | "requires": { 542 | "cipher-base": "^1.0.1", 543 | "inherits": "^2.0.1", 544 | "md5.js": "^1.3.4", 545 | "ripemd160": "^2.0.1", 546 | "sha.js": "^2.4.0" 547 | } 548 | }, 549 | "create-torrent": { 550 | "version": "5.0.1", 551 | "resolved": "https://registry.npmjs.org/create-torrent/-/create-torrent-5.0.1.tgz", 552 | "integrity": "sha512-fVvg1YYSogo3TlU1WFeTt937nhGQlf5KtB6M2HyDa/U02dbeMBE2AY9PcPlMufXNQoM/UCO28y26EmuApM7ZmA==", 553 | "requires": { 554 | "bencode": "^2.0.2", 555 | "block-stream2": "^2.1.0", 556 | "filestream": "^5.0.0", 557 | "is-file": "^1.0.0", 558 | "junk": "^3.1.0", 559 | "minimist": "^1.2.5", 560 | "multistream": "^4.1.0", 561 | "once": "^1.4.0", 562 | "piece-length": "^2.0.1", 563 | "queue-microtask": "^1.2.3", 564 | "readable-stream": "^3.6.0", 565 | "run-parallel": "^1.2.0", 566 | "simple-sha1": "^3.1.0" 567 | } 568 | }, 569 | "debug": { 570 | "version": "3.2.7", 571 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 572 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 573 | "requires": { 574 | "ms": "^2.1.1" 575 | } 576 | }, 577 | "decamelize": { 578 | "version": "1.2.0", 579 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 580 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" 581 | }, 582 | "decompress-response": { 583 | "version": "6.0.0", 584 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", 585 | "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", 586 | "requires": { 587 | "mimic-response": "^3.1.0" 588 | } 589 | }, 590 | "deep-equal": { 591 | "version": "2.0.5", 592 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", 593 | "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", 594 | "requires": { 595 | "call-bind": "^1.0.0", 596 | "es-get-iterator": "^1.1.1", 597 | "get-intrinsic": "^1.0.1", 598 | "is-arguments": "^1.0.4", 599 | "is-date-object": "^1.0.2", 600 | "is-regex": "^1.1.1", 601 | "isarray": "^2.0.5", 602 | "object-is": "^1.1.4", 603 | "object-keys": "^1.1.1", 604 | "object.assign": "^4.1.2", 605 | "regexp.prototype.flags": "^1.3.0", 606 | "side-channel": "^1.0.3", 607 | "which-boxed-primitive": "^1.0.1", 608 | "which-collection": "^1.0.1", 609 | "which-typed-array": "^1.1.2" 610 | } 611 | }, 612 | "define-properties": { 613 | "version": "1.1.3", 614 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 615 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 616 | "requires": { 617 | "object-keys": "^1.0.12" 618 | } 619 | }, 620 | "defined": { 621 | "version": "1.0.0", 622 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", 623 | "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" 624 | }, 625 | "dijkstrajs": { 626 | "version": "1.0.2", 627 | "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz", 628 | "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==" 629 | }, 630 | "dotignore": { 631 | "version": "0.1.2", 632 | "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", 633 | "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", 634 | "requires": { 635 | "minimatch": "^3.0.4" 636 | } 637 | }, 638 | "emailjs": { 639 | "version": "2.2.0", 640 | "resolved": "https://registry.npmjs.org/emailjs/-/emailjs-2.2.0.tgz", 641 | "integrity": "sha1-ulsj5KSwpFEPZS6HOxVOlAe2ygM=", 642 | "optional": true, 643 | "requires": { 644 | "addressparser": "^0.3.2", 645 | "emailjs-mime-codec": "^2.0.7" 646 | } 647 | }, 648 | "emailjs-base64": { 649 | "version": "1.1.4", 650 | "resolved": "https://registry.npmjs.org/emailjs-base64/-/emailjs-base64-1.1.4.tgz", 651 | "integrity": "sha512-4h0xp1jgVTnIQBHxSJWXWanNnmuc5o+k4aHEpcLXSToN8asjB5qbXAexs7+PEsUKcEyBteNYsSvXUndYT2CGGA==", 652 | "optional": true 653 | }, 654 | "emailjs-mime-codec": { 655 | "version": "2.0.9", 656 | "resolved": "https://registry.npmjs.org/emailjs-mime-codec/-/emailjs-mime-codec-2.0.9.tgz", 657 | "integrity": "sha512-7qJo4pFGcKlWh/kCeNjmcgj34YoJWY0ekZXEHYtluWg4MVBnXqGM4CRMtZQkfYwitOhUgaKN5EQktJddi/YIDQ==", 658 | "optional": true, 659 | "requires": { 660 | "emailjs-base64": "^1.1.4", 661 | "ramda": "^0.26.1", 662 | "text-encoding": "^0.7.0" 663 | } 664 | }, 665 | "emoji-regex": { 666 | "version": "8.0.0", 667 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 668 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 669 | }, 670 | "encode-utf8": { 671 | "version": "1.0.3", 672 | "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", 673 | "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" 674 | }, 675 | "end-of-stream": { 676 | "version": "1.4.4", 677 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 678 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 679 | "requires": { 680 | "once": "^1.4.0" 681 | } 682 | }, 683 | "err-code": { 684 | "version": "3.0.1", 685 | "resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz", 686 | "integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==" 687 | }, 688 | "es-abstract": { 689 | "version": "1.19.1", 690 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", 691 | "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", 692 | "requires": { 693 | "call-bind": "^1.0.2", 694 | "es-to-primitive": "^1.2.1", 695 | "function-bind": "^1.1.1", 696 | "get-intrinsic": "^1.1.1", 697 | "get-symbol-description": "^1.0.0", 698 | "has": "^1.0.3", 699 | "has-symbols": "^1.0.2", 700 | "internal-slot": "^1.0.3", 701 | "is-callable": "^1.2.4", 702 | "is-negative-zero": "^2.0.1", 703 | "is-regex": "^1.1.4", 704 | "is-shared-array-buffer": "^1.0.1", 705 | "is-string": "^1.0.7", 706 | "is-weakref": "^1.0.1", 707 | "object-inspect": "^1.11.0", 708 | "object-keys": "^1.1.1", 709 | "object.assign": "^4.1.2", 710 | "string.prototype.trimend": "^1.0.4", 711 | "string.prototype.trimstart": "^1.0.4", 712 | "unbox-primitive": "^1.0.1" 713 | } 714 | }, 715 | "es-get-iterator": { 716 | "version": "1.1.2", 717 | "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", 718 | "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", 719 | "requires": { 720 | "call-bind": "^1.0.2", 721 | "get-intrinsic": "^1.1.0", 722 | "has-symbols": "^1.0.1", 723 | "is-arguments": "^1.1.0", 724 | "is-map": "^2.0.2", 725 | "is-set": "^2.0.2", 726 | "is-string": "^1.0.5", 727 | "isarray": "^2.0.5" 728 | } 729 | }, 730 | "es-to-primitive": { 731 | "version": "1.2.1", 732 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 733 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 734 | "requires": { 735 | "is-callable": "^1.1.4", 736 | "is-date-object": "^1.0.1", 737 | "is-symbol": "^1.0.2" 738 | } 739 | }, 740 | "escape-html": { 741 | "version": "1.0.3", 742 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 743 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 744 | }, 745 | "fast-fifo": { 746 | "version": "1.0.0", 747 | "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.0.0.tgz", 748 | "integrity": "sha512-4VEXmjxLj7sbs8J//cn2qhRap50dGzF5n8fjay8mau+Jn4hxSeR3xPFwxMaQq/pDaq7+KQk0PAbC2+nWDkJrmQ==" 749 | }, 750 | "filestream": { 751 | "version": "5.0.0", 752 | "resolved": "https://registry.npmjs.org/filestream/-/filestream-5.0.0.tgz", 753 | "integrity": "sha512-5H3RqSaJp12THfZiNWodYM7TiKfQvrpX+EIOrB1XvCceTys4yvfEIl8wDp+/yI8qj6Bxym8m0NYWwVXDAet/+A==", 754 | "requires": { 755 | "readable-stream": "^3.4.0", 756 | "typedarray-to-buffer": "^3.0.0" 757 | } 758 | }, 759 | "find-up": { 760 | "version": "4.1.0", 761 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 762 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 763 | "requires": { 764 | "locate-path": "^5.0.0", 765 | "path-exists": "^4.0.0" 766 | } 767 | }, 768 | "for-each": { 769 | "version": "0.3.3", 770 | "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", 771 | "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", 772 | "requires": { 773 | "is-callable": "^1.1.3" 774 | } 775 | }, 776 | "foreach": { 777 | "version": "2.0.5", 778 | "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", 779 | "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" 780 | }, 781 | "freelist": { 782 | "version": "1.0.3", 783 | "resolved": "https://registry.npmjs.org/freelist/-/freelist-1.0.3.tgz", 784 | "integrity": "sha1-AGd1UJ85NXAXhNPtL8nxLJ3xurI=" 785 | }, 786 | "fs-chunk-store": { 787 | "version": "2.0.4", 788 | "resolved": "https://registry.npmjs.org/fs-chunk-store/-/fs-chunk-store-2.0.4.tgz", 789 | "integrity": "sha512-JfeKRPPWkLaUoNKZdi+eLPKzZkZK1pdj2Y5lidEw9fUCkglvK/muLe6ONjdvn8yAGrDsk4tkjNp52GS658yy0g==", 790 | "requires": { 791 | "queue-microtask": "^1.2.2", 792 | "random-access-file": "^2.0.1", 793 | "randombytes": "^2.0.3", 794 | "rimraf": "^3.0.0", 795 | "run-parallel": "^1.1.2", 796 | "thunky": "^1.0.1" 797 | } 798 | }, 799 | "fs.realpath": { 800 | "version": "1.0.0", 801 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 802 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 803 | }, 804 | "function-bind": { 805 | "version": "1.1.1", 806 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 807 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 808 | }, 809 | "get-browser-rtc": { 810 | "version": "1.1.0", 811 | "resolved": "https://registry.npmjs.org/get-browser-rtc/-/get-browser-rtc-1.1.0.tgz", 812 | "integrity": "sha512-MghbMJ61EJrRsDe7w1Bvqt3ZsBuqhce5nrn/XAwgwOXhcsz53/ltdxOse1h/8eKXj5slzxdsz56g5rzOFSGwfQ==" 813 | }, 814 | "get-caller-file": { 815 | "version": "2.0.5", 816 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 817 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" 818 | }, 819 | "get-intrinsic": { 820 | "version": "1.1.1", 821 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", 822 | "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", 823 | "requires": { 824 | "function-bind": "^1.1.1", 825 | "has": "^1.0.3", 826 | "has-symbols": "^1.0.1" 827 | } 828 | }, 829 | "get-package-type": { 830 | "version": "0.1.0", 831 | "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", 832 | "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" 833 | }, 834 | "get-stdin": { 835 | "version": "8.0.0", 836 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", 837 | "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==" 838 | }, 839 | "get-symbol-description": { 840 | "version": "1.0.0", 841 | "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", 842 | "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", 843 | "requires": { 844 | "call-bind": "^1.0.2", 845 | "get-intrinsic": "^1.1.1" 846 | } 847 | }, 848 | "glob": { 849 | "version": "7.2.0", 850 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 851 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 852 | "requires": { 853 | "fs.realpath": "^1.0.0", 854 | "inflight": "^1.0.4", 855 | "inherits": "2", 856 | "minimatch": "^3.0.4", 857 | "once": "^1.3.0", 858 | "path-is-absolute": "^1.0.0" 859 | } 860 | }, 861 | "gun": { 862 | "version": "0.2020.1235", 863 | "resolved": "https://registry.npmjs.org/gun/-/gun-0.2020.1235.tgz", 864 | "integrity": "sha512-aba6s0X/MCCOByt0T3VrMzMMUEblfN2aLV2bAmIQWjkB7SKnm07zAZWigljwI69Rb5sOw7C1G116UyvCM2p9kA==", 865 | "requires": { 866 | "@peculiar/webcrypto": "^1.1.1", 867 | "emailjs": "^2.2.0", 868 | "ws": "^7.2.1" 869 | } 870 | }, 871 | "has": { 872 | "version": "1.0.3", 873 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 874 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 875 | "requires": { 876 | "function-bind": "^1.1.1" 877 | } 878 | }, 879 | "has-bigints": { 880 | "version": "1.0.1", 881 | "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", 882 | "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" 883 | }, 884 | "has-dynamic-import": { 885 | "version": "2.0.1", 886 | "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.1.tgz", 887 | "integrity": "sha512-X3fbtsZmwb6W7fJGR9o7x65fZoodygCrZ3TVycvghP62yYQfS0t4RS0Qcz+j5tQYUKeSWS09tHkWW6WhFV3XhQ==", 888 | "requires": { 889 | "call-bind": "^1.0.2", 890 | "get-intrinsic": "^1.1.1" 891 | } 892 | }, 893 | "has-symbols": { 894 | "version": "1.0.2", 895 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", 896 | "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" 897 | }, 898 | "has-tostringtag": { 899 | "version": "1.0.0", 900 | "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", 901 | "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", 902 | "requires": { 903 | "has-symbols": "^1.0.2" 904 | } 905 | }, 906 | "hash-base": { 907 | "version": "3.1.0", 908 | "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", 909 | "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", 910 | "requires": { 911 | "inherits": "^2.0.4", 912 | "readable-stream": "^3.6.0", 913 | "safe-buffer": "^5.2.0" 914 | } 915 | }, 916 | "hi-base32": { 917 | "version": "0.5.1", 918 | "resolved": "https://registry.npmjs.org/hi-base32/-/hi-base32-0.5.1.tgz", 919 | "integrity": "sha512-EmBBpvdYh/4XxsnUybsPag6VikPYnN30td+vQk+GI3qpahVEG9+gTkG0aXVxTjBqQ5T6ijbWIu77O+C5WFWsnA==" 920 | }, 921 | "http-parser-js": { 922 | "version": "0.4.13", 923 | "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.13.tgz", 924 | "integrity": "sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc=" 925 | }, 926 | "ieee754": { 927 | "version": "1.2.1", 928 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 929 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" 930 | }, 931 | "immediate-chunk-store": { 932 | "version": "2.2.0", 933 | "resolved": "https://registry.npmjs.org/immediate-chunk-store/-/immediate-chunk-store-2.2.0.tgz", 934 | "integrity": "sha512-1bHBna0hCa6arRXicu91IiL9RvvkbNYLVq+mzWdaLGZC3hXvX4doh8e1dLhMKez5siu63CYgO5NrGJbRX5lbPA==", 935 | "requires": { 936 | "queue-microtask": "^1.2.3" 937 | } 938 | }, 939 | "inflight": { 940 | "version": "1.0.6", 941 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 942 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 943 | "requires": { 944 | "once": "^1.3.0", 945 | "wrappy": "1" 946 | } 947 | }, 948 | "inherits": { 949 | "version": "2.0.4", 950 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 951 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 952 | }, 953 | "internal-slot": { 954 | "version": "1.0.3", 955 | "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", 956 | "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", 957 | "requires": { 958 | "get-intrinsic": "^1.1.0", 959 | "has": "^1.0.3", 960 | "side-channel": "^1.0.4" 961 | } 962 | }, 963 | "ip": { 964 | "version": "1.1.5", 965 | "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", 966 | "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" 967 | }, 968 | "ip-set": { 969 | "version": "2.1.0", 970 | "resolved": "https://registry.npmjs.org/ip-set/-/ip-set-2.1.0.tgz", 971 | "integrity": "sha512-JdHz4tSMx1IeFj8yEcQU0i58qiSkOlmZXkZ8+HJ0ROV5KcgLRDO9F703oJ1GeZCvqggrcCbmagD/V7hghY62wA==", 972 | "requires": { 973 | "ip": "^1.1.5" 974 | } 975 | }, 976 | "ipaddr.js": { 977 | "version": "2.0.1", 978 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", 979 | "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==" 980 | }, 981 | "is-arguments": { 982 | "version": "1.1.1", 983 | "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", 984 | "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", 985 | "requires": { 986 | "call-bind": "^1.0.2", 987 | "has-tostringtag": "^1.0.0" 988 | } 989 | }, 990 | "is-ascii": { 991 | "version": "1.0.0", 992 | "resolved": "https://registry.npmjs.org/is-ascii/-/is-ascii-1.0.0.tgz", 993 | "integrity": "sha1-8CrQJZoJIc0Zn/Ic4bCeD2tOOSk=" 994 | }, 995 | "is-bigint": { 996 | "version": "1.0.4", 997 | "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", 998 | "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", 999 | "requires": { 1000 | "has-bigints": "^1.0.1" 1001 | } 1002 | }, 1003 | "is-boolean-object": { 1004 | "version": "1.1.2", 1005 | "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", 1006 | "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", 1007 | "requires": { 1008 | "call-bind": "^1.0.2", 1009 | "has-tostringtag": "^1.0.0" 1010 | } 1011 | }, 1012 | "is-callable": { 1013 | "version": "1.2.4", 1014 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", 1015 | "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" 1016 | }, 1017 | "is-core-module": { 1018 | "version": "2.8.1", 1019 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", 1020 | "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", 1021 | "requires": { 1022 | "has": "^1.0.3" 1023 | } 1024 | }, 1025 | "is-date-object": { 1026 | "version": "1.0.5", 1027 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", 1028 | "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", 1029 | "requires": { 1030 | "has-tostringtag": "^1.0.0" 1031 | } 1032 | }, 1033 | "is-file": { 1034 | "version": "1.0.0", 1035 | "resolved": "https://registry.npmjs.org/is-file/-/is-file-1.0.0.tgz", 1036 | "integrity": "sha1-KKRM+9nT2xkwRfIrZfzo7fliBZY=" 1037 | }, 1038 | "is-fullwidth-code-point": { 1039 | "version": "3.0.0", 1040 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1041 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" 1042 | }, 1043 | "is-map": { 1044 | "version": "2.0.2", 1045 | "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", 1046 | "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==" 1047 | }, 1048 | "is-negative-zero": { 1049 | "version": "2.0.2", 1050 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", 1051 | "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" 1052 | }, 1053 | "is-number-object": { 1054 | "version": "1.0.6", 1055 | "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", 1056 | "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", 1057 | "requires": { 1058 | "has-tostringtag": "^1.0.0" 1059 | } 1060 | }, 1061 | "is-regex": { 1062 | "version": "1.1.4", 1063 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", 1064 | "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", 1065 | "requires": { 1066 | "call-bind": "^1.0.2", 1067 | "has-tostringtag": "^1.0.0" 1068 | } 1069 | }, 1070 | "is-set": { 1071 | "version": "2.0.2", 1072 | "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", 1073 | "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==" 1074 | }, 1075 | "is-shared-array-buffer": { 1076 | "version": "1.0.1", 1077 | "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", 1078 | "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==" 1079 | }, 1080 | "is-string": { 1081 | "version": "1.0.7", 1082 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", 1083 | "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", 1084 | "requires": { 1085 | "has-tostringtag": "^1.0.0" 1086 | } 1087 | }, 1088 | "is-symbol": { 1089 | "version": "1.0.4", 1090 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", 1091 | "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", 1092 | "requires": { 1093 | "has-symbols": "^1.0.2" 1094 | } 1095 | }, 1096 | "is-typed-array": { 1097 | "version": "1.1.8", 1098 | "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz", 1099 | "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", 1100 | "requires": { 1101 | "available-typed-arrays": "^1.0.5", 1102 | "call-bind": "^1.0.2", 1103 | "es-abstract": "^1.18.5", 1104 | "foreach": "^2.0.5", 1105 | "has-tostringtag": "^1.0.0" 1106 | } 1107 | }, 1108 | "is-typedarray": { 1109 | "version": "1.0.0", 1110 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 1111 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" 1112 | }, 1113 | "is-weakmap": { 1114 | "version": "2.0.1", 1115 | "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", 1116 | "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==" 1117 | }, 1118 | "is-weakref": { 1119 | "version": "1.0.2", 1120 | "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", 1121 | "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", 1122 | "requires": { 1123 | "call-bind": "^1.0.2" 1124 | } 1125 | }, 1126 | "is-weakset": { 1127 | "version": "2.0.2", 1128 | "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", 1129 | "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", 1130 | "requires": { 1131 | "call-bind": "^1.0.2", 1132 | "get-intrinsic": "^1.1.1" 1133 | } 1134 | }, 1135 | "isarray": { 1136 | "version": "2.0.5", 1137 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", 1138 | "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" 1139 | }, 1140 | "junk": { 1141 | "version": "3.1.0", 1142 | "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", 1143 | "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==" 1144 | }, 1145 | "k-bucket": { 1146 | "version": "5.1.0", 1147 | "resolved": "https://registry.npmjs.org/k-bucket/-/k-bucket-5.1.0.tgz", 1148 | "integrity": "sha512-Fac7iINEovXIWU20GPnOMLUbjctiS+cnmyjC4zAUgvs3XPf1vo9akfCHkigftSic/jiKqKl+KA3a/vFcJbHyCg==", 1149 | "requires": { 1150 | "randombytes": "^2.1.0" 1151 | } 1152 | }, 1153 | "k-rpc": { 1154 | "version": "5.1.0", 1155 | "resolved": "https://registry.npmjs.org/k-rpc/-/k-rpc-5.1.0.tgz", 1156 | "integrity": "sha512-FGc+n70Hcjoa/X2JTwP+jMIOpBz+pkRffHnSl9yrYiwUxg3FIgD50+u1ePfJUOnRCnx6pbjmVk5aAeB1wIijuQ==", 1157 | "requires": { 1158 | "k-bucket": "^5.0.0", 1159 | "k-rpc-socket": "^1.7.2", 1160 | "randombytes": "^2.0.5" 1161 | } 1162 | }, 1163 | "k-rpc-socket": { 1164 | "version": "1.11.1", 1165 | "resolved": "https://registry.npmjs.org/k-rpc-socket/-/k-rpc-socket-1.11.1.tgz", 1166 | "integrity": "sha512-8xtA8oqbZ6v1Niryp2/g4GxW16EQh5MvrUylQoOG+zcrDff5CKttON2XUXvMwlIHq4/2zfPVFiinAccJ+WhxoA==", 1167 | "requires": { 1168 | "bencode": "^2.0.0", 1169 | "chrome-dgram": "^3.0.2", 1170 | "chrome-dns": "^1.0.0", 1171 | "chrome-net": "^3.3.2" 1172 | } 1173 | }, 1174 | "last-one-wins": { 1175 | "version": "1.0.4", 1176 | "resolved": "https://registry.npmjs.org/last-one-wins/-/last-one-wins-1.0.4.tgz", 1177 | "integrity": "sha1-wb/Qy8tGeQ7JFWuNGu6Py4bNoio=" 1178 | }, 1179 | "limiter": { 1180 | "version": "1.1.5", 1181 | "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", 1182 | "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" 1183 | }, 1184 | "load-ip-set": { 1185 | "version": "2.2.1", 1186 | "resolved": "https://registry.npmjs.org/load-ip-set/-/load-ip-set-2.2.1.tgz", 1187 | "integrity": "sha512-G3hQXehU2LTOp52e+lPffpK4EvidfjwbvHaGqmFcp4ptiZagR4xFdL+D08kMX906dxeqZyWhfonEjdUxrWcldg==", 1188 | "requires": { 1189 | "ip-set": "^2.1.0", 1190 | "netmask": "^2.0.1", 1191 | "once": "^1.4.0", 1192 | "simple-get": "^4.0.0", 1193 | "split": "^1.0.1" 1194 | } 1195 | }, 1196 | "locate-path": { 1197 | "version": "5.0.0", 1198 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 1199 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 1200 | "requires": { 1201 | "p-locate": "^4.1.0" 1202 | } 1203 | }, 1204 | "lru": { 1205 | "version": "3.1.0", 1206 | "resolved": "https://registry.npmjs.org/lru/-/lru-3.1.0.tgz", 1207 | "integrity": "sha1-6n+4VG2DczOWoTCR12z+tMBoN9U=", 1208 | "requires": { 1209 | "inherits": "^2.0.1" 1210 | } 1211 | }, 1212 | "lt_donthave": { 1213 | "version": "1.0.1", 1214 | "resolved": "https://registry.npmjs.org/lt_donthave/-/lt_donthave-1.0.1.tgz", 1215 | "integrity": "sha512-PfOXfDN9GnUjlNHjjxKQuMxPC8s12iSrnmg+Ff1BU1uLn7S1BFAKzpZCu6Gwg3WsCUvTZrZoDSHvy6B/j+N4/Q==", 1216 | "requires": { 1217 | "debug": "^4.2.0", 1218 | "unordered-array-remove": "^1.0.2" 1219 | }, 1220 | "dependencies": { 1221 | "debug": { 1222 | "version": "4.3.3", 1223 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 1224 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 1225 | "requires": { 1226 | "ms": "2.1.2" 1227 | } 1228 | }, 1229 | "ms": { 1230 | "version": "2.1.2", 1231 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1232 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1233 | } 1234 | } 1235 | }, 1236 | "magnet-uri": { 1237 | "version": "6.2.0", 1238 | "resolved": "https://registry.npmjs.org/magnet-uri/-/magnet-uri-6.2.0.tgz", 1239 | "integrity": "sha512-O9AgdDwT771fnUj0giPYu/rACpz8173y8UXCSOdLITjOVfBenZ9H9q3FqQmveK+ORUMuD+BkKNSZP8C3+IMAKQ==", 1240 | "requires": { 1241 | "bep53-range": "^1.1.0", 1242 | "thirty-two": "^1.0.2" 1243 | } 1244 | }, 1245 | "md5.js": { 1246 | "version": "1.3.5", 1247 | "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", 1248 | "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", 1249 | "requires": { 1250 | "hash-base": "^3.0.0", 1251 | "inherits": "^2.0.1", 1252 | "safe-buffer": "^5.1.2" 1253 | } 1254 | }, 1255 | "mediasource": { 1256 | "version": "2.4.0", 1257 | "resolved": "https://registry.npmjs.org/mediasource/-/mediasource-2.4.0.tgz", 1258 | "integrity": "sha512-SKUMrbFMHgiCUZFOWZcL0aiF/KgHx9SPIKzxrl6+7nMUMDK/ZnOmJdY/9wKzYeM0g3mybt3ueg+W+/mrYfmeFQ==", 1259 | "requires": { 1260 | "inherits": "^2.0.4", 1261 | "readable-stream": "^3.6.0", 1262 | "to-arraybuffer": "^1.0.1" 1263 | } 1264 | }, 1265 | "memory-chunk-store": { 1266 | "version": "1.3.5", 1267 | "resolved": "https://registry.npmjs.org/memory-chunk-store/-/memory-chunk-store-1.3.5.tgz", 1268 | "integrity": "sha512-E1Xc1U4ifk/FkC2ZsWhCaW1xg9HbE/OBmQTLe2Tr9c27YPSLbW7kw1cnb3kQWD1rDtErFJHa7mB9EVrs7aTx9g==", 1269 | "requires": { 1270 | "queue-microtask": "^1.2.3" 1271 | } 1272 | }, 1273 | "mime": { 1274 | "version": "3.0.0", 1275 | "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", 1276 | "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==" 1277 | }, 1278 | "mimic-response": { 1279 | "version": "3.1.0", 1280 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", 1281 | "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" 1282 | }, 1283 | "minimatch": { 1284 | "version": "3.0.4", 1285 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1286 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1287 | "requires": { 1288 | "brace-expansion": "^1.1.7" 1289 | } 1290 | }, 1291 | "minimist": { 1292 | "version": "1.2.6", 1293 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 1294 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" 1295 | }, 1296 | "mkdirp-classic": { 1297 | "version": "0.5.3", 1298 | "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 1299 | "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" 1300 | }, 1301 | "mp4-box-encoding": { 1302 | "version": "1.4.1", 1303 | "resolved": "https://registry.npmjs.org/mp4-box-encoding/-/mp4-box-encoding-1.4.1.tgz", 1304 | "integrity": "sha512-2/PRtGGiqPc/VEhbm7xAQ+gbb7yzHjjMAv6MpAifr5pCpbh3fQUdj93uNgwPiTppAGu8HFKe3PeU+OdRyAxStA==", 1305 | "requires": { 1306 | "uint64be": "^2.0.2" 1307 | } 1308 | }, 1309 | "mp4-stream": { 1310 | "version": "3.1.3", 1311 | "resolved": "https://registry.npmjs.org/mp4-stream/-/mp4-stream-3.1.3.tgz", 1312 | "integrity": "sha512-DUT8f0x2jHbZjNMdqe9h6lZdt6RENWTTdGn8z3TXa4uEsoltuNY9lCCij84mdm0q7xcV0E2W25WRxlKBMo4hSw==", 1313 | "requires": { 1314 | "mp4-box-encoding": "^1.3.0", 1315 | "next-event": "^1.0.0", 1316 | "queue-microtask": "^1.2.2", 1317 | "readable-stream": "^3.0.6" 1318 | } 1319 | }, 1320 | "ms": { 1321 | "version": "2.1.3", 1322 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1323 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1324 | }, 1325 | "multistream": { 1326 | "version": "4.1.0", 1327 | "resolved": "https://registry.npmjs.org/multistream/-/multistream-4.1.0.tgz", 1328 | "integrity": "sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw==", 1329 | "requires": { 1330 | "once": "^1.4.0", 1331 | "readable-stream": "^3.6.0" 1332 | } 1333 | }, 1334 | "napi-macros": { 1335 | "version": "2.0.0", 1336 | "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz", 1337 | "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==", 1338 | "optional": true 1339 | }, 1340 | "netmask": { 1341 | "version": "2.0.2", 1342 | "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", 1343 | "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==" 1344 | }, 1345 | "next-event": { 1346 | "version": "1.0.0", 1347 | "resolved": "https://registry.npmjs.org/next-event/-/next-event-1.0.0.tgz", 1348 | "integrity": "sha1-53eKzeLlWALgrRh5w5z2917aYdg=" 1349 | }, 1350 | "node-gyp-build": { 1351 | "version": "4.3.0", 1352 | "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", 1353 | "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", 1354 | "optional": true 1355 | }, 1356 | "object-inspect": { 1357 | "version": "1.12.0", 1358 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", 1359 | "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==" 1360 | }, 1361 | "object-is": { 1362 | "version": "1.1.5", 1363 | "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", 1364 | "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", 1365 | "requires": { 1366 | "call-bind": "^1.0.2", 1367 | "define-properties": "^1.1.3" 1368 | } 1369 | }, 1370 | "object-keys": { 1371 | "version": "1.1.1", 1372 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1373 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" 1374 | }, 1375 | "object.assign": { 1376 | "version": "4.1.2", 1377 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", 1378 | "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", 1379 | "requires": { 1380 | "call-bind": "^1.0.0", 1381 | "define-properties": "^1.1.3", 1382 | "has-symbols": "^1.0.1", 1383 | "object-keys": "^1.1.1" 1384 | } 1385 | }, 1386 | "once": { 1387 | "version": "1.4.0", 1388 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1389 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1390 | "requires": { 1391 | "wrappy": "1" 1392 | } 1393 | }, 1394 | "p-limit": { 1395 | "version": "2.3.0", 1396 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 1397 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 1398 | "requires": { 1399 | "p-try": "^2.0.0" 1400 | } 1401 | }, 1402 | "p-locate": { 1403 | "version": "4.1.0", 1404 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 1405 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 1406 | "requires": { 1407 | "p-limit": "^2.2.0" 1408 | } 1409 | }, 1410 | "p-try": { 1411 | "version": "2.2.0", 1412 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 1413 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" 1414 | }, 1415 | "package-json-versionify": { 1416 | "version": "1.0.4", 1417 | "resolved": "https://registry.npmjs.org/package-json-versionify/-/package-json-versionify-1.0.4.tgz", 1418 | "integrity": "sha1-WGBYepRIc6a35tJujlH/siMVvxc=", 1419 | "requires": { 1420 | "browserify-package-json": "^1.0.0" 1421 | } 1422 | }, 1423 | "parse-torrent": { 1424 | "version": "9.1.4", 1425 | "resolved": "https://registry.npmjs.org/parse-torrent/-/parse-torrent-9.1.4.tgz", 1426 | "integrity": "sha512-NSlG8ewolqfcEWevUUsrpvxzVWYGaKWwPHMcXTAV2qYYo6pPugVOacQXt8uDlEYh23Ituz+A9pAZK5YaXTV8Pg==", 1427 | "requires": { 1428 | "bencode": "^2.0.2", 1429 | "blob-to-buffer": "^1.2.9", 1430 | "get-stdin": "^8.0.0", 1431 | "magnet-uri": "^6.2.0", 1432 | "queue-microtask": "^1.2.3", 1433 | "simple-get": "^4.0.0", 1434 | "simple-sha1": "^3.1.0" 1435 | } 1436 | }, 1437 | "path-exists": { 1438 | "version": "4.0.0", 1439 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1440 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" 1441 | }, 1442 | "path-is-absolute": { 1443 | "version": "1.0.1", 1444 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1445 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 1446 | }, 1447 | "path-parse": { 1448 | "version": "1.0.7", 1449 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1450 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" 1451 | }, 1452 | "piece-length": { 1453 | "version": "2.0.1", 1454 | "resolved": "https://registry.npmjs.org/piece-length/-/piece-length-2.0.1.tgz", 1455 | "integrity": "sha512-dBILiDmm43y0JPISWEmVGKBETQjwJe6mSU9GND+P9KW0SJGUwoU/odyH1nbalOP9i8WSYuqf1lQnaj92Bhw+Ug==" 1456 | }, 1457 | "pngjs": { 1458 | "version": "5.0.0", 1459 | "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", 1460 | "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==" 1461 | }, 1462 | "pump": { 1463 | "version": "3.0.0", 1464 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 1465 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 1466 | "requires": { 1467 | "end-of-stream": "^1.1.0", 1468 | "once": "^1.3.1" 1469 | } 1470 | }, 1471 | "pvtsutils": { 1472 | "version": "1.2.1", 1473 | "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.2.1.tgz", 1474 | "integrity": "sha512-Q867jEr30lBR2YSFFLZ0/XsEvpweqH6Kj096wmlRAFXrdRGPCNq2iz9B5Tk085EZ+OBZyYAVA5UhPkjSHGrUzQ==", 1475 | "optional": true, 1476 | "requires": { 1477 | "tslib": "^2.3.1" 1478 | } 1479 | }, 1480 | "pvutils": { 1481 | "version": "1.0.17", 1482 | "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.0.17.tgz", 1483 | "integrity": "sha512-wLHYUQxWaXVQvKnwIDWFVKDJku9XDCvyhhxoq8dc5MFdIlRenyPI9eSfEtcvgHgD7FlvCyGAlWgOzRnZD99GZQ==", 1484 | "optional": true 1485 | }, 1486 | "qrcode": { 1487 | "version": "1.5.0", 1488 | "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.0.tgz", 1489 | "integrity": "sha512-9MgRpgVc+/+47dFvQeD6U2s0Z92EsKzcHogtum4QB+UNd025WOJSHvn/hjk9xmzj7Stj95CyUAs31mrjxliEsQ==", 1490 | "requires": { 1491 | "dijkstrajs": "^1.0.1", 1492 | "encode-utf8": "^1.0.3", 1493 | "pngjs": "^5.0.0", 1494 | "yargs": "^15.3.1" 1495 | } 1496 | }, 1497 | "queue-microtask": { 1498 | "version": "1.2.3", 1499 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 1500 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" 1501 | }, 1502 | "queue-tick": { 1503 | "version": "1.0.0", 1504 | "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.0.tgz", 1505 | "integrity": "sha512-ULWhjjE8BmiICGn3G8+1L9wFpERNxkf8ysxkAer4+TFdRefDaXOCV5m92aMB9FtBVmn/8sETXLXY6BfW7hyaWQ==" 1506 | }, 1507 | "ramda": { 1508 | "version": "0.26.1", 1509 | "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", 1510 | "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==", 1511 | "optional": true 1512 | }, 1513 | "random-access-file": { 1514 | "version": "2.2.0", 1515 | "resolved": "https://registry.npmjs.org/random-access-file/-/random-access-file-2.2.0.tgz", 1516 | "integrity": "sha512-B744003Mj7v3EcuPl9hCiB2Ot4aZjgtU2mV6yFY1THiWU/XfGf1uSadR+SlQdJcwHgAWeG7Lbos0aUqjtj8FQg==", 1517 | "requires": { 1518 | "mkdirp-classic": "^0.5.2", 1519 | "random-access-storage": "^1.1.1" 1520 | } 1521 | }, 1522 | "random-access-storage": { 1523 | "version": "1.4.2", 1524 | "resolved": "https://registry.npmjs.org/random-access-storage/-/random-access-storage-1.4.2.tgz", 1525 | "integrity": "sha512-nW7UQGxcihvSLuK9PahoKL0jlmw2S6yGV8DsC85xHuUBLJrUoetRbQ5LzuXTt+FWp/iXgjp12x7zh55NNghaBg==", 1526 | "requires": { 1527 | "inherits": "^2.0.3", 1528 | "queue-tick": "^1.0.0" 1529 | } 1530 | }, 1531 | "random-iterate": { 1532 | "version": "1.0.1", 1533 | "resolved": "https://registry.npmjs.org/random-iterate/-/random-iterate-1.0.1.tgz", 1534 | "integrity": "sha1-99l9kt7mZl7F9toIx/ljytSyrJk=" 1535 | }, 1536 | "randombytes": { 1537 | "version": "2.1.0", 1538 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 1539 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 1540 | "requires": { 1541 | "safe-buffer": "^5.1.0" 1542 | } 1543 | }, 1544 | "range-parser": { 1545 | "version": "1.2.1", 1546 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 1547 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 1548 | }, 1549 | "range-slice-stream": { 1550 | "version": "2.0.0", 1551 | "resolved": "https://registry.npmjs.org/range-slice-stream/-/range-slice-stream-2.0.0.tgz", 1552 | "integrity": "sha512-PPYLwZ63lXi6Tv2EZ8w3M4FzC0rVqvxivaOVS8pXSp5FMIHFnvi4MWHL3UdFLhwSy50aNtJsgjY0mBC6oFL26Q==", 1553 | "requires": { 1554 | "readable-stream": "^3.0.2" 1555 | } 1556 | }, 1557 | "rc4": { 1558 | "version": "0.1.5", 1559 | "resolved": "https://registry.npmjs.org/rc4/-/rc4-0.1.5.tgz", 1560 | "integrity": "sha1-CMbgSgFo9utiHCKrbLEVG9n0pk0=" 1561 | }, 1562 | "readable-stream": { 1563 | "version": "3.6.0", 1564 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 1565 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 1566 | "requires": { 1567 | "inherits": "^2.0.3", 1568 | "string_decoder": "^1.1.1", 1569 | "util-deprecate": "^1.0.1" 1570 | } 1571 | }, 1572 | "readline-sync": { 1573 | "version": "1.4.10", 1574 | "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", 1575 | "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==" 1576 | }, 1577 | "record-cache": { 1578 | "version": "1.1.1", 1579 | "resolved": "https://registry.npmjs.org/record-cache/-/record-cache-1.1.1.tgz", 1580 | "integrity": "sha512-L5hZlgWc7CmGbztnemQoKE1bLu9rtI2skOB0ttE4C5+TVszLE8Rd0YLTROSgvXKLAqPumS/soyN5tJW5wJLmJQ==" 1581 | }, 1582 | "regexp.prototype.flags": { 1583 | "version": "1.4.1", 1584 | "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz", 1585 | "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==", 1586 | "requires": { 1587 | "call-bind": "^1.0.2", 1588 | "define-properties": "^1.1.3" 1589 | } 1590 | }, 1591 | "render-media": { 1592 | "version": "4.1.0", 1593 | "resolved": "https://registry.npmjs.org/render-media/-/render-media-4.1.0.tgz", 1594 | "integrity": "sha512-F5BMWDmgATEoyPCtKjmGNTGN1ghoZlfRQ3MJh8dS/MrvIUIxupiof/Y9uahChipXcqQ57twVbgMmyQmuO1vokw==", 1595 | "requires": { 1596 | "debug": "^4.2.0", 1597 | "is-ascii": "^1.0.0", 1598 | "mediasource": "^2.4.0", 1599 | "stream-to-blob-url": "^3.0.2", 1600 | "videostream": "^3.2.2" 1601 | }, 1602 | "dependencies": { 1603 | "debug": { 1604 | "version": "4.3.3", 1605 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 1606 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 1607 | "requires": { 1608 | "ms": "2.1.2" 1609 | } 1610 | }, 1611 | "ms": { 1612 | "version": "2.1.2", 1613 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1614 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1615 | } 1616 | } 1617 | }, 1618 | "require-directory": { 1619 | "version": "2.1.1", 1620 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1621 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" 1622 | }, 1623 | "require-main-filename": { 1624 | "version": "2.0.0", 1625 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", 1626 | "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" 1627 | }, 1628 | "resolve": { 1629 | "version": "2.0.0-next.3", 1630 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", 1631 | "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", 1632 | "requires": { 1633 | "is-core-module": "^2.2.0", 1634 | "path-parse": "^1.0.6" 1635 | } 1636 | }, 1637 | "resumer": { 1638 | "version": "0.0.0", 1639 | "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", 1640 | "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", 1641 | "requires": { 1642 | "through": "~2.3.4" 1643 | } 1644 | }, 1645 | "rimraf": { 1646 | "version": "3.0.2", 1647 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1648 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1649 | "requires": { 1650 | "glob": "^7.1.3" 1651 | } 1652 | }, 1653 | "ripemd160": { 1654 | "version": "2.0.2", 1655 | "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", 1656 | "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", 1657 | "requires": { 1658 | "hash-base": "^3.0.0", 1659 | "inherits": "^2.0.1" 1660 | } 1661 | }, 1662 | "run-parallel": { 1663 | "version": "1.2.0", 1664 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 1665 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 1666 | "requires": { 1667 | "queue-microtask": "^1.2.2" 1668 | } 1669 | }, 1670 | "run-parallel-limit": { 1671 | "version": "1.1.0", 1672 | "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", 1673 | "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", 1674 | "requires": { 1675 | "queue-microtask": "^1.2.2" 1676 | } 1677 | }, 1678 | "run-series": { 1679 | "version": "1.1.9", 1680 | "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.9.tgz", 1681 | "integrity": "sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==" 1682 | }, 1683 | "rusha": { 1684 | "version": "0.8.14", 1685 | "resolved": "https://registry.npmjs.org/rusha/-/rusha-0.8.14.tgz", 1686 | "integrity": "sha512-cLgakCUf6PedEu15t8kbsjnwIFFR2D4RfL+W3iWFJ4iac7z4B0ZI8fxy4R3J956kAI68HclCFGL8MPoUVC3qVA==" 1687 | }, 1688 | "safe-buffer": { 1689 | "version": "5.2.1", 1690 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1691 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1692 | }, 1693 | "set-blocking": { 1694 | "version": "2.0.0", 1695 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 1696 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" 1697 | }, 1698 | "sha.js": { 1699 | "version": "2.4.11", 1700 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", 1701 | "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", 1702 | "requires": { 1703 | "inherits": "^2.0.1", 1704 | "safe-buffer": "^5.0.1" 1705 | } 1706 | }, 1707 | "side-channel": { 1708 | "version": "1.0.4", 1709 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 1710 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 1711 | "requires": { 1712 | "call-bind": "^1.0.0", 1713 | "get-intrinsic": "^1.0.2", 1714 | "object-inspect": "^1.9.0" 1715 | } 1716 | }, 1717 | "simple-concat": { 1718 | "version": "1.0.1", 1719 | "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", 1720 | "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" 1721 | }, 1722 | "simple-get": { 1723 | "version": "4.0.1", 1724 | "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", 1725 | "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", 1726 | "requires": { 1727 | "decompress-response": "^6.0.0", 1728 | "once": "^1.3.1", 1729 | "simple-concat": "^1.0.0" 1730 | } 1731 | }, 1732 | "simple-peer": { 1733 | "version": "9.11.0", 1734 | "resolved": "https://registry.npmjs.org/simple-peer/-/simple-peer-9.11.0.tgz", 1735 | "integrity": "sha512-qvdNu/dGMHBm2uQ7oLhQBMhYlrOZC1ywXNCH/i8I4etxR1vrjCnU6ZSQBptndB1gcakjo2+w4OHo7Sjza1SHxg==", 1736 | "requires": { 1737 | "buffer": "^6.0.3", 1738 | "debug": "^4.3.1", 1739 | "err-code": "^3.0.1", 1740 | "get-browser-rtc": "^1.1.0", 1741 | "queue-microtask": "^1.2.3", 1742 | "randombytes": "^2.1.0", 1743 | "readable-stream": "^3.6.0" 1744 | }, 1745 | "dependencies": { 1746 | "debug": { 1747 | "version": "4.3.3", 1748 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 1749 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 1750 | "requires": { 1751 | "ms": "2.1.2" 1752 | } 1753 | }, 1754 | "ms": { 1755 | "version": "2.1.2", 1756 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1757 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1758 | } 1759 | } 1760 | }, 1761 | "simple-sha1": { 1762 | "version": "3.1.0", 1763 | "resolved": "https://registry.npmjs.org/simple-sha1/-/simple-sha1-3.1.0.tgz", 1764 | "integrity": "sha512-ArTptMRC1v08H8ihPD6l0wesKvMfF9e8XL5rIHPanI7kGOsSsbY514MwVu6X1PITHCTB2F08zB7cyEbfc4wQjg==", 1765 | "requires": { 1766 | "queue-microtask": "^1.2.2", 1767 | "rusha": "^0.8.13" 1768 | } 1769 | }, 1770 | "simple-websocket": { 1771 | "version": "9.1.0", 1772 | "resolved": "https://registry.npmjs.org/simple-websocket/-/simple-websocket-9.1.0.tgz", 1773 | "integrity": "sha512-8MJPnjRN6A8UCp1I+H/dSFyjwJhp6wta4hsVRhjf8w9qBHRzxYt14RaOcjvQnhD1N4yKOddEjflwMnQM4VtXjQ==", 1774 | "requires": { 1775 | "debug": "^4.3.1", 1776 | "queue-microtask": "^1.2.2", 1777 | "randombytes": "^2.1.0", 1778 | "readable-stream": "^3.6.0", 1779 | "ws": "^7.4.2" 1780 | }, 1781 | "dependencies": { 1782 | "debug": { 1783 | "version": "4.3.3", 1784 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 1785 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 1786 | "requires": { 1787 | "ms": "2.1.2" 1788 | } 1789 | }, 1790 | "ms": { 1791 | "version": "2.1.2", 1792 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1793 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1794 | } 1795 | } 1796 | }, 1797 | "smart-buffer": { 1798 | "version": "4.2.0", 1799 | "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", 1800 | "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" 1801 | }, 1802 | "socks": { 1803 | "version": "2.6.1", 1804 | "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", 1805 | "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", 1806 | "requires": { 1807 | "ip": "^1.1.5", 1808 | "smart-buffer": "^4.1.0" 1809 | } 1810 | }, 1811 | "speed-limiter": { 1812 | "version": "1.0.2", 1813 | "resolved": "https://registry.npmjs.org/speed-limiter/-/speed-limiter-1.0.2.tgz", 1814 | "integrity": "sha512-Ax+TbUOho84bWUc3AKqWtkIvAIVws7d6QI4oJkgH4yQ5Yil+lR3vjd/7qd51dHKGzS5bFxg0++QwyNRN7s6rZA==", 1815 | "requires": { 1816 | "limiter": "^1.1.5", 1817 | "streamx": "^2.10.3" 1818 | } 1819 | }, 1820 | "speedometer": { 1821 | "version": "1.1.0", 1822 | "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-1.1.0.tgz", 1823 | "integrity": "sha512-z/wAiTESw2XVPssY2XRcme4niTc4S5FkkJ4gknudtVoc33Zil8TdTxHy5torRcgqMqksJV2Yz8HQcvtbsnw0mQ==" 1824 | }, 1825 | "split": { 1826 | "version": "1.0.1", 1827 | "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", 1828 | "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", 1829 | "requires": { 1830 | "through": "2" 1831 | } 1832 | }, 1833 | "stream-to-blob": { 1834 | "version": "2.0.1", 1835 | "resolved": "https://registry.npmjs.org/stream-to-blob/-/stream-to-blob-2.0.1.tgz", 1836 | "integrity": "sha512-GXlqXt3svqwIVWoICenix5Poxi4KbCF0BdXXUbpU1X4vq1V8wmjiEIU3aFJzCGNFpKxfbnG0uoowS3nKUgSPYg==" 1837 | }, 1838 | "stream-to-blob-url": { 1839 | "version": "3.0.2", 1840 | "resolved": "https://registry.npmjs.org/stream-to-blob-url/-/stream-to-blob-url-3.0.2.tgz", 1841 | "integrity": "sha512-PS6wT2ZyyR38Cy+lE6PBEI1ZmO2HdzZoLeDGG0zZbYikCZd0dh8FUoSeFzgWLItpBYw1WJmPVRLpykRV+lAWLQ==", 1842 | "requires": { 1843 | "stream-to-blob": "^2.0.0" 1844 | } 1845 | }, 1846 | "stream-with-known-length-to-buffer": { 1847 | "version": "1.0.4", 1848 | "resolved": "https://registry.npmjs.org/stream-with-known-length-to-buffer/-/stream-with-known-length-to-buffer-1.0.4.tgz", 1849 | "integrity": "sha512-ztP79ug6S+I7td0Nd2GBeIKCm+vA54c+e60FY87metz5n/l6ydPELd2lxsljz8OpIhsRM9HkIiAwz85+S5G5/A==", 1850 | "requires": { 1851 | "once": "^1.4.0" 1852 | } 1853 | }, 1854 | "streamx": { 1855 | "version": "2.12.0", 1856 | "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.12.0.tgz", 1857 | "integrity": "sha512-PR93KgPkga2p27UhCI9lf096qPyRMDn/zemRQeAgr1azVLDMr8tZZGpgfEw2/cYY/8mTU4dshLMGNYBsNeQGQw==", 1858 | "requires": { 1859 | "fast-fifo": "^1.0.0", 1860 | "queue-tick": "^1.0.0" 1861 | } 1862 | }, 1863 | "string-width": { 1864 | "version": "4.2.3", 1865 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1866 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1867 | "requires": { 1868 | "emoji-regex": "^8.0.0", 1869 | "is-fullwidth-code-point": "^3.0.0", 1870 | "strip-ansi": "^6.0.1" 1871 | } 1872 | }, 1873 | "string.prototype.trim": { 1874 | "version": "1.2.5", 1875 | "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz", 1876 | "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==", 1877 | "requires": { 1878 | "call-bind": "^1.0.2", 1879 | "define-properties": "^1.1.3", 1880 | "es-abstract": "^1.19.1" 1881 | } 1882 | }, 1883 | "string.prototype.trimend": { 1884 | "version": "1.0.4", 1885 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", 1886 | "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", 1887 | "requires": { 1888 | "call-bind": "^1.0.2", 1889 | "define-properties": "^1.1.3" 1890 | } 1891 | }, 1892 | "string.prototype.trimstart": { 1893 | "version": "1.0.4", 1894 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", 1895 | "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", 1896 | "requires": { 1897 | "call-bind": "^1.0.2", 1898 | "define-properties": "^1.1.3" 1899 | } 1900 | }, 1901 | "string2compact": { 1902 | "version": "1.3.2", 1903 | "resolved": "https://registry.npmjs.org/string2compact/-/string2compact-1.3.2.tgz", 1904 | "integrity": "sha512-3XUxUgwhj7Eqh2djae35QHZZT4mN3fsO7kagZhSGmhhlrQagVvWSFuuFIWnpxFS0CdTB2PlQcaL16RDi14I8uw==", 1905 | "requires": { 1906 | "addr-to-ip-port": "^1.0.1", 1907 | "ipaddr.js": "^2.0.0" 1908 | } 1909 | }, 1910 | "string_decoder": { 1911 | "version": "1.3.0", 1912 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 1913 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 1914 | "requires": { 1915 | "safe-buffer": "~5.2.0" 1916 | } 1917 | }, 1918 | "strip-ansi": { 1919 | "version": "6.0.1", 1920 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1921 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1922 | "requires": { 1923 | "ansi-regex": "^5.0.1" 1924 | } 1925 | }, 1926 | "tape": { 1927 | "version": "5.4.1", 1928 | "resolved": "https://registry.npmjs.org/tape/-/tape-5.4.1.tgz", 1929 | "integrity": "sha512-7bGaJ3WnQ/CX3xOWzlR+9lNptEWoD+11gyREP8k+SYrDu2a20EifKpTmZndXn25ZRxesYHSuNtE7Fb+THcjfGA==", 1930 | "requires": { 1931 | "array.prototype.every": "^1.1.3", 1932 | "call-bind": "^1.0.2", 1933 | "deep-equal": "^2.0.5", 1934 | "defined": "^1.0.0", 1935 | "dotignore": "^0.1.2", 1936 | "for-each": "^0.3.3", 1937 | "get-package-type": "^0.1.0", 1938 | "glob": "^7.2.0", 1939 | "has": "^1.0.3", 1940 | "has-dynamic-import": "^2.0.1", 1941 | "inherits": "^2.0.4", 1942 | "is-regex": "^1.1.4", 1943 | "minimist": "^1.2.5", 1944 | "object-inspect": "^1.12.0", 1945 | "object-is": "^1.1.5", 1946 | "object-keys": "^1.1.1", 1947 | "object.assign": "^4.1.2", 1948 | "resolve": "^2.0.0-next.3", 1949 | "resumer": "^0.0.0", 1950 | "string.prototype.trim": "^1.2.5", 1951 | "through": "^2.3.8" 1952 | } 1953 | }, 1954 | "text-encoding": { 1955 | "version": "0.7.0", 1956 | "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.7.0.tgz", 1957 | "integrity": "sha512-oJQ3f1hrOnbRLOcwKz0Liq2IcrvDeZRHXhd9RgLrsT+DjWY/nty1Hi7v3dtkaEYbPYe0mUoOfzRrMwfXXwgPUA==", 1958 | "optional": true 1959 | }, 1960 | "thirty-two": { 1961 | "version": "1.0.2", 1962 | "resolved": "https://registry.npmjs.org/thirty-two/-/thirty-two-1.0.2.tgz", 1963 | "integrity": "sha1-TKL//AKlEpDSdEueP1V2k8prYno=" 1964 | }, 1965 | "through": { 1966 | "version": "2.3.8", 1967 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1968 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" 1969 | }, 1970 | "thunky": { 1971 | "version": "1.1.0", 1972 | "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", 1973 | "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" 1974 | }, 1975 | "timeout-refresh": { 1976 | "version": "1.0.3", 1977 | "resolved": "https://registry.npmjs.org/timeout-refresh/-/timeout-refresh-1.0.3.tgz", 1978 | "integrity": "sha512-Mz0CX4vBGM5lj8ttbIFt7o4ZMxk/9rgudJRh76EvB7xXZMur7T/cjRiH2w4Fmkq0zxf2QpM8IFvOSRn8FEu3gA==", 1979 | "optional": true 1980 | }, 1981 | "to-arraybuffer": { 1982 | "version": "1.0.1", 1983 | "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", 1984 | "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" 1985 | }, 1986 | "torrent-discovery": { 1987 | "version": "9.4.7", 1988 | "resolved": "https://registry.npmjs.org/torrent-discovery/-/torrent-discovery-9.4.7.tgz", 1989 | "integrity": "sha512-7Zw474LJE5r3Momi4ykBYkjgcFhENbUxcAFs5cBllUkv9ErJPzPEGmpEuqX7V8TkLS+Clmt/l5CjV5IFHg/A/A==", 1990 | "requires": { 1991 | "bittorrent-dht": "^10.0.2", 1992 | "bittorrent-lsd": "^1.1.1", 1993 | "bittorrent-tracker": "^9.18.3", 1994 | "debug": "^4.3.2", 1995 | "run-parallel": "^1.2.0" 1996 | }, 1997 | "dependencies": { 1998 | "debug": { 1999 | "version": "4.3.3", 2000 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 2001 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 2002 | "requires": { 2003 | "ms": "2.1.2" 2004 | } 2005 | }, 2006 | "ms": { 2007 | "version": "2.1.2", 2008 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2009 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 2010 | } 2011 | } 2012 | }, 2013 | "torrent-piece": { 2014 | "version": "2.0.1", 2015 | "resolved": "https://registry.npmjs.org/torrent-piece/-/torrent-piece-2.0.1.tgz", 2016 | "integrity": "sha512-JLSOyvQVLI6JTWqioY4vFL0JkEUKQcaHQsU3loxkCvPTSttw8ePs2tFwsP4XIjw99Fz8EdOzt/4faykcbnPbCQ==" 2017 | }, 2018 | "tslib": { 2019 | "version": "2.3.1", 2020 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", 2021 | "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", 2022 | "optional": true 2023 | }, 2024 | "tweetnacl": { 2025 | "version": "1.0.3", 2026 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", 2027 | "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" 2028 | }, 2029 | "typedarray-to-buffer": { 2030 | "version": "3.1.5", 2031 | "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", 2032 | "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", 2033 | "requires": { 2034 | "is-typedarray": "^1.0.0" 2035 | } 2036 | }, 2037 | "uint64be": { 2038 | "version": "2.0.2", 2039 | "resolved": "https://registry.npmjs.org/uint64be/-/uint64be-2.0.2.tgz", 2040 | "integrity": "sha512-9QqdvpGQTXgxthP+lY4e/gIBy+RuqcBaC6JVwT5I3bDLgT/btL6twZMR0pI3/Fgah9G/pdwzIprE5gL6v9UvyQ==", 2041 | "requires": { 2042 | "buffer-alloc": "^1.1.0" 2043 | } 2044 | }, 2045 | "unbox-primitive": { 2046 | "version": "1.0.1", 2047 | "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", 2048 | "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", 2049 | "requires": { 2050 | "function-bind": "^1.1.1", 2051 | "has-bigints": "^1.0.1", 2052 | "has-symbols": "^1.0.2", 2053 | "which-boxed-primitive": "^1.0.2" 2054 | } 2055 | }, 2056 | "unordered-array-remove": { 2057 | "version": "1.0.2", 2058 | "resolved": "https://registry.npmjs.org/unordered-array-remove/-/unordered-array-remove-1.0.2.tgz", 2059 | "integrity": "sha1-xUbo+I4xegzyZEyX7LV9umbSUO8=" 2060 | }, 2061 | "unordered-set": { 2062 | "version": "2.0.1", 2063 | "resolved": "https://registry.npmjs.org/unordered-set/-/unordered-set-2.0.1.tgz", 2064 | "integrity": "sha512-eUmNTPzdx+q/WvOHW0bgGYLWvWHNT3PTKEQLg0MAQhc0AHASHVHoP/9YytYd4RBVariqno/mEUhVZN98CmD7bg==", 2065 | "optional": true 2066 | }, 2067 | "ut_metadata": { 2068 | "version": "3.5.2", 2069 | "resolved": "https://registry.npmjs.org/ut_metadata/-/ut_metadata-3.5.2.tgz", 2070 | "integrity": "sha512-3XZZuJSeoIUyMYSuDbTbVtP4KAVGHPfU8nmHFkr8LJc+THCaUXwnu/2AV+LCSLarET/hL9IlbNfYTGrt6fOVuQ==", 2071 | "requires": { 2072 | "bencode": "^2.0.1", 2073 | "bitfield": "^4.0.0", 2074 | "debug": "^4.2.0", 2075 | "simple-sha1": "^3.0.1" 2076 | }, 2077 | "dependencies": { 2078 | "debug": { 2079 | "version": "4.3.3", 2080 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 2081 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 2082 | "requires": { 2083 | "ms": "2.1.2" 2084 | } 2085 | }, 2086 | "ms": { 2087 | "version": "2.1.2", 2088 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2089 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 2090 | } 2091 | } 2092 | }, 2093 | "ut_pex": { 2094 | "version": "3.0.2", 2095 | "resolved": "https://registry.npmjs.org/ut_pex/-/ut_pex-3.0.2.tgz", 2096 | "integrity": "sha512-3xM88t+AVU5GR0sIY3tmRMLUS+YKiwStc7U7+ZFQ+UHQpX7BjVJOomhmtm0Bs+8R2n812Dt2ymXm01EqDrOOpQ==", 2097 | "requires": { 2098 | "bencode": "^2.0.2", 2099 | "compact2string": "^1.4.1", 2100 | "string2compact": "^1.3.2" 2101 | } 2102 | }, 2103 | "utf-8-validate": { 2104 | "version": "5.0.8", 2105 | "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.8.tgz", 2106 | "integrity": "sha512-k4dW/Qja1BYDl2qD4tOMB9PFVha/UJtxTc1cXYOe3WwA/2m0Yn4qB7wLMpJyLJ/7DR0XnTut3HsCSzDT4ZvKgA==", 2107 | "optional": true, 2108 | "requires": { 2109 | "node-gyp-build": "^4.3.0" 2110 | } 2111 | }, 2112 | "util-deprecate": { 2113 | "version": "1.0.2", 2114 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2115 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 2116 | }, 2117 | "utp-native": { 2118 | "version": "2.5.3", 2119 | "resolved": "https://registry.npmjs.org/utp-native/-/utp-native-2.5.3.tgz", 2120 | "integrity": "sha512-sWTrWYXPhhWJh+cS2baPzhaZc89zwlWCfwSthUjGhLkZztyPhcQllo+XVVCbNGi7dhyRlxkWxN4NKU6FbA9Y8w==", 2121 | "optional": true, 2122 | "requires": { 2123 | "napi-macros": "^2.0.0", 2124 | "node-gyp-build": "^4.2.0", 2125 | "readable-stream": "^3.0.2", 2126 | "timeout-refresh": "^1.0.0", 2127 | "unordered-set": "^2.0.1" 2128 | } 2129 | }, 2130 | "videostream": { 2131 | "version": "3.2.2", 2132 | "resolved": "https://registry.npmjs.org/videostream/-/videostream-3.2.2.tgz", 2133 | "integrity": "sha512-4tz23yGGeATmbzj/ZnUm6wgQ4E1lzmMXu2mUA/c0G6adtWKxm1Di5YejdZdRsK6SdkLjKjhplFFYT7r+UUDKvA==", 2134 | "requires": { 2135 | "binary-search": "^1.3.4", 2136 | "mediasource": "^2.2.2", 2137 | "mp4-box-encoding": "^1.3.0", 2138 | "mp4-stream": "^3.0.0", 2139 | "pump": "^3.0.0", 2140 | "range-slice-stream": "^2.0.0" 2141 | } 2142 | }, 2143 | "webcrypto-core": { 2144 | "version": "1.4.0", 2145 | "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.4.0.tgz", 2146 | "integrity": "sha512-HY3Zo0GcRIQUUDnlZ/shGjN+4f7LVMkdJZoGPog+oHhJsJdMz6iM8Za5xZ0t6qg7Fx/JXXz+oBv2J2p982hGTQ==", 2147 | "optional": true, 2148 | "requires": { 2149 | "@peculiar/asn1-schema": "^2.0.44", 2150 | "@peculiar/json-schema": "^1.1.12", 2151 | "asn1js": "^2.1.1", 2152 | "pvtsutils": "^1.2.0", 2153 | "tslib": "^2.3.1" 2154 | } 2155 | }, 2156 | "webtorrent": { 2157 | "version": "1.5.11", 2158 | "resolved": "https://registry.npmjs.org/webtorrent/-/webtorrent-1.5.11.tgz", 2159 | "integrity": "sha512-oM+2tXsZeQLh6Q+At4nMkvQzbHRqfI6I7k2Cc9qsxvy1orK8xp3LY5CqIWw02iXhxwGIJfSEoCnwFkMN5YxmPw==", 2160 | "requires": { 2161 | "@webtorrent/http-node": "^1.3.0", 2162 | "addr-to-ip-port": "^1.5.4", 2163 | "bitfield": "^4.0.0", 2164 | "bittorrent-dht": "^10.0.2", 2165 | "bittorrent-protocol": "^3.4.3", 2166 | "cache-chunk-store": "^3.2.2", 2167 | "chrome-net": "^3.3.4", 2168 | "chunk-store-stream": "^4.3.0", 2169 | "cpus": "^1.0.3", 2170 | "create-torrent": "^5.0.1", 2171 | "debug": "^4.3.3", 2172 | "end-of-stream": "^1.4.4", 2173 | "escape-html": "^1.0.3", 2174 | "fs-chunk-store": "^2.0.4", 2175 | "immediate-chunk-store": "^2.2.0", 2176 | "load-ip-set": "^2.2.1", 2177 | "lt_donthave": "^1.0.1", 2178 | "memory-chunk-store": "^1.3.5", 2179 | "mime": "^3.0.0", 2180 | "multistream": "^4.1.0", 2181 | "package-json-versionify": "^1.0.4", 2182 | "parse-torrent": "^9.1.4", 2183 | "pump": "^3.0.0", 2184 | "queue-microtask": "^1.2.3", 2185 | "random-iterate": "^1.0.1", 2186 | "randombytes": "^2.1.0", 2187 | "range-parser": "^1.2.1", 2188 | "render-media": "^4.1.0", 2189 | "run-parallel": "^1.2.0", 2190 | "run-parallel-limit": "^1.1.0", 2191 | "simple-concat": "^1.0.1", 2192 | "simple-get": "^4.0.0", 2193 | "simple-peer": "^9.11.0", 2194 | "simple-sha1": "^3.1.0", 2195 | "speed-limiter": "^1.0.2", 2196 | "speedometer": "^1.1.0", 2197 | "stream-to-blob": "^2.0.1", 2198 | "stream-to-blob-url": "^3.0.2", 2199 | "stream-with-known-length-to-buffer": "^1.0.4", 2200 | "torrent-discovery": "^9.4.7", 2201 | "torrent-piece": "^2.0.1", 2202 | "unordered-array-remove": "^1.0.2", 2203 | "ut_metadata": "^3.5.2", 2204 | "ut_pex": "^3.0.2", 2205 | "utp-native": "^2.5.3" 2206 | }, 2207 | "dependencies": { 2208 | "debug": { 2209 | "version": "4.3.3", 2210 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", 2211 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", 2212 | "requires": { 2213 | "ms": "2.1.2" 2214 | } 2215 | }, 2216 | "ms": { 2217 | "version": "2.1.2", 2218 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2219 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 2220 | } 2221 | } 2222 | }, 2223 | "which-boxed-primitive": { 2224 | "version": "1.0.2", 2225 | "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", 2226 | "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", 2227 | "requires": { 2228 | "is-bigint": "^1.0.1", 2229 | "is-boolean-object": "^1.1.0", 2230 | "is-number-object": "^1.0.4", 2231 | "is-string": "^1.0.5", 2232 | "is-symbol": "^1.0.3" 2233 | } 2234 | }, 2235 | "which-collection": { 2236 | "version": "1.0.1", 2237 | "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", 2238 | "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", 2239 | "requires": { 2240 | "is-map": "^2.0.1", 2241 | "is-set": "^2.0.1", 2242 | "is-weakmap": "^2.0.1", 2243 | "is-weakset": "^2.0.1" 2244 | } 2245 | }, 2246 | "which-module": { 2247 | "version": "2.0.0", 2248 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", 2249 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" 2250 | }, 2251 | "which-typed-array": { 2252 | "version": "1.1.7", 2253 | "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", 2254 | "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==", 2255 | "requires": { 2256 | "available-typed-arrays": "^1.0.5", 2257 | "call-bind": "^1.0.2", 2258 | "es-abstract": "^1.18.5", 2259 | "foreach": "^2.0.5", 2260 | "has-tostringtag": "^1.0.0", 2261 | "is-typed-array": "^1.1.7" 2262 | } 2263 | }, 2264 | "wrap-ansi": { 2265 | "version": "6.2.0", 2266 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", 2267 | "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", 2268 | "requires": { 2269 | "ansi-styles": "^4.0.0", 2270 | "string-width": "^4.1.0", 2271 | "strip-ansi": "^6.0.0" 2272 | } 2273 | }, 2274 | "wrappy": { 2275 | "version": "1.0.2", 2276 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2277 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 2278 | }, 2279 | "ws": { 2280 | "version": "7.5.6", 2281 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", 2282 | "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==" 2283 | }, 2284 | "y18n": { 2285 | "version": "4.0.3", 2286 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", 2287 | "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" 2288 | }, 2289 | "yargs": { 2290 | "version": "15.4.1", 2291 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", 2292 | "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", 2293 | "requires": { 2294 | "cliui": "^6.0.0", 2295 | "decamelize": "^1.2.0", 2296 | "find-up": "^4.1.0", 2297 | "get-caller-file": "^2.0.1", 2298 | "require-directory": "^2.1.1", 2299 | "require-main-filename": "^2.0.0", 2300 | "set-blocking": "^2.0.0", 2301 | "string-width": "^4.2.0", 2302 | "which-module": "^2.0.0", 2303 | "y18n": "^4.0.0", 2304 | "yargs-parser": "^18.1.2" 2305 | } 2306 | }, 2307 | "yargs-parser": { 2308 | "version": "18.1.3", 2309 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", 2310 | "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", 2311 | "requires": { 2312 | "camelcase": "^5.0.0", 2313 | "decamelize": "^1.2.0" 2314 | } 2315 | } 2316 | } 2317 | } 2318 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "entangler", 3 | "version": "0.1.8", 4 | "description": "Authenticate Gun DB users with a one-time password", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/draeder/entangler.git" 12 | }, 13 | "keywords": [ 14 | "one time password", 15 | "OTP", 16 | "TOTP", 17 | "gun", 18 | "gun", 19 | "db", 20 | "p2p", 21 | "decentralization" 22 | ], 23 | "author": "Daniel Raeder", 24 | "license": "MIT", 25 | "bugs": { 26 | "url": "https://github.com/draeder/entangler/issues" 27 | }, 28 | "homepage": "https://github.com/draeder/entangler#readme", 29 | "dependencies": { 30 | "@otplib/preset-default": "^12.0.1", 31 | "bugoff": "0.0.8", 32 | "hi-base32": "^0.5.1", 33 | "qrcode": "^1.5.0", 34 | "readline-sync": "^1.4.10" 35 | }, 36 | "devDependencies": {} 37 | } 38 | --------------------------------------------------------------------------------