secure-scuttlebot classic

add patchbay to the repo and get it all wired up and working

+55 -217
README.md
··· 1 - # ssb-server 1 + # Secure-Scuttlebot Classic 2 2 3 - ssb-server is an open source **peer-to-peer log store** used as a database, identity provider, and messaging system. 3 + sbotc is an open source **peer-to-peer log store** used as a database, identity provider, and messaging system. 4 4 It has: 5 5 6 6 - Global replication ··· 12 12 Peers do not have to be trusted, and can share logs and files on behalf of other peers, as each log is an unforgeable append-only message feed. 13 13 This means ssb-servers comprise a [global gossip-protocol mesh](https://en.wikipedia.org/wiki/Gossip_protocol) without any host dependencies. 14 14 15 - If you are looking to use ssb-server to run a pub, consider using [ssb-minimal-pub-server](https://github.com/ssbc/ssb-minimal-pub-server) instead. 16 - 17 - **Join us in #scuttlebutt on [Libera Chat](https://libera.chat/).** 18 - 19 - [![build status](https://secure.travis-ci.org/ssbc/ssb-server.png)](http://travis-ci.org/ssbc/ssb-server) 20 - 21 - ## Install 22 - 23 - How to Install `ssb-server` and create a working pub 24 - 25 - 1. `sudo apt install curl autotools-dev automake` 26 - 27 - 2. Install the Node Version Manager (NVM): 28 - 29 - ``` 30 - curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash 31 - ``` 32 - 33 - 3. Close and reopen your terminal to start using nvm or run the following: 34 - 35 - ``` 36 - export NVM_DIR="$HOME/.nvm" 37 - [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm 38 - [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion 39 - ``` 40 - 41 - 4. `nvm install 10` 42 - 43 - 5. `nvm alias default 10` 44 - 45 - 6. `npm install -g node-gyp` 46 - 47 - 7. Then to add `ssb-server` to your available CLI commands, install it using the `-g` global flag: 48 - 49 - ``` 50 - npm install -g ssb-server 51 - ``` 52 - 53 - If you are running as the root user this command will fail. Ideally you would run ssb-server as a non-priviledged user, but if you have to run it as root you can do so with `npm install -g ssb-server --unsafe-perm`. 54 - 55 - 8. `nano ~/run-server.sh` and input: 56 - 57 - ``` 58 - #!/bin/bash 59 - while true; do 60 - ssb-server start 61 - sleep 3 62 - done 63 - ``` 64 - 65 - Input Ctrl-X to save and quit. 66 - 67 - Be sure to start the pub server from this script (as shown in step 10), as this script will run the pub server and restart it even if it crashes. 68 - 69 - 9. `mkdir ~/.ssb/` 70 - 71 - 10. `nano ~/.ssb/config` and input: 72 - 73 - ``` 74 - { 75 - "connections": { 76 - "incoming": { 77 - "net": [ 78 - { "scope": "public", "host": "0.0.0.0", "external": "Your Host Name or Public IP", "transform": "shs", "port": 8008 } 79 - ] 80 - }, 81 - "outgoing": { 82 - "net": [{ "transform": "shs" }] 83 - } 84 - } 85 - } 86 - ``` 15 + ### Classic rational 87 16 88 - 11. Now run `sh ~/run-server.sh` in a detachable session (e.g. screens) 89 - 90 - 12. Detach the session and run `ssb-server whoami` to check to see if the server is working. 91 - 92 - 13. Now is the time to think of a really cool name for your new pub server. Once you have it run: 93 - 94 - `ssb-server publish --type about --about {pub-id (this is the output from ssb-server whoami)} --name {Your pubs awesome name}` 17 + ssb was abandoned in 2024, this is an attempt to restore the original "classic" functionality. This repo is maintained by Everett Bogue. please reach out if you have any questions to the contact information present at https://evbogue.com/ 95 18 96 - 14. Now it's time to create those invites! 97 - Just run `ssb-server invite.create 1` and send those codes to your friends. 19 + ## Patchbay Lite web client 98 20 99 - Congratulations! You are now ready to scuttlebutt with your friends! 21 + This repo bundles the original browser version of Patchbay (circa 2016) as a lightweight web client. 22 + It runs entirely in the browser and connects to your local ssb server over `ssb-ws`. 100 23 101 - >Note for those running `ssb-server` from a home computer. 102 - >You will need to make sure that your router will allow connections to port 8008. Thus, you will need to forward port 8008 to the local IP address of the computer running the server (look up how to do this online). 103 - >If you haven't done this step, when a client tries to connect to your server using the invite code, they will get an error that your invite code is not valid. 24 + ### What it is 104 25 26 + - `patchbay/` is a copy of the original Patchbay codebase, lightly wired into this server 27 + - `lib/frontend.js` serves the Patchbay Lite bundle at `/` when it has been built 28 + - The code and UI are kept as close as possible to the 2016 era version 105 29 30 + ### Building the Patchbay Lite bundle 106 31 107 - ## Applications 32 + From the repo root: 108 33 109 - There are already several applications built on `ssb-server`, 110 - one of the best ways to learn about secure-scuttlebutt is to poke around in these applications. 34 + - `cd patchbay` 35 + - `npm install --ignore-scripts` 36 + - `npm run lite` 111 37 112 - * [patchwork](http://github.com/ssbc/patchwork) is a discussion platform that we use to anything and everything concerning ssb and decentralization. 113 - * [patchbay](http://github.com/ssbc/patchbay) is another take on patchwork - it's compatible, less polished, but more modular. The main goal of patchbay is to be very easy to add features to. 114 - * [git-ssb](https://github.com/clehner/git-ssb) is git (& github!) on top of secure-scuttlebutt. Although we still keep our repos on github, primary development is via git-ssb. 38 + This produces `patchbay/build/index.html`, which is what the server will serve to browsers. 115 39 116 - It is recommended to get started with patchwork, and then look into git-ssb and patchbay. 40 + ### Running Patchbay Lite 117 41 118 - ## Starting an `ssb-server` 42 + With the bundle built: 119 43 120 - ### Command Line Usage Example 44 + - From the repo root, start the server with `npm start` 45 + - Open `http://localhost:8989/` in a browser 121 46 122 - Start the server with extra log detail 123 - Leave this running in its own terminal/window 124 - ```bash 125 - ssb-server start --logging.level=info 126 - ``` 47 + The server will: 127 48 128 - ### Javascript Usage Example 49 + - Serve the Patchbay Lite UI at `/` 50 + - Expose the RPC and blob endpoints needed by the client over `ssb-ws` 129 51 130 - ```js 131 - var Server = require('ssb-server') 132 - var config = require('ssb-config') 133 - var fs = require('fs') 134 - var path = require('path') 52 + You can then: 135 53 136 - // add plugins 137 - Server 138 - .use(require('ssb-master')) 139 - .use(require('ssb-gossip')) 140 - .use(require('ssb-replicate')) 141 - .use(require('ssb-backlinks')) 54 + - Browse and publish messages from the browser 55 + - Edit your avatar and name using `about` messages 142 56 143 - var server = Server(config) 57 + ## Getting Started 144 58 145 - // save an updated list of methods this server has made public 146 - // in a location that ssb-client will know to check 147 - var manifest = server.getManifest() 148 - fs.writeFileSync( 149 - path.join(config.path, 'manifest.json'), // ~/.ssb/manifest.json 150 - JSON.stringify(manifest) 151 - ) 152 - ``` 153 - see: [github.com/ssbc/**ssb-config**](https://github.com/ssbc/ssb-config) for custom configuration. 59 + ### Install dependencies 154 60 155 - ## Calling `ssb-server` Functions 61 + From the repo root: 156 62 157 - There are a variety of ways to call `ssb-server` methods, from a command line as well as in a javascript program. 63 + - `npm install` 158 64 159 - ### Command Line Usage Example 65 + ### Start the sbot server 160 66 161 - The command `ssb-server` can also used to call the running `ssb-server`. 67 + From the repo root: 162 68 163 - Now, in a separate terminal from the one where you ran `ssb-server start`, you can run commands such as the following: 164 - ```bash 165 - # publish a message 166 - ssb-server publish --type post --text "My First Post!" 69 + - `npm start` 167 70 168 - # stream all messages in all feeds, ordered by publish time 169 - ssb-server feed 71 + This is equivalent to: 170 72 171 - # stream all messages in all feeds, ordered by receive time 172 - ssb-server log 73 + - `node bin start` 173 74 174 - # stream all messages by one feed, ordered by sequence number 175 - ssb-server hist --id $FEED_ID 176 - ``` 75 + By default this will: 177 76 178 - ### Javascript Usage Example 77 + - Use the appname from `process.env.ssb_appname` (or the default `ssb` app name) for its config and data directory. 78 + - Create (or reuse) keys under that app directory. 79 + - Write the RPC manifest to `~/.ssb/manifest.json` (or the appname-specific path). 179 80 180 - Note that the following involves using a separate JS package, called [ssb-client](https://github.com/ssbc/ssb-client). It is most suitable for connecting to a running `ssb-server` and calling its methods. To see further distinctions between `ssb-server` and `ssb-client`, check out this [handbook article](https://handbook.scuttlebutt.nz/guides/ssb-server-context). 81 + You should see output like: 181 82 182 - ```js 183 - var pull = require('pull-stream') 184 - var Client = require('ssb-client') 83 + - `ssb-server <version> <path> logging.level:<level>` 84 + - `my key ID: <@yourPublicKey>` 185 85 186 - // create a ssb-server client using default settings 187 - // (server at localhost:8080, using key found at ~/.ssb/secret, and manifest we wrote to `~/.ssb/manifest.json` above) 188 - Client(function (err, server) { 189 - if (err) throw err 86 + Leave that process running; it is your local sbot node. 190 87 191 - // publish a message 192 - server.publish({ type: 'post', text: 'My First Post!' }, function (err, msg) { 193 - // msg.key == hash(msg.value) 194 - // msg.value.author == your id 195 - // msg.value.content == { type: 'post', text: 'My First Post!' } 196 - // ... 197 - }) 88 + ### Connecting as a client 198 89 199 - // stream all messages in all feeds, ordered by publish time 200 - pull( 201 - server.createFeedStream(), 202 - pull.collect(function (err, msgs) { 203 - // msgs[0].key == hash(msgs[0].value) 204 - // msgs[0].value... 205 - }) 206 - ) 90 + With the server running, you can run additional commands using the same CLI: 207 91 208 - // stream all messages in all feeds, ordered by receive time 209 - pull( 210 - server.createLogStream(), 211 - pull.collect(function (err, msgs) { 212 - // msgs[0].key == hash(msgs[0].value) 213 - // msgs[0].value... 214 - }) 215 - ) 92 + - `node bin <command> [...args]` 216 93 217 - // stream all messages by one feed, ordered by sequence number 218 - pull( 219 - server.createHistoryStream({ id: < feedId > }), 220 - pull.collect(function (err, msgs) { 221 - // msgs[0].key == hash(msgs[0].value) 222 - // msgs[0].value... 223 - }) 224 - ) 225 - }) 226 - ``` 94 + Examples: 227 95 228 - ## Use Cases 96 + - `node bin whoami` 97 + - `node bin gossip.peers` 98 + - `node bin status` 229 99 230 - `ssb-server`'s message-based data structure makes it ideal for mail and forum applications (see [Patchwork](https://ssbc.github.io/patchwork/)). 231 - However, it is sufficiently general to be used to build: 100 + ### Creating an invite 232 101 233 - - Office tools (calendars, document-sharing, tasklists) 234 - - Wikis 235 - - Package managers 102 + Once the server is running and reachable, you can create an invite code: 236 103 237 - Because `ssb-server` doesn't depend on hosts, its users can synchronize over WiFi or any other connective medium, making it great for [Sneakernets](https://en.wikipedia.org/wiki/Sneakernet). 104 + - `node bin invite.create 1` 238 105 239 - `ssb-server` is [eventually-consistent with peers](https://en.wikipedia.org/wiki/Eventual_consistency), and requires exterior coordination to create strictly-ordered transactions. 240 - Therefore, by itself, it would probably make a poor choice for implementing a crypto-currency. 241 - (We get asked that a lot.) 106 + This will print an invite string you can pass to another peer so they can join and follow your server. 242 107 243 108 --- 244 - 245 - ### Getting Started 246 - 247 - - [Install](https://handbook.scuttlebutt.nz/guides/ssb-server/install) - Setup instructions 248 - - [Tutorial](https://handbook.scuttlebutt.nz/guides/ssb-server/tutorial) - Primer on developing with ssb-server 249 - - [API / CLI Reference](https://scuttlebot.io/apis/scuttlebot/ssb.html) (out of date, but still the best reference) 250 - - [ssb-config](https://github.com/ssbc/ssb-config) - a module which helps build config to start ssb-server with 251 - - [ssb-client](https://github.com/ssbc/ssb-client) - make a remote connection to the server 252 - - [Modules docs](https://modules.scuttlebutt.nz) - see an overview of all the modules 253 - 254 - ### Key Concepts 255 - 256 - - [Secure Scuttlebutt](https://ssbc.github.io/scuttlebutt-protocol-guide/), ssb-server's global database protocol 257 - - [Content Hash Linking](https://ssbc.github.io/docs/ssb/linking.html) 258 - - [Secret Handshake](https://ssbc.github.io/docs/ssb/secret-handshake.html), ssb-server's transport-layer security protocol 259 - - [Private Box](https://ssbc.github.io/docs/ssb/end-to-end-encryption.html), ssb-server's end-to-end security protocol 260 - - [Frequently Asked Questions](https://ssbc.github.io/docs/ssb/faq.html) 261 - 262 - ### Further Reading 263 - 264 - - [Design Challenge: Avoid Centralization and Singletons](https://handbook.scuttlebutt.nz/stories/design-challenge-avoid-centralization-and-singletons) 265 - - [Design Challenge: Sybil Attacks](https://handbook.scuttlebutt.nz/stories/design-challenge-sybil-attacks) 266 - - [Using Trust in Open Networks](https://handbook.scuttlebutt.nz/stories/using-trust-in-open-networks) 267 - 268 - 269 - # License 270 - 271 109 MIT
+30 -1
index.js
··· 3 3 4 4 // create a sbot with default caps. these can be overridden again when you call create. 5 5 function createSsbServer () { 6 - return SecretStack({ caps }) 6 + return SecretStack({ 7 + caps: caps, 8 + permissions: { 9 + anonymous: { 10 + // allow Patchbay / browser clients over ssb-ws + noauth 11 + allow: [ 12 + 'whoami', 13 + 'createLogStream', 14 + 'createUserStream', 15 + 'createHistoryStream', 16 + 'createFeedStream', 17 + 'createSequenceStream', 18 + 'messagesByType', 19 + 'get', 20 + 'getLatest', 21 + 'latest', 22 + 'latestSequence', 23 + 'add', 24 + 'del', 25 + 'links', 26 + 'links2.read', 27 + 'status', 28 + 'progress', 29 + 'version', 30 + 'help', 31 + 'query.read' 32 + ] 33 + } 34 + } 35 + }) 7 36 .use(require('ssb-db')) 8 37 } 9 38 module.exports = createSsbServer()
+54 -12
lib/frontend.js
··· 11 11 return {} 12 12 13 13 var publicDir = path.join(__dirname, '..', 'public') 14 + var patchbayDir = path.join(__dirname, '..', 'patchbay') 15 + var patchbayIndex = path.join(patchbayDir, 'build', 'index.html') 16 + var hasPatchbay = fs.existsSync(patchbayIndex) 17 + 18 + function serveFile (res, filePath) { 19 + var ext = path.extname(filePath) 20 + var contentType = 'text/plain' 21 + if (ext === '.html') contentType = 'text/html; charset=utf-8' 22 + else if (ext === '.js') contentType = 'application/javascript; charset=utf-8' 23 + else if (ext === '.css') contentType = 'text/css; charset=utf-8' 24 + else if (ext === '.json') contentType = 'application/json; charset=utf-8' 25 + 26 + res.writeHead(200, {'Content-Type': contentType}) 27 + fs.createReadStream(filePath).pipe(res) 28 + } 14 29 15 30 sbot.ws.use(function (req, res, next) { 16 31 var url = req.url.split('?')[0] ··· 53 68 54 69 if (req.method !== 'GET' && req.method !== 'HEAD') return next() 55 70 71 + if ((url === '/' || url === '/index.html') && hasPatchbay) { 72 + var host = req.headers && req.headers.host 73 + var remote = null 74 + 75 + if (host && sbot.id && typeof sbot.id === 'string') { 76 + var i = sbot.id.indexOf('.') 77 + var key = i === -1 ? sbot.id.substring(1) : sbot.id.substring(1, i) 78 + remote = 'ws://' + host + '~shs:' + key 79 + } 80 + 81 + return fs.readFile(patchbayIndex, 'utf8', function (err, html) { 82 + if (err) return next(err) 83 + 84 + if (remote) { 85 + var script = '<script>window.PATCHBAY_REMOTE = ' + 86 + JSON.stringify(remote) + 87 + ';</script>' 88 + html = html.replace('</head>', script + '</head>') 89 + } 90 + 91 + res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'}) 92 + res.end(html) 93 + }) 94 + } 95 + 56 96 if (url === '/log.json') { 57 97 if (!sbot.createLogStream) 58 98 return next() ··· 72 112 73 113 if (url === '/') url = '/index.html' 74 114 75 - var filePath = path.join(publicDir, url.replace(/^\/+/, '')) 115 + var relPath = url.replace(/^\/+/, '') 116 + var filePath = path.join(publicDir, relPath) 117 + var patchbayPath = path.join(patchbayDir, relPath) 76 118 77 - if (filePath.indexOf(publicDir) !== 0) return next() 119 + if (filePath.indexOf(publicDir) !== 0 || relPath.indexOf('..') !== -1) 120 + filePath = null 121 + if (patchbayPath.indexOf(patchbayDir) !== 0 || relPath.indexOf('..') !== -1) 122 + patchbayPath = null 78 123 79 - fs.stat(filePath, function (err, stat) { 80 - if (err || !stat.isFile()) return next() 124 + fs.stat(filePath || patchbayPath, function (err, stat) { 125 + if (!err && stat && stat.isFile() && filePath) return serveFile(res, filePath) 81 126 82 - var ext = path.extname(filePath) 83 - var contentType = 'text/plain' 84 - if (ext === '.html') contentType = 'text/html; charset=utf-8' 85 - else if (ext === '.js') contentType = 'application/javascript; charset=utf-8' 86 - else if (ext === '.css') contentType = 'text/css; charset=utf-8' 87 - else if (ext === '.json') contentType = 'application/json; charset=utf-8' 127 + if (!patchbayPath) return next() 88 128 89 - res.writeHead(200, {'Content-Type': contentType}) 90 - fs.createReadStream(filePath).pipe(res) 129 + fs.stat(patchbayPath, function (err2, stat2) { 130 + if (err2 || !stat2 || !stat2.isFile()) return next() 131 + serveFile(res, patchbayPath) 132 + }) 91 133 }) 92 134 }) 93 135
+6
patchbay/.gitignore
··· 1 + node_modules 2 + npm-debug.log 3 + .npmignore 4 + build 5 + modules/_index.js 6 + style.css.json
+4
patchbay/.travis.yml
··· 1 + language: node_js 2 + node_js: 3 + - 0.6 4 + - 0.8
+22
patchbay/LICENSE
··· 1 + Copyright (c) 2016 Dominic Tarr 2 + 3 + Permission is hereby granted, free of charge, 4 + to any person obtaining a copy of this software and 5 + associated documentation files (the "Software"), to 6 + deal in the Software without restriction, including 7 + without limitation the rights to use, copy, modify, 8 + merge, publish, distribute, sublicense, and/or sell 9 + copies of the Software, and to permit persons to whom 10 + the Software is furnished to do so, 11 + subject to the following conditions: 12 + 13 + The above copyright notice and this permission notice 14 + shall be included in all copies or substantial portions of the Software. 15 + 16 + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 18 + OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR 20 + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21 + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22 + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+87
patchbay/README.md
··· 1 + # patchbay 2 + 3 + Prototype of a pluggable patchwork. 4 + 5 + `patchbay` is an secure-scuttlebutt client interface 6 + that is fully compatible with [patchwork](https://github.com/ssbc/patchwork) 7 + 8 + I started `patchbay` to experiment with a different internal architecture 9 + based on [depject](https://github.com/dominictarr/depject). The goal was 10 + to make it easier to develop new features, and enable or disable features. 11 + This has so far been quite successful! 12 + 13 + This makes in very easy to create say, a renderer for a new message type, 14 + or switch to a different method for choosing user names. 15 + 16 + ## Running 17 + 18 + ``` 19 + npm install scuttlebot@latest -g 20 + # make sure you have secure-scuttlebutt@15.2.0 21 + npm ls secure-scuttlebutt -g 22 + sbot server 23 + # if you are already running patchwork, that also works. 24 + # (must have at least >= 2.8) 25 + 26 + # then in another tab (these must be 3 separate commands) 27 + sbot plugins.install ssb-links 28 + sbot plugins.install ssb-query 29 + sbot plugins.install ssb-ws 30 + # restart sbot server (go back to previous tab and kill it) 31 + ``` 32 + now clone and run patchbay. 33 + ``` 34 + git clone https://github.com/dominictarr/patchbay.git 35 + cd patchbay 36 + npm install 37 + npm run rebuild 38 + npm run bundle 39 + npm start 40 + ``` 41 + 42 + ## Lite 43 + 44 + To run a lite client in the browser instead of using electron, use npm 45 + run lite from the prompt instead of run bundle. After that you need to 46 + generate a modern invite: 47 + 48 + ``` 49 + sbot invite.create --modern 50 + ``` 51 + 52 + Also set up sbot to allow these connections with: 53 + 54 + ``` 55 + sbot server --allowPrivate 56 + ``` 57 + 58 + Lastly open build/index.html in a browser and append the invite 59 + created above using: index.html#ws://localhost:8989.... 60 + 61 + ## how to add a feature 62 + 63 + To add a new message type, add add a js to `./modules/` that 64 + exports a function named `message_content` (it should return an html element) 65 + To add a new tab, export a function named `screen_view` (returns an html element) 66 + 67 + To add a new detail, that appears above a message, 68 + export a function named `message_meta`. 69 + 70 + see the code for more examples. 71 + 72 + ## module graph 73 + 74 + patchbay uses [depject](http://github.com/dominictarr/depject) to manage it's modules. 75 + here is a graph of the current connections between them. (round shows module, 76 + square shows api, arrow direction points from user to provider) 77 + 78 + [module graph](./graph.svg) 79 + 80 + ## License 81 + 82 + MIT 83 + 84 + 85 + 86 + 87 +
+6
patchbay/basic.js
··· 1 + require('depject')( 2 + require('./modules_core'), 3 + require('./modules_basic') 4 + ).app[0]() 5 + 6 +
+48
patchbay/config.js
··· 1 + 2 + var URL = require('url') 3 + 4 + function loadRemote () { 5 + var remote = null 6 + 7 + if (typeof window !== 'undefined' && window.PATCHBAY_REMOTE) { 8 + remote = window.PATCHBAY_REMOTE 9 + 10 + if (typeof localStorage !== 'undefined') { 11 + try { localStorage.remote = remote } catch (e) {} 12 + } 13 + } else if (typeof localStorage !== 'undefined') { 14 + try { 15 + remote = localStorage.remote || null 16 + } catch (e) { 17 + remote = null 18 + } 19 + } 20 + 21 + return remote 22 + } 23 + 24 + module.exports = function () { 25 + var remote = loadRemote() 26 + 27 + //TODO: use _several_ remotes, so if one goes down, 28 + // you can still communicate via another... 29 + // also, if a blob does not load, use another pub... 30 + 31 + //if we are the light client, get our blobs from the same domain. 32 + var blobsUrl 33 + if (remote) { 34 + var r = URL.parse(remote.split('~')[0]) 35 + //this will work for ws and wss. 36 + r.protocol = r.protocol.replace('ws', 'http') 37 + r.pathname = '/blobs/get' 38 + blobsUrl = URL.format(r) 39 + } 40 + else 41 + blobsUrl = 'http://localhost:8989/blobs/get' 42 + 43 + return { 44 + remote: remote, 45 + blobsUrl: blobsUrl 46 + } 47 + } 48 +
+19
patchbay/electron-shim.js
··· 1 + function Menu () {} 2 + 3 + Menu.prototype.append = function () {} 4 + Menu.prototype.popup = function () {} 5 + 6 + function MenuItem () {} 7 + 8 + module.exports = { 9 + remote: { 10 + Menu: Menu, 11 + MenuItem: MenuItem, 12 + getCurrentWindow: function () { 13 + return { 14 + inspectElement: function () {} 15 + } 16 + } 17 + } 18 + } 19 +
+9
patchbay/embedded.js
··· 1 + require('depject')( 2 + require('./modules_embedded'), 3 + require('./modules_basic'), 4 + require('./modules_extra') 5 + ).plugs.app[0]() 6 + 7 + 8 + 9 +
+853
patchbay/graph.svg
··· 1 + <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 + <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 3 + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> 4 + <!-- Generated by graphviz version 2.38.0 (20140413.2041) 5 + --> 6 + <!-- Title: depject Pages: 1 --> 7 + <svg width="1551pt" height="1340pt" 8 + viewBox="0.00 0.00 1551.12 1340.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> 9 + <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1336)"> 10 + <title>depject</title> 11 + <polygon fill="white" stroke="none" points="-4,4 -4,-1336 1547.12,-1336 1547.12,4 -4,4"/> 12 + <!-- about_JS --> 13 + <g id="node1" class="node"><title>about_JS</title> 14 + <ellipse fill="none" stroke="black" cx="840.118" cy="-450" rx="38.1938" ry="18"/> 15 + <text text-anchor="middle" x="840.118" y="-446.3" font-family="Times,serif" font-size="14.00">about.js</text> 16 + </g> 17 + <!-- avatar_image_JS --> 18 + <g id="node2" class="node"><title>avatar_image_JS</title> 19 + <ellipse fill="none" stroke="black" cx="934.118" cy="-162" rx="65.7887" ry="18"/> 20 + <text text-anchor="middle" x="934.118" y="-158.3" font-family="Times,serif" font-size="14.00">avatar&#45;image.js</text> 21 + </g> 22 + <!-- sbot_whoami --> 23 + <g id="node32" class="node"><title>sbot_whoami</title> 24 + <polygon fill="none" stroke="black" points="1126.62,-108 1035.62,-108 1035.62,-72 1126.62,-72 1126.62,-108"/> 25 + <text text-anchor="middle" x="1081.12" y="-86.3" font-family="Times,serif" font-size="14.00">sbot_whoami</text> 26 + </g> 27 + <!-- avatar_image_JS&#45;&gt;sbot_whoami --> 28 + <g id="edge1" class="edge"><title>avatar_image_JS&#45;&gt;sbot_whoami</title> 29 + <path fill="none" stroke="black" d="M965.292,-146.155C985.885,-136.349 1013.2,-123.341 1036.13,-112.421"/> 30 + <polygon fill="black" stroke="black" points="1037.81,-115.499 1045.33,-108.04 1034.8,-109.179 1037.81,-115.499"/> 31 + </g> 32 + <!-- sbot_links --> 33 + <g id="node33" class="node"><title>sbot_links</title> 34 + <polygon fill="none" stroke="black" points="707.118,-108 633.118,-108 633.118,-72 707.118,-72 707.118,-108"/> 35 + <text text-anchor="middle" x="670.118" y="-86.3" font-family="Times,serif" font-size="14.00">sbot_links</text> 36 + </g> 37 + <!-- avatar_image_JS&#45;&gt;sbot_links --> 38 + <g id="edge3" class="edge"><title>avatar_image_JS&#45;&gt;sbot_links</title> 39 + <path fill="none" stroke="black" d="M888.734,-148.967C840.837,-136.267 765.699,-116.344 717.178,-103.478"/> 40 + <polygon fill="black" stroke="black" points="717.81,-100.025 707.247,-100.845 716.016,-106.791 717.81,-100.025"/> 41 + </g> 42 + <!-- avatar_profile_JS --> 43 + <g id="node3" class="node"><title>avatar_profile_JS</title> 44 + <ellipse fill="none" stroke="black" cx="1170.12" cy="-594" rx="67.6881" ry="18"/> 45 + <text text-anchor="middle" x="1170.12" y="-590.3" font-family="Times,serif" font-size="14.00">avatar&#45;profile.js</text> 46 + </g> 47 + <!-- avatar_image --> 48 + <g id="node34" class="node"><title>avatar_image</title> 49 + <polygon fill="none" stroke="black" points="994.618,-252 903.618,-252 903.618,-216 994.618,-216 994.618,-252"/> 50 + <text text-anchor="middle" x="949.118" y="-230.3" font-family="Times,serif" font-size="14.00">avatar_image</text> 51 + </g> 52 + <!-- avatar_profile_JS&#45;&gt;avatar_image --> 53 + <g id="edge5" class="edge"><title>avatar_profile_JS&#45;&gt;avatar_image</title> 54 + <path fill="none" stroke="black" d="M1150.33,-576.625C1139.16,-566.75 1125.41,-553.5 1115.12,-540 1043.39,-445.882 984.069,-316.788 960.294,-261.682"/> 55 + <polygon fill="black" stroke="black" points="963.423,-260.098 956.273,-252.279 956.986,-262.85 963.423,-260.098"/> 56 + </g> 57 + <!-- avatar_action --> 58 + <g id="node35" class="node"><title>avatar_action</title> 59 + <polygon fill="none" stroke="black" points="1216.12,-540 1124.12,-540 1124.12,-504 1216.12,-504 1216.12,-540"/> 60 + <text text-anchor="middle" x="1170.12" y="-518.3" font-family="Times,serif" font-size="14.00">avatar_action</text> 61 + </g> 62 + <!-- avatar_profile_JS&#45;&gt;avatar_action --> 63 + <g id="edge7" class="edge"><title>avatar_profile_JS&#45;&gt;avatar_action</title> 64 + <path fill="none" stroke="black" d="M1170.12,-575.697C1170.12,-567.983 1170.12,-558.712 1170.12,-550.112"/> 65 + <polygon fill="black" stroke="black" points="1173.62,-550.104 1170.12,-540.104 1166.62,-550.104 1173.62,-550.104"/> 66 + </g> 67 + <!-- avatar_JS --> 68 + <g id="node4" class="node"><title>avatar_JS</title> 69 + <ellipse fill="none" stroke="black" cx="1061.12" cy="-306" rx="40.8928" ry="18"/> 70 + <text text-anchor="middle" x="1061.12" y="-302.3" font-family="Times,serif" font-size="14.00">avatar.js</text> 71 + </g> 72 + <!-- avatar_JS&#45;&gt;avatar_image --> 73 + <g id="edge11" class="edge"><title>avatar_JS&#45;&gt;avatar_image</title> 74 + <path fill="none" stroke="black" d="M1038.45,-290.834C1023.21,-281.309 1002.79,-268.546 985.322,-257.628"/> 75 + <polygon fill="black" stroke="black" points="986.833,-254.445 976.498,-252.113 983.123,-260.381 986.833,-254.445"/> 76 + </g> 77 + <!-- avatar_name --> 78 + <g id="node36" class="node"><title>avatar_name</title> 79 + <polygon fill="none" stroke="black" points="1101.62,-252 1012.62,-252 1012.62,-216 1101.62,-216 1101.62,-252"/> 80 + <text text-anchor="middle" x="1057.12" y="-230.3" font-family="Times,serif" font-size="14.00">avatar_name</text> 81 + </g> 82 + <!-- avatar_JS&#45;&gt;avatar_name --> 83 + <g id="edge9" class="edge"><title>avatar_JS&#45;&gt;avatar_name</title> 84 + <path fill="none" stroke="black" d="M1060.13,-287.697C1059.69,-279.983 1059.16,-270.712 1058.67,-262.112"/> 85 + <polygon fill="black" stroke="black" points="1062.16,-261.888 1058.09,-252.104 1055.17,-262.288 1062.16,-261.888"/> 86 + </g> 87 + <!-- channel_JS --> 88 + <g id="node5" class="node"><title>channel_JS</title> 89 + <ellipse fill="none" stroke="black" cx="1062.12" cy="-738" rx="47.3916" ry="18"/> 90 + <text text-anchor="middle" x="1062.12" y="-734.3" font-family="Times,serif" font-size="14.00">channel.js</text> 91 + </g> 92 + <!-- message_render --> 93 + <g id="node37" class="node"><title>message_render</title> 94 + <polygon fill="none" stroke="black" points="1033.12,-972 927.118,-972 927.118,-936 1033.12,-936 1033.12,-972"/> 95 + <text text-anchor="middle" x="980.118" y="-950.3" font-family="Times,serif" font-size="14.00">message_render</text> 96 + </g> 97 + <!-- channel_JS&#45;&gt;message_render --> 98 + <g id="edge12" class="edge"><title>channel_JS&#45;&gt;message_render</title> 99 + <path fill="none" stroke="black" d="M1055.63,-755.935C1041.42,-793.003 1007.49,-881.57 990.367,-926.252"/> 100 + <polygon fill="black" stroke="black" points="986.999,-925.259 986.689,-935.849 993.536,-927.764 986.999,-925.259"/> 101 + </g> 102 + <!-- message_compose --> 103 + <g id="node38" class="node"><title>message_compose</title> 104 + <polygon fill="none" stroke="black" points="672.118,-684 554.118,-684 554.118,-648 672.118,-648 672.118,-684"/> 105 + <text text-anchor="middle" x="613.118" y="-662.3" font-family="Times,serif" font-size="14.00">message_compose</text> 106 + </g> 107 + <!-- channel_JS&#45;&gt;message_compose --> 108 + <g id="edge14" class="edge"><title>channel_JS&#45;&gt;message_compose</title> 109 + <path fill="none" stroke="black" d="M1019.07,-730.288C941.131,-718.138 776.062,-692.403 682.19,-677.769"/> 110 + <polygon fill="black" stroke="black" points="682.64,-674.297 672.22,-676.214 681.562,-681.213 682.64,-674.297"/> 111 + </g> 112 + <!-- sbot_log --> 113 + <g id="node39" class="node"><title>sbot_log</title> 114 + <polygon fill="none" stroke="black" points="1090.62,-684 1027.62,-684 1027.62,-648 1090.62,-648 1090.62,-684"/> 115 + <text text-anchor="middle" x="1059.12" y="-662.3" font-family="Times,serif" font-size="14.00">sbot_log</text> 116 + </g> 117 + <!-- channel_JS&#45;&gt;sbot_log --> 118 + <g id="edge16" class="edge"><title>channel_JS&#45;&gt;sbot_log</title> 119 + <path fill="none" stroke="black" d="M1061.38,-719.697C1061.05,-711.983 1060.65,-702.712 1060.28,-694.112"/> 120 + <polygon fill="black" stroke="black" points="1063.78,-693.945 1059.85,-684.104 1056.78,-694.245 1063.78,-693.945"/> 121 + </g> 122 + <!-- sbot_query --> 123 + <g id="node40" class="node"><title>sbot_query</title> 124 + <polygon fill="none" stroke="black" points="1433.62,-684 1356.62,-684 1356.62,-648 1433.62,-648 1433.62,-684"/> 125 + <text text-anchor="middle" x="1395.12" y="-662.3" font-family="Times,serif" font-size="14.00">sbot_query</text> 126 + </g> 127 + <!-- channel_JS&#45;&gt;sbot_query --> 128 + <g id="edge18" class="edge"><title>channel_JS&#45;&gt;sbot_query</title> 129 + <path fill="none" stroke="black" d="M1102.62,-728.487C1163.99,-715.586 1280.35,-691.125 1346.31,-677.26"/> 130 + <polygon fill="black" stroke="black" points="1347.38,-680.612 1356.44,-675.13 1345.94,-673.762 1347.38,-680.612"/> 131 + </g> 132 + <!-- compose_JS --> 133 + <g id="node6" class="node"><title>compose_JS</title> 134 + <ellipse fill="none" stroke="black" cx="622.118" cy="-594" rx="50.0912" ry="18"/> 135 + <text text-anchor="middle" x="622.118" y="-590.3" font-family="Times,serif" font-size="14.00">compose.js</text> 136 + </g> 137 + <!-- sbot_publish --> 138 + <g id="node41" class="node"><title>sbot_publish</title> 139 + <polygon fill="none" stroke="black" points="845.618,-252 758.618,-252 758.618,-216 845.618,-216 845.618,-252"/> 140 + <text text-anchor="middle" x="802.118" y="-230.3" font-family="Times,serif" font-size="14.00">sbot_publish</text> 141 + </g> 142 + <!-- compose_JS&#45;&gt;sbot_publish --> 143 + <g id="edge20" class="edge"><title>compose_JS&#45;&gt;sbot_publish</title> 144 + <path fill="none" stroke="black" d="M622.575,-575.906C624.438,-518.421 633.168,-333.168 669.118,-288 688.487,-263.664 720.698,-250.456 748.569,-243.311"/> 145 + <polygon fill="black" stroke="black" points="749.679,-246.646 758.609,-240.944 748.072,-239.833 749.679,-246.646"/> 146 + </g> 147 + <!-- message_content --> 148 + <g id="node42" class="node"><title>message_content</title> 149 + <polygon fill="none" stroke="black" points="804.118,-540 692.118,-540 692.118,-504 804.118,-504 804.118,-540"/> 150 + <text text-anchor="middle" x="748.118" y="-518.3" font-family="Times,serif" font-size="14.00">message_content</text> 151 + </g> 152 + <!-- compose_JS&#45;&gt;message_content --> 153 + <g id="edge22" class="edge"><title>compose_JS&#45;&gt;message_content</title> 154 + <path fill="none" stroke="black" d="M648.225,-578.496C665.602,-568.842 688.762,-555.975 708.406,-545.062"/> 155 + <polygon fill="black" stroke="black" points="710.109,-548.12 717.151,-540.204 706.709,-542.001 710.109,-548.12"/> 156 + </g> 157 + <!-- message_confirm --> 158 + <g id="node43" class="node"><title>message_confirm</title> 159 + <polygon fill="none" stroke="black" points="784.118,-396 670.118,-396 670.118,-360 784.118,-360 784.118,-396"/> 160 + <text text-anchor="middle" x="727.118" y="-374.3" font-family="Times,serif" font-size="14.00">message_confirm</text> 161 + </g> 162 + <!-- compose_JS&#45;&gt;message_confirm --> 163 + <g id="edge27" class="edge"><title>compose_JS&#45;&gt;message_confirm</title> 164 + <path fill="none" stroke="black" d="M630.357,-576.208C648.598,-539.03 692.503,-449.548 714.34,-405.042"/> 165 + <polygon fill="black" stroke="black" points="717.509,-406.53 718.771,-396.01 711.224,-403.446 717.509,-406.53"/> 166 + </g> 167 + <!-- file_input --> 168 + <g id="node44" class="node"><title>file_input</title> 169 + <polygon fill="none" stroke="black" points="597.618,-540 526.618,-540 526.618,-504 597.618,-504 597.618,-540"/> 170 + <text text-anchor="middle" x="562.118" y="-518.3" font-family="Times,serif" font-size="14.00">file_input</text> 171 + </g> 172 + <!-- compose_JS&#45;&gt;file_input --> 173 + <g id="edge29" class="edge"><title>compose_JS&#45;&gt;file_input</title> 174 + <path fill="none" stroke="black" d="M607.898,-576.411C600.643,-567.946 591.665,-557.472 583.588,-548.049"/> 175 + <polygon fill="black" stroke="black" points="586.237,-545.762 577.072,-540.447 580.922,-550.317 586.237,-545.762"/> 176 + </g> 177 + <!-- suggest --> 178 + <g id="node45" class="node"><title>suggest</title> 179 + <polygon fill="none" stroke="black" points="878.118,-540 822.118,-540 822.118,-504 878.118,-504 878.118,-540"/> 180 + <text text-anchor="middle" x="850.118" y="-518.3" font-family="Times,serif" font-size="14.00">suggest</text> 181 + </g> 182 + <!-- compose_JS&#45;&gt;suggest --> 183 + <g id="edge31" class="edge"><title>compose_JS&#45;&gt;suggest</title> 184 + <path fill="none" stroke="black" d="M663.327,-583.589C700.359,-574.685 756.257,-560.139 812.617,-539.901"/> 185 + <polygon fill="black" stroke="black" points="813.835,-543.182 822.031,-536.468 811.437,-536.605 813.835,-543.182"/> 186 + </g> 187 + <!-- crypto_JS --> 188 + <g id="node7" class="node"><title>crypto_JS</title> 189 + <ellipse fill="none" stroke="black" cx="852.118" cy="-594" rx="41.6928" ry="18"/> 190 + <text text-anchor="middle" x="852.118" y="-590.3" font-family="Times,serif" font-size="14.00">crypto.js</text> 191 + </g> 192 + <!-- crypto_JS&#45;&gt;sbot_publish --> 193 + <g id="edge33" class="edge"><title>crypto_JS&#45;&gt;sbot_publish</title> 194 + <path fill="none" stroke="black" d="M866.572,-576.638C874.307,-566.767 883.057,-553.517 887.118,-540 900.927,-494.029 893.293,-479.601 887.118,-432 878.602,-366.359 880.37,-346.348 849.118,-288 843.605,-277.708 835.717,-267.76 827.974,-259.317"/> 195 + <polygon fill="black" stroke="black" points="830.423,-256.815 820.976,-252.02 825.371,-261.66 830.423,-256.815"/> 196 + </g> 197 + <!-- feed_JS --> 198 + <g id="node8" class="node"><title>feed_JS</title> 199 + <ellipse fill="none" stroke="black" cx="1355.12" cy="-1026" rx="33.5952" ry="18"/> 200 + <text text-anchor="middle" x="1355.12" y="-1022.3" font-family="Times,serif" font-size="14.00">feed.js</text> 201 + </g> 202 + <!-- feed_JS&#45;&gt;message_render --> 203 + <g id="edge36" class="edge"><title>feed_JS&#45;&gt;message_render</title> 204 + <path fill="none" stroke="black" d="M1323.79,-1019.15C1262.26,-1007.67 1124.56,-981.962 1043.37,-966.808"/> 205 + <polygon fill="black" stroke="black" points="1043.75,-963.317 1033.28,-964.923 1042.46,-970.199 1043.75,-963.317"/> 206 + </g> 207 + <!-- sbot_user_feed --> 208 + <g id="node46" class="node"><title>sbot_user_feed</title> 209 + <polygon fill="none" stroke="black" points="1439.12,-972 1339.12,-972 1339.12,-936 1439.12,-936 1439.12,-972"/> 210 + <text text-anchor="middle" x="1389.12" y="-950.3" font-family="Times,serif" font-size="14.00">sbot_user_feed</text> 211 + </g> 212 + <!-- feed_JS&#45;&gt;sbot_user_feed --> 213 + <g id="edge34" class="edge"><title>feed_JS&#45;&gt;sbot_user_feed</title> 214 + <path fill="none" stroke="black" d="M1363.18,-1008.41C1367.08,-1000.37 1371.87,-990.515 1376.26,-981.47"/> 215 + <polygon fill="black" stroke="black" points="1379.42,-982.971 1380.64,-972.447 1373.13,-979.913 1379.42,-982.971"/> 216 + </g> 217 + <!-- avatar_profile --> 218 + <g id="node47" class="node"><title>avatar_profile</title> 219 + <polygon fill="none" stroke="black" points="1425.62,-900 1330.62,-900 1330.62,-864 1425.62,-864 1425.62,-900"/> 220 + <text text-anchor="middle" x="1378.12" y="-878.3" font-family="Times,serif" font-size="14.00">avatar_profile</text> 221 + </g> 222 + <!-- feed_JS&#45;&gt;avatar_profile --> 223 + <g id="edge37" class="edge"><title>feed_JS&#45;&gt;avatar_profile</title> 224 + <path fill="none" stroke="black" d="M1384.77,-1016.89C1406.54,-1009.21 1434.58,-995.298 1448.12,-972 1456.16,-958.166 1455.24,-950.327 1448.12,-936 1442.12,-923.927 1431.9,-913.869 1421.11,-905.876"/> 225 + <polygon fill="black" stroke="black" points="1423.02,-902.945 1412.8,-900.166 1419.06,-908.714 1423.02,-902.945"/> 226 + </g> 227 + <!-- file_input_JS --> 228 + <g id="node9" class="node"><title>file_input_JS</title> 229 + <ellipse fill="none" stroke="black" cx="562.118" cy="-450" rx="51.9908" ry="18"/> 230 + <text text-anchor="middle" x="562.118" y="-446.3" font-family="Times,serif" font-size="14.00">file&#45;input.js</text> 231 + </g> 232 + <!-- sbot_blobs_add --> 233 + <g id="node48" class="node"><title>sbot_blobs_add</title> 234 + <polygon fill="none" stroke="black" points="576.118,-180 474.118,-180 474.118,-144 576.118,-144 576.118,-180"/> 235 + <text text-anchor="middle" x="525.118" y="-158.3" font-family="Times,serif" font-size="14.00">sbot_blobs_add</text> 236 + </g> 237 + <!-- file_input_JS&#45;&gt;sbot_blobs_add --> 238 + <g id="edge39" class="edge"><title>file_input_JS&#45;&gt;sbot_blobs_add</title> 239 + <path fill="none" stroke="black" d="M559.914,-431.966C553.733,-384.192 536.195,-248.623 528.645,-190.266"/> 240 + <polygon fill="black" stroke="black" points="532.111,-189.775 527.357,-180.306 525.169,-190.673 532.111,-189.775"/> 241 + </g> 242 + <!-- follow_JS --> 243 + <g id="node10" class="node"><title>follow_JS</title> 244 + <ellipse fill="none" stroke="black" cx="1167.12" cy="-450" rx="40.8928" ry="18"/> 245 + <text text-anchor="middle" x="1167.12" y="-446.3" font-family="Times,serif" font-size="14.00">follow.js</text> 246 + </g> 247 + <!-- follow_JS&#45;&gt;sbot_whoami --> 248 + <g id="edge45" class="edge"><title>follow_JS&#45;&gt;sbot_whoami</title> 249 + <path fill="none" stroke="black" d="M1167.32,-431.951C1167.61,-405.292 1168.12,-352.116 1168.12,-307 1168.12,-307 1168.12,-307 1168.12,-233 1168.12,-192.031 1166.14,-178.549 1144.12,-144 1136.97,-132.777 1126.68,-122.707 1116.49,-114.435"/> 250 + <polygon fill="black" stroke="black" points="1118.46,-111.532 1108.4,-108.2 1114.18,-117.076 1118.46,-111.532"/> 251 + </g> 252 + <!-- follow_JS&#45;&gt;message_confirm --> 253 + <g id="edge46" class="edge"><title>follow_JS&#45;&gt;message_confirm</title> 254 + <path fill="none" stroke="black" d="M1129.22,-442.971C1054.61,-431.1 887.778,-404.56 794.148,-389.664"/> 255 + <polygon fill="black" stroke="black" points="794.638,-386.198 784.213,-388.083 793.538,-393.111 794.638,-386.198"/> 256 + </g> 257 + <!-- avatar --> 258 + <g id="node49" class="node"><title>avatar</title> 259 + <polygon fill="none" stroke="black" points="1140.12,-396 1086.12,-396 1086.12,-360 1140.12,-360 1140.12,-396"/> 260 + <text text-anchor="middle" x="1113.12" y="-374.3" font-family="Times,serif" font-size="14.00">avatar</text> 261 + </g> 262 + <!-- follow_JS&#45;&gt;avatar --> 263 + <g id="edge41" class="edge"><title>follow_JS&#45;&gt;avatar</title> 264 + <path fill="none" stroke="black" d="M1154.59,-432.765C1148.04,-424.268 1139.87,-413.677 1132.52,-404.146"/> 265 + <polygon fill="black" stroke="black" points="1135.21,-401.904 1126.33,-396.124 1129.66,-406.18 1135.21,-401.904"/> 266 + </g> 267 + <!-- sbot_links2 --> 268 + <g id="node50" class="node"><title>sbot_links2</title> 269 + <polygon fill="none" stroke="black" points="1246.12,-108 1166.12,-108 1166.12,-72 1246.12,-72 1246.12,-108"/> 270 + <text text-anchor="middle" x="1206.12" y="-86.3" font-family="Times,serif" font-size="14.00">sbot_links2</text> 271 + </g> 272 + <!-- follow_JS&#45;&gt;sbot_links2 --> 273 + <g id="edge43" class="edge"><title>follow_JS&#45;&gt;sbot_links2</title> 274 + <path fill="none" stroke="black" d="M1175.01,-431.928C1186.41,-405.671 1206.12,-353.53 1206.12,-307 1206.12,-307 1206.12,-307 1206.12,-233 1206.12,-192.996 1206.12,-146.653 1206.12,-118.08"/> 275 + <polygon fill="black" stroke="black" points="1209.62,-118.049 1206.12,-108.049 1202.62,-118.049 1209.62,-118.049"/> 276 + </g> 277 + <!-- invite_JS --> 278 + <g id="node11" class="node"><title>invite_JS</title> 279 + <ellipse fill="none" stroke="black" cx="1281.12" cy="-954" rx="39.7935" ry="18"/> 280 + <text text-anchor="middle" x="1281.12" y="-950.3" font-family="Times,serif" font-size="14.00">invite.js</text> 281 + </g> 282 + <!-- invite_JS&#45;&gt;sbot_publish --> 283 + <g id="edge47" class="edge"><title>invite_JS&#45;&gt;sbot_publish</title> 284 + <path fill="none" stroke="black" d="M1274.64,-936.027C1259.36,-896.749 1218.87,-797.058 1173.12,-720 1142.62,-668.637 1127.73,-660.683 1093.12,-612 992.111,-469.939 992.288,-414.264 872.118,-288 861.716,-277.071 848.894,-266.671 837.078,-258.024"/> 285 + <polygon fill="black" stroke="black" points="838.876,-255.007 828.701,-252.055 834.814,-260.708 838.876,-255.007"/> 286 + </g> 287 + <!-- like_JS --> 288 + <g id="node12" class="node"><title>like_JS</title> 289 + <ellipse fill="none" stroke="black" cx="374.118" cy="-450" rx="31.6951" ry="18"/> 290 + <text text-anchor="middle" x="374.118" y="-446.3" font-family="Times,serif" font-size="14.00">like.js</text> 291 + </g> 292 + <!-- like_JS&#45;&gt;sbot_links --> 293 + <g id="edge51" class="edge"><title>like_JS&#45;&gt;sbot_links</title> 294 + <path fill="none" stroke="black" d="M397.437,-437.417C455.91,-408.014 604.118,-331.109 604.118,-307 604.118,-307 604.118,-307 604.118,-233 604.118,-188.845 630.685,-143.558 650.108,-116.35"/> 295 + <polygon fill="black" stroke="black" points="653.015,-118.306 656.121,-108.176 647.376,-114.158 653.015,-118.306"/> 296 + </g> 297 + <!-- like_JS&#45;&gt;message_confirm --> 298 + <g id="edge48" class="edge"><title>like_JS&#45;&gt;message_confirm</title> 299 + <path fill="none" stroke="black" d="M398.077,-438.011C403.591,-435.779 409.49,-433.622 415.118,-432 438.2,-425.346 575.36,-403.048 659.956,-389.586"/> 300 + <polygon fill="black" stroke="black" points="660.674,-393.016 670.001,-387.99 659.576,-386.102 660.674,-393.016"/> 301 + </g> 302 + <!-- message_link --> 303 + <g id="node51" class="node"><title>message_link</title> 304 + <polygon fill="none" stroke="black" points="413.618,-396 322.618,-396 322.618,-360 413.618,-360 413.618,-396"/> 305 + <text text-anchor="middle" x="368.118" y="-374.3" font-family="Times,serif" font-size="14.00">message_link</text> 306 + </g> 307 + <!-- like_JS&#45;&gt;message_link --> 308 + <g id="edge49" class="edge"><title>like_JS&#45;&gt;message_link</title> 309 + <path fill="none" stroke="black" d="M372.634,-431.697C371.973,-423.983 371.179,-414.712 370.441,-406.112"/> 310 + <polygon fill="black" stroke="black" points="373.925,-405.769 369.584,-396.104 366.951,-406.367 373.925,-405.769"/> 311 + </g> 312 + <!-- markdown_JS --> 313 + <g id="node13" class="node"><title>markdown_JS</title> 314 + <ellipse fill="none" stroke="black" cx="1149.12" cy="-1314" rx="57.3905" ry="18"/> 315 + <text text-anchor="middle" x="1149.12" y="-1310.3" font-family="Times,serif" font-size="14.00">markdown.js</text> 316 + </g> 317 + <!-- message_confirm_JS --> 318 + <g id="node14" class="node"><title>message_confirm_JS</title> 319 + <ellipse fill="none" stroke="black" cx="759.118" cy="-306" rx="80.6858" ry="18"/> 320 + <text text-anchor="middle" x="759.118" y="-302.3" font-family="Times,serif" font-size="14.00">message&#45;confirm.js</text> 321 + </g> 322 + <!-- message_confirm_JS&#45;&gt;sbot_publish --> 323 + <g id="edge52" class="edge"><title>message_confirm_JS&#45;&gt;sbot_publish</title> 324 + <path fill="none" stroke="black" d="M769.527,-288.055C774.523,-279.922 780.619,-269.998 786.181,-260.943"/> 325 + <polygon fill="black" stroke="black" points="789.254,-262.628 791.506,-252.275 783.289,-258.964 789.254,-262.628"/> 326 + </g> 327 + <!-- message_confirm_JS&#45;&gt;message_content --> 328 + <g id="edge53" class="edge"><title>message_confirm_JS&#45;&gt;message_content</title> 329 + <path fill="none" stroke="black" d="M773.518,-323.895C780.945,-333.736 789.242,-346.782 793.118,-360 807.015,-407.401 782.543,-462.938 764.577,-494.841"/> 330 + <polygon fill="black" stroke="black" points="761.503,-493.165 759.49,-503.567 767.55,-496.69 761.503,-493.165"/> 331 + </g> 332 + <!-- message_link_JS --> 333 + <g id="node15" class="node"><title>message_link_JS</title> 334 + <ellipse fill="none" stroke="black" cx="294.118" cy="-306" rx="65.7887" ry="18"/> 335 + <text text-anchor="middle" x="294.118" y="-302.3" font-family="Times,serif" font-size="14.00">message&#45;link.js</text> 336 + </g> 337 + <!-- sbot_get --> 338 + <g id="node52" class="node"><title>sbot_get</title> 339 + <polygon fill="none" stroke="black" points="231.618,-252 168.618,-252 168.618,-216 231.618,-216 231.618,-252"/> 340 + <text text-anchor="middle" x="200.118" y="-230.3" font-family="Times,serif" font-size="14.00">sbot_get</text> 341 + </g> 342 + <!-- message_link_JS&#45;&gt;sbot_get --> 343 + <g id="edge54" class="edge"><title>message_link_JS&#45;&gt;sbot_get</title> 344 + <path fill="none" stroke="black" d="M272.316,-288.765C260.099,-279.667 244.658,-268.168 231.194,-258.142"/> 345 + <polygon fill="black" stroke="black" points="233.223,-255.289 223.113,-252.124 229.043,-260.904 233.223,-255.289"/> 346 + </g> 347 + <!-- message_name_JS --> 348 + <g id="node16" class="node"><title>message_name_JS</title> 349 + <ellipse fill="none" stroke="black" cx="101.118" cy="-306" rx="71.4873" ry="18"/> 350 + <text text-anchor="middle" x="101.118" y="-302.3" font-family="Times,serif" font-size="14.00">message&#45;name.js</text> 351 + </g> 352 + <!-- message_name_JS&#45;&gt;sbot_get --> 353 + <g id="edge56" class="edge"><title>message_name_JS&#45;&gt;sbot_get</title> 354 + <path fill="none" stroke="black" d="M124.079,-288.765C136.945,-279.667 153.208,-268.168 167.388,-258.142"/> 355 + <polygon fill="black" stroke="black" points="169.755,-260.755 175.899,-252.124 165.714,-255.039 169.755,-260.755"/> 356 + </g> 357 + <!-- message_JS --> 358 + <g id="node17" class="node"><title>message_JS</title> 359 + <ellipse fill="none" stroke="black" cx="544.118" cy="-882" rx="48.1917" ry="18"/> 360 + <text text-anchor="middle" x="544.118" y="-878.3" font-family="Times,serif" font-size="14.00">message.js</text> 361 + </g> 362 + <!-- message_JS&#45;&gt;sbot_links --> 363 + <g id="edge67" class="edge"><title>message_JS&#45;&gt;sbot_links</title> 364 + <path fill="none" stroke="black" d="M504.525,-871.697C446.744,-855.496 346.118,-816.2 346.118,-739 346.118,-739 346.118,-739 346.118,-665 346.118,-528.653 236.896,-473.052 313.118,-360 336.971,-324.621 372.674,-354.882 402.118,-324 460.605,-262.654 402.73,-201.374 465.118,-144 487.995,-122.961 570.097,-106.591 623.199,-97.902"/> 365 + <polygon fill="black" stroke="black" points="623.761,-101.357 633.081,-96.3185 622.653,-94.4449 623.761,-101.357"/> 366 + </g> 367 + <!-- message_JS&#45;&gt;message_content --> 368 + <g id="edge57" class="edge"><title>message_JS&#45;&gt;message_content</title> 369 + <path fill="none" stroke="black" d="M550.988,-864.037C554.958,-853.744 559.806,-840.268 563.118,-828 575.84,-780.871 551.635,-757.307 583.118,-720 613.043,-684.538 647.62,-716.109 681.118,-684 719.345,-647.357 736.612,-585.63 743.715,-550.2"/> 370 + <polygon fill="black" stroke="black" points="747.205,-550.58 745.606,-540.106 740.325,-549.291 747.205,-550.58"/> 371 + </g> 372 + <!-- message_JS&#45;&gt;avatar --> 373 + <g id="edge58" class="edge"><title>message_JS&#45;&gt;avatar</title> 374 + <path fill="none" stroke="black" d="M589.391,-875.661C661.547,-864.984 803.506,-834.832 892.118,-756 1008.31,-652.634 1080.12,-473.098 1104.13,-405.639"/> 375 + <polygon fill="black" stroke="black" points="1107.44,-406.757 1107.45,-396.162 1100.84,-404.443 1107.44,-406.757"/> 376 + </g> 377 + <!-- message_JS&#45;&gt;message_link --> 378 + <g id="edge66" class="edge"><title>message_JS&#45;&gt;message_link</title> 379 + <path fill="none" stroke="black" d="M502.379,-872.922C444.161,-861.304 344.3,-839.96 332.118,-828 302.883,-799.299 308.118,-779.969 308.118,-739 308.118,-739 308.118,-739 308.118,-665 308.118,-560.85 297.869,-530.004 333.118,-432 336.607,-422.297 342.218,-412.61 347.934,-404.223"/> 380 + <polygon fill="black" stroke="black" points="350.846,-406.169 353.845,-396.007 345.164,-402.081 350.846,-406.169"/> 381 + </g> 382 + <!-- message_meta --> 383 + <g id="node53" class="node"><title>message_meta</title> 384 + <polygon fill="none" stroke="black" points="745.618,-828 648.618,-828 648.618,-792 745.618,-792 745.618,-828"/> 385 + <text text-anchor="middle" x="697.118" y="-806.3" font-family="Times,serif" font-size="14.00">message_meta</text> 386 + </g> 387 + <!-- message_JS&#45;&gt;message_meta --> 388 + <g id="edge59" class="edge"><title>message_JS&#45;&gt;message_meta</title> 389 + <path fill="none" stroke="black" d="M573.256,-867.669C595.09,-857.679 625.41,-843.807 650.587,-832.289"/> 390 + <polygon fill="black" stroke="black" points="652.318,-835.345 659.955,-828.002 649.406,-828.98 652.318,-835.345"/> 391 + </g> 392 + <!-- message_action --> 393 + <g id="node54" class="node"><title>message_action</title> 394 + <polygon fill="none" stroke="black" points="554.118,-828 450.118,-828 450.118,-792 554.118,-792 554.118,-828"/> 395 + <text text-anchor="middle" x="502.118" y="-806.3" font-family="Times,serif" font-size="14.00">message_action</text> 396 + </g> 397 + <!-- message_JS&#45;&gt;message_action --> 398 + <g id="edge64" class="edge"><title>message_JS&#45;&gt;message_action</title> 399 + <path fill="none" stroke="black" d="M533.951,-864.055C529.071,-855.922 523.116,-845.998 517.683,-836.943"/> 400 + <polygon fill="black" stroke="black" points="520.629,-835.049 512.483,-828.275 514.627,-838.651 520.629,-835.049"/> 401 + </g> 402 + <!-- names_JS --> 403 + <g id="node18" class="node"><title>names_JS</title> 404 + <ellipse fill="none" stroke="black" cx="1060.12" cy="-162" rx="42.4939" ry="18"/> 405 + <text text-anchor="middle" x="1060.12" y="-158.3" font-family="Times,serif" font-size="14.00">names.js</text> 406 + </g> 407 + <!-- names_JS&#45;&gt;sbot_whoami --> 408 + <g id="edge70" class="edge"><title>names_JS&#45;&gt;sbot_whoami</title> 409 + <path fill="none" stroke="black" d="M1065.2,-144.055C1067.54,-136.261 1070.37,-126.822 1072.99,-118.079"/> 410 + <polygon fill="black" stroke="black" points="1076.41,-118.859 1075.93,-108.275 1069.71,-116.848 1076.41,-118.859"/> 411 + </g> 412 + <!-- names_JS&#45;&gt;sbot_links --> 413 + <g id="edge69" class="edge"><title>names_JS&#45;&gt;sbot_links</title> 414 + <path fill="none" stroke="black" d="M1029.07,-149.737C1022.54,-147.626 1015.65,-145.587 1009.12,-144 906.371,-119.028 783.128,-103.205 717.209,-95.8498"/> 415 + <polygon fill="black" stroke="black" points="717.456,-92.3559 707.133,-94.7418 716.691,-99.314 717.456,-92.3559"/> 416 + </g> 417 + <!-- names_JS&#45;&gt;sbot_links2 --> 418 + <g id="edge68" class="edge"><title>names_JS&#45;&gt;sbot_links2</title> 419 + <path fill="none" stroke="black" d="M1087.24,-147.998C1108.08,-138.006 1137.31,-123.991 1161.57,-112.36"/> 420 + <polygon fill="black" stroke="black" points="1163.09,-115.511 1170.59,-108.032 1160.06,-109.199 1163.09,-115.511"/> 421 + </g> 422 + <!-- notifications_JS --> 423 + <g id="node19" class="node"><title>notifications_JS</title> 424 + <ellipse fill="none" stroke="black" cx="1105.12" cy="-1026" rx="64.189" ry="18"/> 425 + <text text-anchor="middle" x="1105.12" y="-1022.3" font-family="Times,serif" font-size="14.00">notifications.js</text> 426 + </g> 427 + <!-- notifications_JS&#45;&gt;sbot_whoami --> 428 + <g id="edge73" class="edge"><title>notifications_JS&#45;&gt;sbot_whoami</title> 429 + <path fill="none" stroke="black" d="M1128.55,-1009.24C1160.32,-985.776 1213.12,-938.442 1213.12,-883 1213.12,-883 1213.12,-883 1213.12,-809 1213.12,-591.965 1492.79,-558.537 1405.12,-360 1350.31,-235.897 1204.72,-150.371 1128.76,-112.702"/> 430 + <polygon fill="black" stroke="black" points="1129.93,-109.377 1119.4,-108.132 1126.85,-115.667 1129.93,-109.377"/> 431 + </g> 432 + <!-- notifications_JS&#45;&gt;message_render --> 433 + <g id="edge71" class="edge"><title>notifications_JS&#45;&gt;message_render</title> 434 + <path fill="none" stroke="black" d="M1077.69,-1009.64C1060.56,-1000.05 1038.25,-987.552 1019.28,-976.931"/> 435 + <polygon fill="black" stroke="black" points="1020.99,-973.877 1010.55,-972.044 1017.57,-979.984 1020.99,-973.877"/> 436 + </g> 437 + <!-- notifications_JS&#45;&gt;sbot_log --> 438 + <g id="edge72" class="edge"><title>notifications_JS&#45;&gt;sbot_log</title> 439 + <path fill="none" stroke="black" d="M1114.68,-1008.08C1140.71,-959.548 1207.26,-817.131 1151.12,-720 1140.07,-700.886 1119.22,-688.057 1100.16,-679.815"/> 440 + <polygon fill="black" stroke="black" points="1101.3,-676.498 1090.71,-676.022 1098.69,-682.995 1101.3,-676.498"/> 441 + </g> 442 + <!-- notifications_JS&#45;&gt;sbot_user_feed --> 443 + <g id="edge75" class="edge"><title>notifications_JS&#45;&gt;sbot_user_feed</title> 444 + <path fill="none" stroke="black" d="M1154.01,-1014.21C1197.56,-1004.44 1263.23,-989.3 1329.22,-972.177"/> 445 + <polygon fill="black" stroke="black" points="1330.16,-975.548 1338.95,-969.636 1328.39,-968.775 1330.16,-975.548"/> 446 + </g> 447 + <!-- notifications_JS&#45;&gt;sbot_get --> 448 + <g id="edge74" class="edge"><title>notifications_JS&#45;&gt;sbot_get</title> 449 + <path fill="none" stroke="black" d="M1057.4,-1013.82C1048.66,-1011.83 1039.62,-1009.82 1031.12,-1008 680.335,-932.905 270.118,-1097.73 270.118,-739 270.118,-739 270.118,-739 270.118,-665 270.118,-564.93 200.118,-551.07 200.118,-451 200.118,-451 200.118,-451 200.118,-377 200.118,-336.996 200.118,-290.653 200.118,-262.08"/> 450 + <polygon fill="black" stroke="black" points="203.618,-262.049 200.118,-252.049 196.618,-262.049 203.618,-262.049"/> 451 + </g> 452 + <!-- message_unbox --> 453 + <g id="node55" class="node"><title>message_unbox</title> 454 + <polygon fill="none" stroke="black" points="894.118,-684 790.118,-684 790.118,-648 894.118,-648 894.118,-684"/> 455 + <text text-anchor="middle" x="842.118" y="-662.3" font-family="Times,serif" font-size="14.00">message_unbox</text> 456 + </g> 457 + <!-- notifications_JS&#45;&gt;message_unbox --> 458 + <g id="edge76" class="edge"><title>notifications_JS&#45;&gt;message_unbox</title> 459 + <path fill="none" stroke="black" d="M1094.62,-1008.18C1064.94,-961.081 977.1,-824.458 892.118,-720 884.214,-710.286 874.946,-700.158 866.551,-691.391"/> 460 + <polygon fill="black" stroke="black" points="868.931,-688.817 859.454,-684.08 863.908,-693.693 868.931,-688.817"/> 461 + </g> 462 + <!-- post_JS --> 463 + <g id="node20" class="node"><title>post_JS</title> 464 + <ellipse fill="none" stroke="black" cx="458.118" cy="-450" rx="33.5952" ry="18"/> 465 + <text text-anchor="middle" x="458.118" y="-446.3" font-family="Times,serif" font-size="14.00">post.js</text> 466 + </g> 467 + <!-- post_JS&#45;&gt;message_link --> 468 + <g id="edge78" class="edge"><title>post_JS&#45;&gt;message_link</title> 469 + <path fill="none" stroke="black" d="M439.905,-434.834C427.995,-425.571 412.149,-413.246 398.375,-402.533"/> 470 + <polygon fill="black" stroke="black" points="400.162,-399.489 390.12,-396.113 395.864,-405.015 400.162,-399.489"/> 471 + </g> 472 + <!-- private_JS --> 473 + <g id="node21" class="node"><title>private_JS</title> 474 + <ellipse fill="none" stroke="black" cx="839.118" cy="-738" rx="44.393" ry="18"/> 475 + <text text-anchor="middle" x="839.118" y="-734.3" font-family="Times,serif" font-size="14.00">private.js</text> 476 + </g> 477 + <!-- private_JS&#45;&gt;sbot_whoami --> 478 + <g id="edge83" class="edge"><title>private_JS&#45;&gt;sbot_whoami</title> 479 + <path fill="none" stroke="black" d="M861.128,-722.113C874.416,-712.366 891.055,-698.735 903.118,-684 1006.65,-557.522 981.504,-492.569 1077.12,-360 1089.99,-342.15 1102.99,-344.451 1111.12,-324 1140.67,-249.66 1131.49,-221.362 1111.12,-144 1108.63,-134.539 1104.02,-124.993 1099.14,-116.66"/> 480 + <polygon fill="black" stroke="black" points="1102.1,-114.79 1093.84,-108.155 1096.16,-118.493 1102.1,-114.79"/> 481 + </g> 482 + <!-- private_JS&#45;&gt;message_render --> 483 + <g id="edge79" class="edge"><title>private_JS&#45;&gt;message_render</title> 484 + <path fill="none" stroke="black" d="M850.082,-755.641C874.588,-792.835 933.942,-882.918 963.216,-927.349"/> 485 + <polygon fill="black" stroke="black" points="960.393,-929.424 968.817,-935.849 966.238,-925.573 960.393,-929.424"/> 486 + </g> 487 + <!-- private_JS&#45;&gt;message_compose --> 488 + <g id="edge80" class="edge"><title>private_JS&#45;&gt;message_compose</title> 489 + <path fill="none" stroke="black" d="M805.494,-726.142C799.066,-724.087 792.388,-721.966 786.118,-720 750.941,-708.971 711.658,-696.915 679.427,-687.092"/> 490 + <polygon fill="black" stroke="black" points="680.249,-683.684 669.663,-684.119 678.21,-690.38 680.249,-683.684"/> 491 + </g> 492 + <!-- private_JS&#45;&gt;sbot_log --> 493 + <g id="edge82" class="edge"><title>private_JS&#45;&gt;sbot_log</title> 494 + <path fill="none" stroke="black" d="M873.01,-726.216C911.954,-713.825 975.859,-693.491 1017.71,-680.174"/> 495 + <polygon fill="black" stroke="black" points="1018.86,-683.481 1027.33,-677.114 1016.74,-676.811 1018.86,-683.481"/> 496 + </g> 497 + <!-- private_JS&#45;&gt;message_unbox --> 498 + <g id="edge81" class="edge"><title>private_JS&#45;&gt;message_unbox</title> 499 + <path fill="none" stroke="black" d="M839.859,-719.697C840.19,-711.983 840.587,-702.712 840.956,-694.112"/> 500 + <polygon fill="black" stroke="black" points="844.453,-694.245 841.385,-684.104 837.459,-693.945 844.453,-694.245"/> 501 + </g> 502 + <!-- public_JS --> 503 + <g id="node22" class="node"><title>public_JS</title> 504 + <ellipse fill="none" stroke="black" cx="842.118" cy="-1026" rx="40.0939" ry="18"/> 505 + <text text-anchor="middle" x="842.118" y="-1022.3" font-family="Times,serif" font-size="14.00">public.js</text> 506 + </g> 507 + <!-- public_JS&#45;&gt;message_render --> 508 + <g id="edge84" class="edge"><title>public_JS&#45;&gt;message_render</title> 509 + <path fill="none" stroke="black" d="M867.751,-1012C887.276,-1002.09 914.591,-988.238 937.401,-976.668"/> 510 + <polygon fill="black" stroke="black" points="939.205,-979.677 946.54,-972.032 936.039,-973.434 939.205,-979.677"/> 511 + </g> 512 + <!-- public_JS&#45;&gt;message_compose --> 513 + <g id="edge85" class="edge"><title>public_JS&#45;&gt;message_compose</title> 514 + <path fill="none" stroke="black" d="M802.327,-1022.51C709.881,-1014.19 485.113,-978.581 441.118,-828 421.993,-762.545 500.727,-714.061 557.97,-688.205"/> 515 + <polygon fill="black" stroke="black" points="559.565,-691.327 567.31,-684.098 556.747,-684.919 559.565,-691.327"/> 516 + </g> 517 + <!-- public_JS&#45;&gt;sbot_log --> 518 + <g id="edge86" class="edge"><title>public_JS&#45;&gt;sbot_log</title> 519 + <path fill="none" stroke="black" d="M849.09,-1008.13C869.278,-960.313 931.141,-820.832 1006.12,-720 1013.62,-709.904 1023.02,-699.875 1031.81,-691.302"/> 520 + <polygon fill="black" stroke="black" points="1034.47,-693.601 1039.31,-684.178 1029.65,-688.525 1034.47,-693.601"/> 521 + </g> 522 + <!-- search_box_JS --> 523 + <g id="node23" class="node"><title>search_box_JS</title> 524 + <ellipse fill="none" stroke="black" cx="1457.12" cy="-738" rx="57.6901" ry="18"/> 525 + <text text-anchor="middle" x="1457.12" y="-734.3" font-family="Times,serif" font-size="14.00">search&#45;box.js</text> 526 + </g> 527 + <!-- search_box_JS&#45;&gt;sbot_query --> 528 + <g id="edge87" class="edge"><title>search_box_JS&#45;&gt;sbot_query</title> 529 + <path fill="none" stroke="black" d="M1442.42,-720.411C1434.93,-711.946 1425.65,-701.472 1417.3,-692.049"/> 530 + <polygon fill="black" stroke="black" points="1419.82,-689.612 1410.57,-684.447 1414.58,-694.253 1419.82,-689.612"/> 531 + </g> 532 + <!-- search_box_JS&#45;&gt;sbot_links2 --> 533 + <g id="edge88" class="edge"><title>search_box_JS&#45;&gt;sbot_links2</title> 534 + <path fill="none" stroke="black" d="M1458.11,-719.958C1459.56,-693.308 1462.12,-640.143 1462.12,-595 1462.12,-595 1462.12,-595 1462.12,-233 1462.12,-139.923 1331.11,-107.346 1256.53,-96.3415"/> 535 + <polygon fill="black" stroke="black" points="1256.79,-92.8438 1246.4,-94.9279 1255.82,-99.7766 1256.79,-92.8438"/> 536 + </g> 537 + <!-- search_JS --> 538 + <g id="node24" class="node"><title>search_JS</title> 539 + <ellipse fill="none" stroke="black" cx="980.118" cy="-1026" rx="42.4939" ry="18"/> 540 + <text text-anchor="middle" x="980.118" y="-1022.3" font-family="Times,serif" font-size="14.00">search.js</text> 541 + </g> 542 + <!-- search_JS&#45;&gt;message_render --> 543 + <g id="edge89" class="edge"><title>search_JS&#45;&gt;message_render</title> 544 + <path fill="none" stroke="black" d="M980.118,-1007.7C980.118,-999.983 980.118,-990.712 980.118,-982.112"/> 545 + <polygon fill="black" stroke="black" points="983.618,-982.104 980.118,-972.104 976.618,-982.104 983.618,-982.104"/> 546 + </g> 547 + <!-- search_JS&#45;&gt;sbot_log --> 548 + <g id="edge90" class="edge"><title>search_JS&#45;&gt;sbot_log</title> 549 + <path fill="none" stroke="black" d="M1002.23,-1010.59C1015.4,-1001.03 1031.55,-987.418 1042.12,-972 1099.66,-888.059 1100.98,-856.316 1118.12,-756 1120.81,-740.228 1124.63,-734.613 1118.12,-720 1113.04,-708.604 1104.16,-698.634 1094.81,-690.509"/> 550 + <polygon fill="black" stroke="black" points="1096.89,-687.694 1086.92,-684.128 1092.49,-693.137 1096.89,-687.694"/> 551 + </g> 552 + <!-- suggest_mentions_JS --> 553 + <g id="node25" class="node"><title>suggest_mentions_JS</title> 554 + <ellipse fill="none" stroke="black" cx="1315.12" cy="-378" rx="81.4863" ry="18"/> 555 + <text text-anchor="middle" x="1315.12" y="-374.3" font-family="Times,serif" font-size="14.00">suggest&#45;mentions.js</text> 556 + </g> 557 + <!-- suggest_mentions_JS&#45;&gt;sbot_links2 --> 558 + <g id="edge91" class="edge"><title>suggest_mentions_JS&#45;&gt;sbot_links2</title> 559 + <path fill="none" stroke="black" d="M1308.63,-359.966C1290.38,-312.093 1238.54,-176.06 1216.37,-117.904"/> 560 + <polygon fill="black" stroke="black" points="1219.55,-116.404 1212.71,-108.306 1213,-118.897 1219.55,-116.404"/> 561 + </g> 562 + <!-- suggest_JS --> 563 + <g id="node26" class="node"><title>suggest_JS</title> 564 + <ellipse fill="none" stroke="black" cx="1268.12" cy="-1314" rx="44.393" ry="18"/> 565 + <text text-anchor="middle" x="1268.12" y="-1310.3" font-family="Times,serif" font-size="14.00">suggest.js</text> 566 + </g> 567 + <!-- tabs_JS --> 568 + <g id="node27" class="node"><title>tabs_JS</title> 569 + <ellipse fill="none" stroke="black" cx="1043.12" cy="-1170" rx="33.2948" ry="18"/> 570 + <text text-anchor="middle" x="1043.12" y="-1166.3" font-family="Times,serif" font-size="14.00">tabs.js</text> 571 + </g> 572 + <!-- tabs_JS&#45;&gt;message_render --> 573 + <g id="edge103" class="edge"><title>tabs_JS&#45;&gt;message_render</title> 574 + <path fill="none" stroke="black" d="M1023.35,-1155.25C995.86,-1134.76 947.414,-1093.29 929.118,-1044 923.549,-1029 923.137,-1022.84 929.118,-1008 933.466,-997.209 941.179,-987.386 949.311,-979.209"/> 575 + <polygon fill="black" stroke="black" points="951.908,-981.572 956.813,-972.181 947.122,-976.464 951.908,-981.572"/> 576 + </g> 577 + <!-- screen_view --> 578 + <g id="node56" class="node"><title>screen_view</title> 579 + <polygon fill="none" stroke="black" points="1085.62,-1116 1000.62,-1116 1000.62,-1080 1085.62,-1080 1085.62,-1116"/> 580 + <text text-anchor="middle" x="1043.12" y="-1094.3" font-family="Times,serif" font-size="14.00">screen_view</text> 581 + </g> 582 + <!-- tabs_JS&#45;&gt;screen_view --> 583 + <g id="edge92" class="edge"><title>tabs_JS&#45;&gt;screen_view</title> 584 + <path fill="none" stroke="black" d="M1043.12,-1151.7C1043.12,-1143.98 1043.12,-1134.71 1043.12,-1126.11"/> 585 + <polygon fill="black" stroke="black" points="1046.62,-1126.1 1043.12,-1116.1 1039.62,-1126.1 1046.62,-1126.1"/> 586 + </g> 587 + <!-- search_box --> 588 + <g id="node57" class="node"><title>search_box</title> 589 + <polygon fill="none" stroke="black" points="1395.12,-1116 1315.12,-1116 1315.12,-1080 1395.12,-1080 1395.12,-1116"/> 590 + <text text-anchor="middle" x="1355.12" y="-1094.3" font-family="Times,serif" font-size="14.00">search_box</text> 591 + </g> 592 + <!-- tabs_JS&#45;&gt;search_box --> 593 + <g id="edge101" class="edge"><title>tabs_JS&#45;&gt;search_box</title> 594 + <path fill="none" stroke="black" d="M1073.32,-1162.22C1126.95,-1150.19 1239.35,-1124.97 1304.82,-1110.28"/> 595 + <polygon fill="black" stroke="black" points="1305.92,-1113.62 1314.91,-1108.02 1304.39,-1106.79 1305.92,-1113.62"/> 596 + </g> 597 + <!-- thread_JS --> 598 + <g id="node28" class="node"><title>thread_JS</title> 599 + <ellipse fill="none" stroke="black" cx="502.118" cy="-1026" rx="42.4939" ry="18"/> 600 + <text text-anchor="middle" x="502.118" y="-1022.3" font-family="Times,serif" font-size="14.00">thread.js</text> 601 + </g> 602 + <!-- thread_JS&#45;&gt;sbot_links --> 603 + <g id="edge108" class="edge"><title>thread_JS&#45;&gt;sbot_links</title> 604 + <path fill="none" stroke="black" d="M460.816,-1021.97C385.181,-1013.94 232.118,-985.085 232.118,-883 232.118,-883 232.118,-883 232.118,-665 232.118,-527.015 204.911,-468.534 290.118,-360 313.944,-329.65 342.823,-352.238 369.118,-324 427.29,-261.528 371.863,-200.197 436.118,-144 463.534,-120.022 562.694,-104.071 622.782,-96.3693"/> 605 + <polygon fill="black" stroke="black" points="623.309,-99.8307 632.797,-95.1156 622.439,-92.8849 623.309,-99.8307"/> 606 + </g> 607 + <!-- thread_JS&#45;&gt;message_render --> 608 + <g id="edge104" class="edge"><title>thread_JS&#45;&gt;message_render</title> 609 + <path fill="none" stroke="black" d="M541.641,-1019.21C624.465,-1007.08 816.828,-978.913 916.971,-964.247"/> 610 + <polygon fill="black" stroke="black" points="917.567,-967.698 926.954,-962.785 916.553,-960.771 917.567,-967.698"/> 611 + </g> 612 + <!-- thread_JS&#45;&gt;message_compose --> 613 + <g id="edge105" class="edge"><title>thread_JS&#45;&gt;message_compose</title> 614 + <path fill="none" stroke="black" d="M478.238,-1010.89C443.759,-988.498 384.118,-941.338 384.118,-883 384.118,-883 384.118,-883 384.118,-809 384.118,-768.031 378.998,-748.818 408.118,-720 427.346,-700.97 492.231,-686.303 543.914,-677.272"/> 615 + <polygon fill="black" stroke="black" points="544.789,-680.673 554.058,-675.541 543.612,-673.773 544.789,-680.673"/> 616 + </g> 617 + <!-- thread_JS&#45;&gt;sbot_get --> 618 + <g id="edge107" class="edge"><title>thread_JS&#45;&gt;sbot_get</title> 619 + <path fill="none" stroke="black" d="M460.775,-1022.17C340.981,-1012.85 2.11756,-978.089 2.11756,-883 2.11756,-883 2.11756,-883 2.11756,-377 2.11756,-336.553 -6.35267,-317.687 21.1176,-288 56.3511,-249.923 117.504,-238.742 158.39,-235.709"/> 620 + <polygon fill="black" stroke="black" points="158.806,-239.19 168.576,-235.089 158.382,-232.203 158.806,-239.19"/> 621 + </g> 622 + <!-- thread_JS&#45;&gt;message_unbox --> 623 + <g id="edge106" class="edge"><title>thread_JS&#45;&gt;message_unbox</title> 624 + <path fill="none" stroke="black" d="M518.142,-1009.06C539.877,-986.606 578.573,-943.505 601.118,-900 639.487,-825.955 594.808,-778.628 654.118,-720 687.245,-687.254 738.947,-674.39 779.754,-669.499"/> 625 + <polygon fill="black" stroke="black" points="780.303,-672.961 789.876,-668.421 779.561,-666 780.303,-672.961"/> 626 + </g> 627 + <!-- timestamp_JS --> 628 + <g id="node29" class="node"><title>timestamp_JS</title> 629 + <ellipse fill="none" stroke="black" cx="720.118" cy="-738" rx="57.3905" ry="18"/> 630 + <text text-anchor="middle" x="720.118" y="-734.3" font-family="Times,serif" font-size="14.00">timestamp.js</text> 631 + </g> 632 + <!-- app_JS --> 633 + <g id="node30" class="node"><title>app_JS</title> 634 + <ellipse fill="none" stroke="black" cx="1043.12" cy="-1314" rx="31.3957" ry="18"/> 635 + <text text-anchor="middle" x="1043.12" y="-1310.3" font-family="Times,serif" font-size="14.00">app.js</text> 636 + </g> 637 + <!-- app --> 638 + <g id="node58" class="node"><title>app</title> 639 + <polygon fill="none" stroke="black" points="1070.12,-1260 1016.12,-1260 1016.12,-1224 1070.12,-1224 1070.12,-1260"/> 640 + <text text-anchor="middle" x="1043.12" y="-1238.3" font-family="Times,serif" font-size="14.00">app</text> 641 + </g> 642 + <!-- app_JS&#45;&gt;app --> 643 + <g id="edge109" class="edge"><title>app_JS&#45;&gt;app</title> 644 + <path fill="none" stroke="black" d="M1043.12,-1295.7C1043.12,-1287.98 1043.12,-1278.71 1043.12,-1270.11"/> 645 + <polygon fill="black" stroke="black" points="1046.62,-1270.1 1043.12,-1260.1 1039.62,-1270.1 1046.62,-1270.1"/> 646 + </g> 647 + <!-- sbot_api_JS --> 648 + <g id="node31" class="node"><title>sbot_api_JS</title> 649 + <ellipse fill="none" stroke="black" cx="840.118" cy="-18" rx="47.3916" ry="18"/> 650 + <text text-anchor="middle" x="840.118" y="-14.3" font-family="Times,serif" font-size="14.00">sbot&#45;api.js</text> 651 + </g> 652 + <!-- sbot_whoami&#45;&gt;sbot_api_JS --> 653 + <g id="edge2" class="edge"><title>sbot_whoami&#45;&gt;sbot_api_JS</title> 654 + <path fill="none" stroke="black" d="M1035.5,-75.7512C992.713,-63.3224 929.048,-44.8305 886.129,-32.3642"/> 655 + <polygon fill="black" stroke="black" points="887.076,-28.9947 876.496,-29.5665 885.123,-35.7169 887.076,-28.9947"/> 656 + </g> 657 + <!-- sbot_links&#45;&gt;sbot_api_JS --> 658 + <g id="edge4" class="edge"><title>sbot_links&#45;&gt;sbot_api_JS</title> 659 + <path fill="none" stroke="black" d="M707.425,-73.6382C734.703,-62.406 771.671,-47.1841 799.659,-35.6596"/> 660 + <polygon fill="black" stroke="black" points="801.239,-38.794 809.153,-31.7501 798.574,-32.3212 801.239,-38.794"/> 661 + </g> 662 + <!-- avatar_image&#45;&gt;avatar_image_JS --> 663 + <g id="edge6" class="edge"><title>avatar_image&#45;&gt;avatar_image_JS</title> 664 + <path fill="none" stroke="black" d="M945.41,-215.697C943.757,-207.983 941.77,-198.712 939.927,-190.112"/> 665 + <polygon fill="black" stroke="black" points="943.3,-189.149 937.783,-180.104 936.456,-190.616 943.3,-189.149"/> 666 + </g> 667 + <!-- avatar_action&#45;&gt;follow_JS --> 668 + <g id="edge8" class="edge"><title>avatar_action&#45;&gt;follow_JS</title> 669 + <path fill="none" stroke="black" d="M1169.38,-503.697C1169.05,-495.983 1168.65,-486.712 1168.28,-478.112"/> 670 + <polygon fill="black" stroke="black" points="1171.78,-477.945 1167.85,-468.104 1164.78,-478.245 1171.78,-477.945"/> 671 + </g> 672 + <!-- avatar_name&#45;&gt;names_JS --> 673 + <g id="edge10" class="edge"><title>avatar_name&#45;&gt;names_JS</title> 674 + <path fill="none" stroke="black" d="M1057.86,-215.697C1058.19,-207.983 1058.59,-198.712 1058.96,-190.112"/> 675 + <polygon fill="black" stroke="black" points="1062.45,-190.245 1059.38,-180.104 1055.46,-189.945 1062.45,-190.245"/> 676 + </g> 677 + <!-- message_render&#45;&gt;message_JS --> 678 + <g id="edge13" class="edge"><title>message_render&#45;&gt;message_JS</title> 679 + <path fill="none" stroke="black" d="M927.091,-944.487C843.326,-931.038 681.3,-905.025 597.385,-891.552"/> 680 + <polygon fill="black" stroke="black" points="597.732,-888.063 587.303,-889.934 596.622,-894.975 597.732,-888.063"/> 681 + </g> 682 + <!-- message_compose&#45;&gt;compose_JS --> 683 + <g id="edge15" class="edge"><title>message_compose&#45;&gt;compose_JS</title> 684 + <path fill="none" stroke="black" d="M615.342,-647.697C616.334,-639.983 617.526,-630.712 618.632,-622.112"/> 685 + <polygon fill="black" stroke="black" points="622.115,-622.469 619.918,-612.104 615.172,-621.576 622.115,-622.469"/> 686 + </g> 687 + <!-- sbot_log&#45;&gt;sbot_api_JS --> 688 + <g id="edge17" class="edge"><title>sbot_log&#45;&gt;sbot_api_JS</title> 689 + <path fill="none" stroke="black" d="M1042.15,-647.822C1010.16,-613.53 944.118,-532.824 944.118,-451 944.118,-451 944.118,-451 944.118,-377 944.118,-281.642 883.854,-272.094 859.118,-180 846.786,-134.088 842.456,-78.6736 840.937,-46.2825"/> 690 + <polygon fill="black" stroke="black" points="844.431,-46.0745 840.522,-36.2273 837.437,-46.3631 844.431,-46.0745"/> 691 + </g> 692 + <!-- sbot_query&#45;&gt;sbot_api_JS --> 693 + <g id="edge19" class="edge"><title>sbot_query&#45;&gt;sbot_api_JS</title> 694 + <path fill="none" stroke="black" d="M1419.47,-647.875C1450.49,-623.844 1500.12,-576.962 1500.12,-523 1500.12,-523 1500.12,-523 1500.12,-161 1500.12,-38.2846 1058.52,-21.3157 897.758,-19.2041"/> 695 + <polygon fill="black" stroke="black" points="897.623,-15.7024 887.583,-19.0855 897.542,-22.7019 897.623,-15.7024"/> 696 + </g> 697 + <!-- sbot_publish&#45;&gt;sbot_api_JS --> 698 + <g id="edge21" class="edge"><title>sbot_publish&#45;&gt;sbot_api_JS</title> 699 + <path fill="none" stroke="black" d="M804.03,-215.971C807.481,-186.473 815.4,-124.037 826.118,-72 827.872,-63.4797 830.159,-54.2869 832.374,-45.9882"/> 700 + <polygon fill="black" stroke="black" points="835.824,-46.6422 835.095,-36.0724 829.073,-44.7893 835.824,-46.6422"/> 701 + </g> 702 + <!-- message_content&#45;&gt;about_JS --> 703 + <g id="edge23" class="edge"><title>message_content&#45;&gt;about_JS</title> 704 + <path fill="none" stroke="black" d="M770.859,-503.697C783.43,-494.132 799.146,-482.174 812.428,-472.068"/> 705 + <polygon fill="black" stroke="black" points="814.908,-474.579 820.747,-465.738 810.67,-469.008 814.908,-474.579"/> 706 + </g> 707 + <!-- message_content&#45;&gt;follow_JS --> 708 + <g id="edge24" class="edge"><title>message_content&#45;&gt;follow_JS</title> 709 + <path fill="none" stroke="black" d="M804.401,-505.885C807.342,-505.219 810.261,-504.586 813.118,-504 920.965,-481.89 1049.07,-465 1117.75,-456.693"/> 710 + <polygon fill="black" stroke="black" points="1118.34,-460.149 1127.85,-455.483 1117.51,-453.198 1118.34,-460.149"/> 711 + </g> 712 + <!-- message_content&#45;&gt;like_JS --> 713 + <g id="edge25" class="edge"><title>message_content&#45;&gt;like_JS</title> 714 + <path fill="none" stroke="black" d="M691.912,-513.684C611.053,-502.88 466.029,-482.389 415.118,-468 412.652,-467.303 410.135,-466.501 407.622,-465.631"/> 715 + <polygon fill="black" stroke="black" points="408.656,-462.281 398.064,-462.032 406.189,-468.832 408.656,-462.281"/> 716 + </g> 717 + <!-- message_content&#45;&gt;post_JS --> 718 + <g id="edge26" class="edge"><title>message_content&#45;&gt;post_JS</title> 719 + <path fill="none" stroke="black" d="M692.024,-511.695C641.52,-502.674 565.552,-487.504 501.118,-468 498.541,-467.22 495.902,-466.353 493.261,-465.435"/> 720 + <polygon fill="black" stroke="black" points="494.388,-462.12 483.795,-461.95 491.97,-468.689 494.388,-462.12"/> 721 + </g> 722 + <!-- message_confirm&#45;&gt;message_confirm_JS --> 723 + <g id="edge28" class="edge"><title>message_confirm&#45;&gt;message_confirm_JS</title> 724 + <path fill="none" stroke="black" d="M735.028,-359.697C738.67,-351.728 743.072,-342.1 747.111,-333.264"/> 725 + <polygon fill="black" stroke="black" points="750.324,-334.654 751.298,-324.104 743.958,-331.744 750.324,-334.654"/> 726 + </g> 727 + <!-- file_input&#45;&gt;file_input_JS --> 728 + <g id="edge30" class="edge"><title>file_input&#45;&gt;file_input_JS</title> 729 + <path fill="none" stroke="black" d="M562.118,-503.697C562.118,-495.983 562.118,-486.712 562.118,-478.112"/> 730 + <polygon fill="black" stroke="black" points="565.618,-478.104 562.118,-468.104 558.618,-478.104 565.618,-478.104"/> 731 + </g> 732 + <!-- suggest&#45;&gt;suggest_mentions_JS --> 733 + <g id="edge32" class="edge"><title>suggest&#45;&gt;suggest_mentions_JS</title> 734 + <path fill="none" stroke="black" d="M878.138,-519.08C953.111,-513.608 1156.7,-496.471 1217.12,-468 1248.69,-453.124 1277.28,-424.584 1295.33,-403.822"/> 735 + <polygon fill="black" stroke="black" points="1298.15,-405.909 1301.94,-396.016 1292.8,-401.386 1298.15,-405.909"/> 736 + </g> 737 + <!-- sbot_user_feed&#45;&gt;sbot_api_JS --> 738 + <g id="edge35" class="edge"><title>sbot_user_feed&#45;&gt;sbot_api_JS</title> 739 + <path fill="none" stroke="black" d="M1431.2,-935.856C1476.8,-914.159 1543.12,-872.097 1543.12,-811 1543.12,-811 1543.12,-811 1543.12,-161 1543.12,-101.17 1497.11,-95.578 1442.12,-72 1345.18,-30.4355 1029.19,-21.4673 898.011,-19.5323"/> 740 + <polygon fill="black" stroke="black" points="897.816,-16.0294 887.769,-19.3901 897.719,-23.0287 897.816,-16.0294"/> 741 + </g> 742 + <!-- avatar_profile&#45;&gt;avatar_profile_JS --> 743 + <g id="edge38" class="edge"><title>avatar_profile&#45;&gt;avatar_profile_JS</title> 744 + <path fill="none" stroke="black" d="M1366.45,-863.929C1346.18,-834.369 1302.99,-771.84 1265.12,-720 1239.52,-684.954 1209.01,-645.147 1189.6,-620.059"/> 745 + <polygon fill="black" stroke="black" points="1192.12,-617.592 1183.23,-611.83 1186.59,-621.879 1192.12,-617.592"/> 746 + </g> 747 + <!-- sbot_blobs_add&#45;&gt;sbot_api_JS --> 748 + <g id="edge40" class="edge"><title>sbot_blobs_add&#45;&gt;sbot_api_JS</title> 749 + <path fill="none" stroke="black" d="M539.37,-143.835C557.125,-123.588 589.385,-90.3673 624.118,-72 674.891,-45.1499 739.587,-31.6085 784.884,-24.9748"/> 750 + <polygon fill="black" stroke="black" points="785.395,-28.4374 794.814,-23.5855 784.425,-21.5049 785.395,-28.4374"/> 751 + </g> 752 + <!-- avatar&#45;&gt;avatar_JS --> 753 + <g id="edge42" class="edge"><title>avatar&#45;&gt;avatar_JS</title> 754 + <path fill="none" stroke="black" d="M1100.26,-359.697C1094,-351.265 1086.36,-340.975 1079.49,-331.732"/> 755 + <polygon fill="black" stroke="black" points="1082.24,-329.563 1073.47,-323.622 1076.62,-333.737 1082.24,-329.563"/> 756 + </g> 757 + <!-- sbot_links2&#45;&gt;sbot_api_JS --> 758 + <g id="edge44" class="edge"><title>sbot_links2&#45;&gt;sbot_api_JS</title> 759 + <path fill="none" stroke="black" d="M1166.03,-78.9782C1155.96,-76.5783 1145.17,-74.1039 1135.12,-72 1051.04,-54.396 952.719,-37.456 893.493,-27.6445"/> 760 + <polygon fill="black" stroke="black" points="893.696,-24.1306 883.259,-25.9557 892.556,-31.0372 893.696,-24.1306"/> 761 + </g> 762 + <!-- message_link&#45;&gt;message_link_JS --> 763 + <g id="edge50" class="edge"><title>message_link&#45;&gt;message_link_JS</title> 764 + <path fill="none" stroke="black" d="M349.825,-359.697C340.48,-350.857 328.975,-339.973 318.851,-330.396"/> 765 + <polygon fill="black" stroke="black" points="321.107,-327.712 311.437,-323.383 316.296,-332.798 321.107,-327.712"/> 766 + </g> 767 + <!-- sbot_get&#45;&gt;sbot_api_JS --> 768 + <g id="edge55" class="edge"><title>sbot_get&#45;&gt;sbot_api_JS</title> 769 + <path fill="none" stroke="black" d="M230.67,-215.888C264.982,-197.022 322.616,-166.383 374.118,-144 460.379,-106.51 482.509,-97.2285 573.118,-72 646.041,-51.6957 732.237,-36.0509 786.548,-27.1837"/> 770 + <polygon fill="black" stroke="black" points="787.325,-30.6037 796.639,-25.5543 786.209,-23.6932 787.325,-30.6037"/> 771 + </g> 772 + <!-- message_meta&#45;&gt;channel_JS --> 773 + <g id="edge60" class="edge"><title>message_meta&#45;&gt;channel_JS</title> 774 + <path fill="none" stroke="black" d="M745.964,-799.632C815.025,-786.388 940.611,-762.303 1010.93,-748.818"/> 775 + <polygon fill="black" stroke="black" points="1011.72,-752.228 1020.89,-746.907 1010.41,-745.354 1011.72,-752.228"/> 776 + </g> 777 + <!-- message_meta&#45;&gt;like_JS --> 778 + <g id="edge61" class="edge"><title>message_meta&#45;&gt;like_JS</title> 779 + <path fill="none" stroke="black" d="M670.472,-791.976C637.78,-770.078 582.148,-729.411 545.118,-684 487.951,-613.895 510.018,-571.784 450.118,-504 437.503,-489.726 420.297,-477.316 405.445,-468.101"/> 780 + <polygon fill="black" stroke="black" points="406.943,-464.919 396.565,-462.788 403.349,-470.925 406.943,-464.919"/> 781 + </g> 782 + <!-- message_meta&#45;&gt;private_JS --> 783 + <g id="edge62" class="edge"><title>message_meta&#45;&gt;private_JS</title> 784 + <path fill="none" stroke="black" d="M731.855,-791.876C753.312,-781.299 780.809,-767.744 802.59,-757.007"/> 785 + <polygon fill="black" stroke="black" points="804.424,-760.005 811.846,-752.444 801.329,-753.726 804.424,-760.005"/> 786 + </g> 787 + <!-- message_meta&#45;&gt;timestamp_JS --> 788 + <g id="edge63" class="edge"><title>message_meta&#45;&gt;timestamp_JS</title> 789 + <path fill="none" stroke="black" d="M702.803,-791.697C705.365,-783.898 708.45,-774.509 711.302,-765.829"/> 790 + <polygon fill="black" stroke="black" points="714.701,-766.697 714.498,-756.104 708.051,-764.512 714.701,-766.697"/> 791 + </g> 792 + <!-- message_action&#45;&gt;like_JS --> 793 + <g id="edge65" class="edge"><title>message_action&#45;&gt;like_JS</title> 794 + <path fill="none" stroke="black" d="M493.618,-791.993C481.346,-765.822 460.118,-713.79 460.118,-667 460.118,-667 460.118,-667 460.118,-593 460.118,-544.733 423.314,-498.848 397.859,-472.884"/> 795 + <polygon fill="black" stroke="black" points="400.268,-470.343 390.699,-465.794 395.343,-475.318 400.268,-470.343"/> 796 + </g> 797 + <!-- message_unbox&#45;&gt;crypto_JS --> 798 + <g id="edge77" class="edge"><title>message_unbox&#45;&gt;crypto_JS</title> 799 + <path fill="none" stroke="black" d="M844.589,-647.697C845.691,-639.983 847.016,-630.712 848.244,-622.112"/> 800 + <polygon fill="black" stroke="black" points="851.725,-622.499 849.674,-612.104 844.795,-621.509 851.725,-622.499"/> 801 + </g> 802 + <!-- screen_view&#45;&gt;channel_JS --> 803 + <g id="edge93" class="edge"><title>screen_view&#45;&gt;channel_JS</title> 804 + <path fill="none" stroke="black" d="M1085.65,-1092.76C1116.97,-1087.16 1157.55,-1074.17 1178.12,-1044 1242.14,-950.085 1134.56,-816.039 1085.03,-762.45"/> 805 + <polygon fill="black" stroke="black" points="1087.57,-760.038 1078.17,-755.142 1082.47,-764.829 1087.57,-760.038"/> 806 + </g> 807 + <!-- screen_view&#45;&gt;feed_JS --> 808 + <g id="edge94" class="edge"><title>screen_view&#45;&gt;feed_JS</title> 809 + <path fill="none" stroke="black" d="M1085.85,-1087.41C1146.14,-1073.88 1255.43,-1049.37 1314.54,-1036.1"/> 810 + <polygon fill="black" stroke="black" points="1315.63,-1039.45 1324.62,-1033.84 1314.1,-1032.62 1315.63,-1039.45"/> 811 + </g> 812 + <!-- screen_view&#45;&gt;invite_JS --> 813 + <g id="edge95" class="edge"><title>screen_view&#45;&gt;invite_JS</title> 814 + <path fill="none" stroke="black" d="M1085.91,-1090.75C1121.85,-1083.89 1173.26,-1070.18 1211.12,-1044 1235.09,-1027.42 1254.78,-1000.19 1267.1,-980.203"/> 815 + <polygon fill="black" stroke="black" points="1270.12,-981.978 1272.24,-971.597 1264.11,-978.393 1270.12,-981.978"/> 816 + </g> 817 + <!-- screen_view&#45;&gt;notifications_JS --> 818 + <g id="edge96" class="edge"><title>screen_view&#45;&gt;notifications_JS</title> 819 + <path fill="none" stroke="black" d="M1058.44,-1079.7C1066.06,-1071.09 1075.4,-1060.55 1083.71,-1051.17"/> 820 + <polygon fill="black" stroke="black" points="1086.38,-1053.43 1090.39,-1043.62 1081.14,-1048.79 1086.38,-1053.43"/> 821 + </g> 822 + <!-- screen_view&#45;&gt;private_JS --> 823 + <g id="edge97" class="edge"><title>screen_view&#45;&gt;private_JS</title> 824 + <path fill="none" stroke="black" d="M1000.47,-1093.5C936.936,-1087.4 821.805,-1072.65 793.118,-1044 764.497,-1015.42 774.118,-995.447 774.118,-955 774.118,-955 774.118,-955 774.118,-881 774.118,-836.474 800.867,-790.637 820.046,-763.496"/> 825 + <polygon fill="black" stroke="black" points="822.909,-765.511 825.964,-755.366 817.249,-761.392 822.909,-765.511"/> 826 + </g> 827 + <!-- screen_view&#45;&gt;public_JS --> 828 + <g id="edge98" class="edge"><title>screen_view&#45;&gt;public_JS</title> 829 + <path fill="none" stroke="black" d="M1000.49,-1082.15C965.669,-1070.03 916.786,-1053 882.568,-1041.09"/> 830 + <polygon fill="black" stroke="black" points="883.486,-1037.7 872.891,-1037.72 881.184,-1044.31 883.486,-1037.7"/> 831 + </g> 832 + <!-- screen_view&#45;&gt;search_JS --> 833 + <g id="edge99" class="edge"><title>screen_view&#45;&gt;search_JS</title> 834 + <path fill="none" stroke="black" d="M1027.54,-1079.7C1019.69,-1070.97 1010.04,-1060.24 1001.5,-1050.75"/> 835 + <polygon fill="black" stroke="black" points="1003.94,-1048.24 994.648,-1043.14 998.736,-1052.92 1003.94,-1048.24"/> 836 + </g> 837 + <!-- screen_view&#45;&gt;thread_JS --> 838 + <g id="edge100" class="edge"><title>screen_view&#45;&gt;thread_JS</title> 839 + <path fill="none" stroke="black" d="M1000.21,-1091.45C901.292,-1078.65 657.628,-1047.12 552.139,-1033.47"/> 840 + <polygon fill="black" stroke="black" points="552.438,-1029.98 542.071,-1032.17 551.539,-1036.92 552.438,-1029.98"/> 841 + </g> 842 + <!-- search_box&#45;&gt;search_box_JS --> 843 + <g id="edge102" class="edge"><title>search_box&#45;&gt;search_box_JS</title> 844 + <path fill="none" stroke="black" d="M1395.31,-1079.94C1439.75,-1058.08 1505.12,-1015.6 1505.12,-955 1505.12,-955 1505.12,-955 1505.12,-881 1505.12,-838.633 1485.7,-792.723 1471.57,-764.911"/> 845 + <polygon fill="black" stroke="black" points="1474.57,-763.098 1466.83,-755.863 1468.37,-766.346 1474.57,-763.098"/> 846 + </g> 847 + <!-- app&#45;&gt;tabs_JS --> 848 + <g id="edge110" class="edge"><title>app&#45;&gt;tabs_JS</title> 849 + <path fill="none" stroke="black" d="M1043.12,-1223.7C1043.12,-1215.98 1043.12,-1206.71 1043.12,-1198.11"/> 850 + <polygon fill="black" stroke="black" points="1046.62,-1198.1 1043.12,-1188.1 1039.62,-1198.1 1046.62,-1198.1"/> 851 + </g> 852 + </g> 853 + </svg>
+7
patchbay/index.js
··· 1 + require('depject')( 2 + // from more specialized to more general 3 + require('./modules_extra'), 4 + require('./modules_basic'), 5 + require('./modules_core') 6 + ).app[0]() 7 +
+5
patchbay/keys.js
··· 1 + var config = require('ssb-config/inject')(process.env.ssb_appname) 2 + var ssbKeys = require('ssb-keys') 3 + var path = require('path') 4 + module.exports = ssbKeys.loadOrCreateSync(path.join(config.path, 'secret')) 5 +
+32
patchbay/keyscroll.js
··· 1 + module.exports = function (container) { 2 + var curMsgEl 3 + 4 + if (!container) 5 + return function() {} 6 + 7 + container.addEventListener('click', onActivateChild, false) 8 + container.addEventListener('focus', onActivateChild, true) 9 + 10 + function onActivateChild(ev) { 11 + for (var el = ev.target; el; el = el.parentNode) { 12 + if (el.parentNode == container) { 13 + curMsgEl = el 14 + return 15 + } 16 + } 17 + } 18 + 19 + function selectChild(el) { 20 + if (!el) return 21 + (el.scrollIntoViewIfNeeded || el.scrollIntoView).call(el) 22 + el.focus() 23 + curMsgEl = el 24 + } 25 + 26 + return function scroll(d) { 27 + selectChild(!curMsgEl ? container.firstChild 28 + : d > 0 ? curMsgEl.nextElementSibling || container.lastChild 29 + : d < 0 ? curMsgEl.previousElementSibling || container.firstChild 30 + : curMsgEl) 31 + } 32 + }
+116
patchbay/manifest.json
··· 1 + { 2 + "auth": "async", 3 + "address": "sync", 4 + "manifest": "sync", 5 + "get": "async", 6 + "createFeedStream": "source", 7 + "createLogStream": "source", 8 + "messagesByType": "source", 9 + "createHistoryStream": "source", 10 + "createUserStream": "source", 11 + "links": "source", 12 + "relatedMessages": "async", 13 + "add": "async", 14 + "publish": "async", 15 + "getAddress": "sync", 16 + "getLatest": "async", 17 + "latest": "source", 18 + "latestSequence": "async", 19 + "whoami": "sync", 20 + "usage": "sync", 21 + "gossip": { 22 + "peers": "sync", 23 + "add": "sync", 24 + "ping": "duplex", 25 + "connect": "async", 26 + "changes": "source", 27 + "reconnect": "sync" 28 + }, 29 + "friends": { 30 + "all": "async", 31 + "hops": "async", 32 + "createFriendStream": "source", 33 + "get": "sync" 34 + }, 35 + "replicate": { 36 + "changes": "source" 37 + }, 38 + "invite": { 39 + "create": "async", 40 + "accept": "async", 41 + "use": "async" 42 + }, 43 + "block": { 44 + "isBlocked": "sync" 45 + }, 46 + "private": { 47 + "publish": "async", 48 + "unbox": "sync" 49 + }, 50 + "plugins": { 51 + "install": "source", 52 + "uninstall": "source", 53 + "enable": "async", 54 + "disable": "async" 55 + }, 56 + "notifier": {}, 57 + "patchwork": { 58 + "createEventStream": "source", 59 + "getIndexCounts": "async", 60 + "createInboxStream": "source", 61 + "createBookmarkStream": "source", 62 + "createMentionStream": "source", 63 + "createNoticeStream": "source", 64 + "createPrivatePostStream": "source", 65 + "createPublicPostStream": "source", 66 + "createChannelStream": "source", 67 + "createSearchStream": "source", 68 + "markRead": "async", 69 + "markUnread": "async", 70 + "markAllRead": "async", 71 + "toggleRead": "async", 72 + "isRead": "async", 73 + "bookmark": "async", 74 + "unbookmark": "async", 75 + "toggleBookmark": "async", 76 + "isBookmarked": "async", 77 + "getChannels": "async", 78 + "pinChannel": "async", 79 + "unpinChannel": "async", 80 + "toggleChannelPinned": "async", 81 + "watchChannel": "async", 82 + "unwatchChannel": "async", 83 + "toggleChannelWatched": "async", 84 + "addFileToBlobs": "async", 85 + "saveBlobToFile": "async", 86 + "useLookupCode": "source", 87 + "getMyProfile": "async", 88 + "getProfile": "async", 89 + "getAllProfiles": "async", 90 + "getNamesById": "async", 91 + "getIdsByName": "async", 92 + "getName": "async", 93 + "getActionItems": "async" 94 + }, 95 + "blobs": { 96 + "get": "source", 97 + "add": "sink", 98 + "ls": "source", 99 + "has": "async", 100 + "size": "async", 101 + "meta": "async", 102 + "want": "async", 103 + "push": "async", 104 + "changes": "source", 105 + "createWants": "source" 106 + }, 107 + "links2": { 108 + "read": "source", 109 + "dump": "source" 110 + }, 111 + "query": { 112 + "read": "source", 113 + "dump": "source" 114 + }, 115 + "ws": {} 116 + }
+48
patchbay/modules_basic/about.js
··· 1 + 2 + var h = require('hyperscript') 3 + 4 + function idLink (id) { 5 + return h('a', {href:'#'+id}, id) 6 + } 7 + 8 + function asLink (ln) { 9 + return 'string' === typeof ln ? ln : ln.link 10 + } 11 + 12 + //var blob_url = require('../plugs').first(exports.blob_url = []) 13 + 14 + exports.needs = { 15 + blob_url: 'first' 16 + } 17 + 18 + exports.gives = 'message_content' 19 + 20 + exports.create = function (api) { 21 + 22 + return function (msg) { 23 + if(msg.value.content.type !== 'about') return 24 + 25 + if(!msg.value.content.image && !msg.value.content.name) 26 + return 27 + 28 + var about = msg.value.content 29 + var id = msg.value.content.about 30 + return h('p', 31 + about.about === msg.value.author 32 + ? h('span', 'self-identifies ') 33 + : h('span', 'identifies ', idLink(id)), 34 + ' as ', 35 + h('a', {href:"#"+about.about}, 36 + about.name || null, 37 + about.image 38 + ? h('img.avatar--fullsize', {src: api.blob_url(about.image)}) 39 + : null 40 + ) 41 + ) 42 + 43 + } 44 + 45 + } 46 + 47 + 48 +
+152
patchbay/modules_basic/avatar-edit.js
··· 1 + 'use strict' 2 + var dataurl = require('dataurl-') 3 + var hyperfile = require('hyperfile') 4 + var hypercrop = require('hypercrop') 5 + var hyperlightbox = require('hyperlightbox') 6 + var h = require('hyperscript') 7 + var pull = require('pull-stream') 8 + var getAvatar = require('ssb-avatar') 9 + var plugs = require('../plugs') 10 + var ref = require('ssb-ref') 11 + var visualize = require('visualize-buffer') 12 + var self_id = require('../keys').id 13 + 14 + //var confirm = plugs.first(exports.message_confirm = []) 15 + //var sbot_blobs_add = plugs.first(exports.sbot_blobs_add = []) 16 + //var blob_url = plugs.first(exports.blob_url = []) 17 + //var sbot_links = plugs.first(exports.sbot_links = []) 18 + //var avatar_name = plugs.first(exports.avatar_name = []) 19 + // 20 + 21 + function crop (d, cb) { 22 + var data 23 + var canvas = hypercrop(h('img', {src: d})) 24 + 25 + return h('div.column.avatar_pic', 26 + canvas, 27 + //canvas.selection, 28 + h('div.row.avatar_pic__controls', 29 + h('button', 'okay', {onclick: function () { 30 + cb(null, canvas.selection.toDataURL()) 31 + }}), 32 + h('button', 'cancel', {onclick: function () { 33 + cb(new Error('canceled')) 34 + }}) 35 + ) 36 + ) 37 + } 38 + 39 + exports.needs = { 40 + message_confirm: 'first', 41 + sbot_blobs_add: 'first', 42 + blob_url: 'first', 43 + sbot_links: 'first', 44 + avatar_name: 'first' 45 + } 46 + 47 + exports.gives = 'avatar_edit' 48 + 49 + exports.create = function (api) { 50 + return function (id) { 51 + 52 + var img = visualize(new Buffer(id.substring(1), 'base64'), 256) 53 + img.classList.add('avatar--large') 54 + 55 + var lb = hyperlightbox() 56 + var name_input = h('input', {placeholder: 'rename'}) 57 + var name = api.avatar_name(id) 58 + var selected = null, selected_data = null 59 + 60 + getAvatar({links: api.sbot_links}, self_id, id, function (err, avatar) { 61 + if (err) return console.error(err) 62 + //don't show user has already selected an avatar. 63 + if(selected) return 64 + if(ref.isBlob(avatar.image)) 65 + img.src = api.blob_url(avatar.image) 66 + }) 67 + 68 + var also_pictured = h('div.profile__alsopicturedas.wrap') 69 + 70 + pull( 71 + api.sbot_links({dest: id, rel: 'about', values: true}), 72 + pull.map(function (e) { 73 + return e.value.content.image 74 + }), 75 + pull.filter(function (e) { 76 + return e && 'string' == typeof e.link 77 + }), 78 + pull.unique('link'), 79 + pull.drain(function (image) { 80 + also_pictured.appendChild( 81 + h('a', {href:'#', onclick: function (ev) { 82 + ev.stopPropagation() 83 + ev.preventDefault() 84 + selected = image 85 + img.src = api.blob_url(image.link || image) 86 + }}, 87 + h('img.avatar--thumbnail', {src: api.blob_url(image)}) 88 + ) 89 + ) 90 + }) 91 + ) 92 + 93 + return h('div.row.profile', 94 + lb, 95 + img, 96 + h('div.column.profile__info', 97 + h('strong', name), 98 + name_input, 99 + 100 + hyperfile.asDataURL(function (data) { 101 + var el = crop(data, function (err, data) { 102 + if(data) { 103 + img.src = data 104 + var _data = dataurl.parse(data) 105 + pull( 106 + pull.once(_data.data), 107 + api.sbot_blobs_add(function (err, hash) { 108 + //TODO. Alerts are EVIL. 109 + //I use them only in a moment of weakness. 110 + 111 + if(err) return alert(err.stack) 112 + selected = { 113 + link: hash, 114 + size: _data.data.length, 115 + type: _data.mimetype, 116 + width: 512, 117 + height: 512 118 + } 119 + 120 + }) 121 + ) 122 + } 123 + lb.close() 124 + }) 125 + lb.show(el) 126 + }), 127 + h('button', 'update', {onclick: function () { 128 + if(name_input.value) 129 + name.textContent = name_input.value 130 + 131 + if(selected) 132 + api.message_confirm({ 133 + type: 'about', 134 + about: id, 135 + name: name_input.value || undefined, 136 + image: selected 137 + }) 138 + else if(name_input.value) //name only 139 + api.message_confirm({ 140 + type: 'about', 141 + about: id, 142 + name: name_input.value || undefined, 143 + }) 144 + else 145 + //another moment of weakness 146 + alert('must select a name or image') 147 + }}), 148 + also_pictured 149 + ) 150 + ) 151 + } 152 + }
+110
patchbay/modules_basic/avatar-image.js
··· 1 + 'use strict' 2 + var getAvatar = require('ssb-avatar') 3 + var h = require('hyperscript') 4 + var ref = require('ssb-ref') 5 + var path = require('path') 6 + var visualize = require('visualize-buffer') 7 + 8 + var pull = require('pull-stream') 9 + 10 + var self_id = require('../keys').id 11 + 12 + //var plugs = require('../plugs') 13 + //var sbot_query = plugs.first(exports.sbot_query = []) 14 + //var blob_url = require('../plugs').first(exports.blob_url = []) 15 + // 16 + 17 + exports.needs = { 18 + sbot_query: 'first', 19 + blob_url: 'first' 20 + } 21 + 22 + exports.gives = { 23 + connection_status: true, avatar_image: true 24 + } 25 + 26 + 27 + function isFunction (f) { 28 + return 'function' === typeof f 29 + } 30 + 31 + 32 + var ready = false 33 + var waiting = [] 34 + 35 + var last = 0 36 + 37 + exports.create = function (api) { 38 + var avatars = {} 39 + 40 + //blah blah 41 + return { 42 + connection_status: function (err) { 43 + if (err) return 44 + pull( 45 + api.sbot_query({ 46 + query: [{ 47 + $filter: { 48 + timestamp: {$gt: last || 0 }, 49 + value: { content: { 50 + type: "about", 51 + about: {$prefix: "@"}, 52 + image: {link: {$prefix: "&"}} 53 + }} 54 + }}, 55 + { 56 + $map: { 57 + id: ["value", "content", "about"], 58 + image: ["value", "content", "image", "link"], 59 + by: ["value", "author"], 60 + ts: 'timestamp' 61 + }}], 62 + live: true 63 + }), 64 + pull.drain(function (a) { 65 + if(a.sync) { 66 + ready = true 67 + while(waiting.length) waiting.shift()() 68 + return 69 + } 70 + last = a.ts 71 + //set image for avatar. 72 + //overwrite another avatar 73 + //you picked. 74 + if( 75 + //if there is no avatar 76 + (!avatars[a.id]) || 77 + //if i chose this avatar 78 + (a.by == self_id) || 79 + //they chose their own avatar, 80 + //and current avatar was not chosen by me 81 + (a.by === a.id && avatars[a.id].by != self_id) 82 + ) 83 + avatars[a.id] = a 84 + 85 + }) 86 + ) 87 + }, 88 + 89 + avatar_image: function (author, classes) { 90 + classes = classes || '' 91 + if(classes && 'string' === typeof classes) classes = '.avatar--'+classes 92 + 93 + var img = visualize(new Buffer(author.substring(1), 'base64'), 256) 94 + ;(classes || '').split('.').filter(Boolean).forEach(function (c) { 95 + img.classList.add(c) 96 + }) 97 + 98 + function go () { 99 + if(avatars[author]) img.src = api.blob_url(avatars[author].image) 100 + } 101 + 102 + if(!ready) 103 + waiting.push(go) 104 + else go() 105 + 106 + return img 107 + } 108 + } 109 + } 110 +
+22
patchbay/modules_basic/avatar-link.js
··· 1 + var h = require('hyperscript') 2 + 3 + exports.needs = {signifier: 'first'} 4 + 5 + exports.gives = 'avatar_link' 6 + 7 + exports.create = function (api) { 8 + return function (id, element) { 9 + 10 + var link = h('a.avatar', {href: "#"+id, title: id}, element) 11 + 12 + api.signifier(id, function (_, names) { 13 + if(names.length) 14 + link.title = names[0].name + '\n '+id 15 + }) 16 + 17 + return link 18 + } 19 + } 20 + 21 + 22 +
+29
patchbay/modules_basic/avatar-name.js
··· 1 + 2 + var signifier = require('../plugs').first(exports.signifier = []) 3 + var h = require('hyperscript') 4 + 5 + exports.needs = { signifier: 'first' } 6 + 7 + exports.gives = 'avatar_name' 8 + 9 + exports.create = function (api) { 10 + 11 + return function name (id) { 12 + var n = h('span', id ? id.substring(0, 10) : "") 13 + 14 + //choose the most popular name for this person. 15 + //for anything like this you'll see I have used sbot.links2 16 + //which is the ssb-links plugin. as you'll see the query interface 17 + //is pretty powerful! 18 + //TODO: "most popular" name is easily gameable. 19 + //must come up with something better than this. 20 + 21 + api.signifier(id, function (_, names) { 22 + if(names.length) n.textContent = names[0].name 23 + }) 24 + 25 + return n 26 + } 27 + 28 + } 29 +
+88
patchbay/modules_basic/avatar-profile.js
··· 1 + var h = require('hyperscript') 2 + var pull = require('pull-stream') 3 + 4 + //var plugs = require('../plugs') 5 + //var avatar_image_link = plugs.first(exports.avatar_image_link = []) 6 + //var avatar_action = plugs.map(exports.avatar_action = []) 7 + //var avatar_edit = plugs.first(exports.avatar_edit = []) 8 + 9 + //var follows = plugs.first(exports.follows = []) 10 + //var followers = plugs.first(exports.followers = []) 11 + // 12 + exports.needs = { 13 + avatar_image_link: 'first', 14 + avatar_action: 'map', 15 + avatar_edit: 'first', 16 + follows: 'first', 17 + followers: 'first' 18 + } 19 + 20 + exports.gives = 'avatar_profile' 21 + 22 + function streamToList(stream, el) { 23 + pull( 24 + stream, 25 + pull.drain(function (item) { 26 + if(item) el.appendChild(item) 27 + }) 28 + ) 29 + return el 30 + } 31 + 32 + exports.create = function (api) { 33 + 34 + function image_link (id) { 35 + return api.avatar_image_link(id, 'thumbnail') 36 + } 37 + 38 + return function (id) { 39 + 40 + var follows_el = h('div.profile__follows.wrap') 41 + var friends_el = h('div.profile__friendss.wrap') 42 + var followers_el = h('div.profile__followers.wrap') 43 + var a, b 44 + 45 + pull(api.follows(id), pull.unique(), pull.collect(function (err, ary) { 46 + a = ary || []; next() 47 + })) 48 + pull(api.followers(id), pull.unique(), pull.collect(function (err, ary) { 49 + b = ary || {}; next() 50 + })) 51 + 52 + function next () { 53 + if(!(a && b)) return 54 + var _c = [], _a = [], _b = [] 55 + 56 + a.forEach(function (id) { 57 + if(!~b.indexOf(id)) _a.push(id) 58 + else _c.push(id) 59 + }) 60 + b.forEach(function (id) { 61 + if(!~_c.indexOf(id)) _b.push(id) 62 + }) 63 + function add (ary, el) { 64 + ary.forEach(function (id) { el.appendChild(image_link(id)) }) 65 + } 66 + 67 + add(_a, follows_el) 68 + add(_c, friends_el) 69 + add(_b, followers_el) 70 + } 71 + 72 + 73 + return h('div.column.profile', 74 + api.avatar_edit(id), 75 + api.avatar_action(id), 76 + h('div.profile__relationships.column', 77 + h('strong', 'follows'), 78 + follows_el, 79 + h('strong', 'friends'), 80 + friends_el, 81 + h('strong', 'followers'), 82 + followers_el 83 + ) 84 + ) 85 + } 86 + 87 + } 88 +
+37
patchbay/modules_basic/avatar.js
··· 1 + var h = require('hyperscript') 2 + var u = require('../util') 3 + 4 + exports.needs = { 5 + avatar_name: 'first', 6 + avatar_image: 'first', 7 + avatar_link: 'first' 8 + } 9 + 10 + exports.gives = { 11 + avatar: true, 12 + avatar_image_name_link: true, 13 + avatar_image_link: true 14 + } 15 + 16 + exports.create = function (api) { 17 + 18 + var exports = {} 19 + exports.avatar = function (author, classes) { 20 + return exports.avatar_image_name_link(author, classes) 21 + } 22 + 23 + exports.avatar_image_name_link = function (author, classes) { 24 + return api.avatar_link(author, [ 25 + api.avatar_image(author, classes), 26 + api.avatar_name(author) 27 + ]) 28 + } 29 + 30 + exports.avatar_image_link = function (author, classes) { 31 + return api.avatar_link(author, api.avatar_image(author, classes)) 32 + } 33 + 34 + return exports 35 + } 36 + 37 +
+155
patchbay/modules_basic/compose.js
··· 1 + 'use strict' 2 + var h = require('hyperscript') 3 + var u = require('../util') 4 + var suggest = require('suggest-box') 5 + var mentions = require('ssb-mentions') 6 + var lightbox = require('hyperlightbox') 7 + var cont = require('cont') 8 + 9 + //var plugs = require('../plugs') 10 + //var suggest_mentions= plugs.asyncConcat(exports.suggest_mentions = []) 11 + //var publish = plugs.first(exports.sbot_publish = []) 12 + //var message_content = plugs.first(exports.message_content = []) 13 + //var message_confirm = plugs.first(exports.message_confirm = []) 14 + //var file_input = plugs.first(exports.file_input = []) 15 + 16 + exports.needs = { 17 + suggest_mentions: 'map', //<-- THIS MUST BE REWRITTEN 18 + publish: 'first', 19 + message_content: 'first', 20 + message_confirm: 'first', 21 + file_input: 'first' 22 + } 23 + 24 + exports.gives = 'message_compose' 25 + 26 + function id (e) { return e } 27 + 28 + /* 29 + opts can take 30 + 31 + placeholder: string. placeholder text, defaults to "Write a message" 32 + prepublish: function. called before publishing a message. 33 + shrink: boolean. set to false, to make composer not shrink (or hide controls) when unfocused. 34 + */ 35 + 36 + exports.create = function (api) { 37 + 38 + return function (meta, opts, cb) { 39 + if('function' === typeof cb) { 40 + if('function' === typeof opts) 41 + opts = {prepublish: opts} 42 + } 43 + 44 + if(!opts) opts = {} 45 + opts.prepublish = opts.prepublish || id 46 + 47 + var accessories 48 + meta = meta || {} 49 + if(!meta.type) throw new Error('message must have type') 50 + var ta = h('textarea', { 51 + placeholder: opts.placeholder || 'Write a message', 52 + style: {height: opts.shrink === false ? '200px' : ''} 53 + }) 54 + 55 + if(opts.shrink !== false) { 56 + var blur 57 + ta.addEventListener('focus', function () { 58 + clearTimeout(blur) 59 + if(!ta.value) { 60 + ta.style.height = '200px' 61 + } 62 + accessories.style.display = 'block' 63 + }) 64 + ta.addEventListener('blur', function () { 65 + //don't shrink right away, so there is time 66 + //to click the publish button. 67 + clearTimeout(blur) 68 + blur = setTimeout(function () { 69 + if(ta.value) return 70 + ta.style.height = '50px' 71 + accessories.style.display = 'none' 72 + }, 200) 73 + }) 74 + } 75 + 76 + ta.addEventListener('keydown', function (ev) { 77 + if(ev.keyCode === 13 && ev.ctrlKey) publish() 78 + }) 79 + 80 + var files = [] 81 + var filesById = {} 82 + 83 + function publish() { 84 + publishBtn.disabled = true 85 + var content 86 + try { 87 + content = JSON.parse(ta.value) 88 + } catch (err) { 89 + meta.text = ta.value 90 + meta.mentions = mentions(ta.value).map(function (mention) { 91 + // merge markdown-detected mention with file info 92 + var file = filesById[mention.link] 93 + if (file) { 94 + if (file.type) mention.type = file.type 95 + if (file.size) mention.size = file.size 96 + } 97 + return mention 98 + }) 99 + try { 100 + meta = opts.prepublish(meta) 101 + } catch (err) { 102 + publishBtn.disabled = false 103 + if (cb) cb(err) 104 + else alert(err.message) 105 + } 106 + return api.message_confirm(meta, done) 107 + } 108 + 109 + api.message_confirm(content, done) 110 + 111 + function done (err, msg) { 112 + publishBtn.disabled = false 113 + if(err) return alert(err.stack) 114 + else if (msg) ta.value = '' 115 + 116 + if (cb) cb(err, msg) 117 + } 118 + } 119 + 120 + 121 + var publishBtn = h('button', 'Publish', {onclick: publish}) 122 + var composer = 123 + h('div.compose', h('div.column', ta, 124 + accessories = h('div.row.compose__controls', 125 + //hidden until you focus the textarea 126 + {style: {display: opts.shrink === false ? '' : 'none'}}, 127 + api.file_input(function (file) { 128 + files.push(file) 129 + filesById[file.link] = file 130 + 131 + var embed = file.type.indexOf('image/') === 0 ? '!' : '' 132 + ta.value += embed + '['+file.name+']('+file.link+')' 133 + console.log('added:', file) 134 + }), 135 + publishBtn) 136 + ) 137 + ) 138 + 139 + suggest(ta, function (name, cb) { 140 + cont.para(api.suggest_mentions(name)) 141 + (function (err, ary) { 142 + cb(null, ary.reduce(function (a, b) { 143 + if(!b) return a 144 + return a.concat(b) 145 + }, [])) 146 + }) 147 + }, {}) 148 + 149 + return composer 150 + 151 + } 152 + 153 + } 154 + 155 +
+66
patchbay/modules_basic/feed.js
··· 1 + var ref = require('ssb-ref') 2 + var Scroller = require('pull-scroll') 3 + var h = require('hyperscript') 4 + var pull = require('pull-stream') 5 + var u = require('../util') 6 + 7 + //var plugs = require('../plugs') 8 + //var sbot_user_feed = plugs.first(exports.sbot_user_feed = []) 9 + //var message_render = plugs.first(exports.message_render = []) 10 + //var avatar_profile = plugs.first(exports.avatar_profile = []) 11 + //var signifier = plugs.first(exports.signifier = []) 12 + 13 + exports.needs = { 14 + sbot_user_feed: 'first', 15 + message_render: 'first', 16 + avatar_profile: 'first', 17 + signifier: 'first' 18 + } 19 + 20 + exports.gives = 'screen_view' 21 + 22 + 23 + exports.create = function (api) { 24 + 25 + return function (id) { 26 + //TODO: header of user info, avatars, names, follows. 27 + 28 + if(ref.isFeed(id)) { 29 + 30 + var content = h('div.column.scroller__content') 31 + var div = h('div.column.scroller', 32 + {style: {'overflow':'auto'}}, 33 + h('div.scroller__wrapper', 34 + h('div', api.avatar_profile(id)), 35 + content 36 + ) 37 + ) 38 + 39 + api.signifier(id, function (_, names) { 40 + if(names.length) div.title = names[0].name 41 + }) 42 + 43 + 44 + pull( 45 + api.sbot_user_feed({id: id, old: false, live: true}), 46 + Scroller(div, content, api.message_render, true, false) 47 + ) 48 + 49 + //how to handle when have scrolled past the start??? 50 + 51 + pull( 52 + u.next(api.sbot_user_feed, { 53 + id: id, reverse: true, 54 + limit: 50, live: false 55 + }, ['value', 'sequence']), 56 + pull.through(console.log.bind(console)), 57 + Scroller(div, content, api.message_render, false, false) 58 + ) 59 + 60 + return div 61 + 62 + } 63 + } 64 + 65 + } 66 +
+99
patchbay/modules_basic/follow.js
··· 1 + var h = require('hyperscript') 2 + var u = require('../util') 3 + var pull = require('pull-stream') 4 + 5 + //var plugs = require('../plugs') 6 + //var avatar = plugs.first(exports.avatar = []) 7 + //var avatar_name = plugs.first(exports.avatar_name = []) 8 + //var avatar_link = plugs.first(exports.avatar_link = []) 9 + //var message_confirm = plugs.first(exports.message_confirm = []) 10 + //var follower_of = plugs.first(exports.follower_of = []) 11 + 12 + //render a message when someone follows someone, 13 + //so you see new users 14 + function isRelated(value, name) { 15 + return value ? name : value === false ? 'un'+name : '' 16 + } 17 + 18 + exports.needs = { 19 + avatar: 'first', 20 + avatar_name: 'first', 21 + avatar_link: 'first', 22 + message_confirm: 'first', 23 + follower_of: 'first' 24 + } 25 + 26 + exports.gives = { 27 + message_content: true, 28 + message_content_mini: true, 29 + avatar_action: true, 30 + } 31 + 32 + exports.create = function (api) { 33 + var exports = {} 34 + exports.message_content = 35 + exports.message_content_mini = function (msg) { 36 + var content = msg.value.content 37 + if(content.type == 'contact' && content.contact) { 38 + var relation = isRelated(content.following, 'follows') 39 + if(content.blocking) relation = 'blocks' 40 + return [ 41 + relation, ' ', 42 + api.avatar_link(content.contact, api.avatar_name(content.contact), '') 43 + ] 44 + } 45 + } 46 + 47 + exports.message_content = function (msg) { 48 + 49 + var content = msg.value.content 50 + if(content.type == 'contact' && content.contact) { 51 + var relation = isRelated(content.following, 'follows') 52 + if(content.blocking) relation = 'blocks' 53 + return h('div.contact', relation, api.avatar(msg.value.content.contact, 'thumbnail')) 54 + } 55 + } 56 + 57 + exports.avatar_action = function (id) { 58 + var follows_you, you_follow 59 + 60 + var self_id = require('../keys').id 61 + api.follower_of(self_id, id, function (err, f) { 62 + you_follow = f 63 + update() 64 + }) 65 + api.follower_of(id, self_id, function (err, f) { 66 + follows_you = f 67 + update() 68 + }) 69 + 70 + var state = h('label') 71 + var label = h('span') 72 + 73 + function update () { 74 + state.textContent = ( 75 + follows_you && you_follow ? 'friend' 76 + : follows_you ? 'follows you' 77 + : you_follow ? 'you follow' 78 + : '' 79 + ) 80 + 81 + label.textContent = you_follow ? 'unfollow' : 'follow' 82 + } 83 + 84 + return h('div', state, 85 + h('a', {href:'#', onclick: function () { 86 + api.message_confirm({ 87 + type: 'contact', 88 + contact: id, 89 + following: !you_follow 90 + }, function (err, msg) { 91 + if (err) return console.error(err) 92 + you_follow = msg.value.content.following 93 + update() 94 + }) 95 + }}, h('br'), label) 96 + ) 97 + } 98 + return exports 99 + }
+30
patchbay/modules_basic/index.js
··· 1 + module.exports = { 2 + "about.js": require('./about.js'), 3 + "avatar-edit.js": require('./avatar-edit.js'), 4 + "avatar-image.js": require('./avatar-image.js'), 5 + "avatar-link.js": require('./avatar-link.js'), 6 + "avatar-name.js": require('./avatar-name.js'), 7 + "avatar-profile.js": require('./avatar-profile.js'), 8 + "avatar.js": require('./avatar.js'), 9 + "compose.js": require('./compose.js'), 10 + "feed.js": require('./feed.js'), 11 + "follow.js": require('./follow.js'), 12 + "invite.js": require('./invite.js'), 13 + "like.js": require('./like.js'), 14 + "markdown.js": require('./markdown.js'), 15 + "message-link.js": require('./message-link.js'), 16 + "message-name.js": require('./message-name.js'), 17 + "message.js": require('./message.js'), 18 + "names.js": require('./names.js'), 19 + "post.js": require('./post.js'), 20 + "private.js": require('./private.js'), 21 + "pub.js": require('./pub.js'), 22 + "public.js": require('./public.js'), 23 + "relationships.js": require('./relationships.js'), 24 + "search-box.js": require('./search-box.js'), 25 + "setup.js": require('./setup'), 26 + "suggest-mentions.js": require('./suggest-mentions.js'), 27 + "thread.js": require('./thread.js'), 28 + "timestamp.js": require('./timestamp.js') 29 + } 30 +
+126
patchbay/modules_basic/invite.js
··· 1 + 'use strict' 2 + var ref = require('ssb-ref') 3 + var ssbClient = require('ssb-client') 4 + var id = require('../keys').id 5 + var h = require('hyperscript') 6 + 7 + var Progress = require('hyperprogress') 8 + 9 + //var plugs = require('../plugs') 10 + //var sbot_publish = plugs.first(exports.sbot_publish = []) 11 + //var sbot_gossip_connect = plugs.first(exports.sbot_gossip_connect = []) 12 + //var follower_of = plugs.first(exports.follower_of = []) 13 + 14 + exports.needs = { 15 + sbot_publish: 'first', 16 + sbot_gossip_connect: 'first', 17 + follower_of: 'first', 18 + invite_parse: 'first', 19 + } 20 + 21 + exports.gives = { 22 + invite_parse: true, 23 + invite_accept: true, 24 + screen_view: true 25 + } 26 + 27 + exports.create = function (api) { 28 + var self 29 + return self = { 30 + invite_parse: function (invite) { 31 + return ref.parseInvite(invite) 32 + }, 33 + 34 + invite_accept: function (invite, onProgress, cb) { 35 + var data = self.invite_parse(invite) 36 + if(!data) return cb(new Error('not a valid invite code:' + invite)) 37 + 38 + onProgress('connecting...') 39 + 40 + api.sbot_gossip_connect(data.remote, function (err) { 41 + if(err) console.log(err) 42 + }) 43 + 44 + ssbClient(null, { 45 + remote: data.invite, 46 + manifest: { invite: {use: 'async'}, getAddress: 'async' } 47 + }, function (err, sbot) { 48 + if(err) return cb(err) 49 + onProgress('requesting follow...') 50 + console.log(sbot) 51 + sbot.invite.use({feed: id}, function (err, msg) { 52 + 53 + //if they already follow us, just check we actually follow them. 54 + if(err) api.follower_of(id, data.key, function (_err, follows) { 55 + if(follows) cb(err) 56 + else next() 57 + }) 58 + else next() 59 + 60 + function next () { 61 + onProgress('following...') 62 + 63 + //remove the seed from the shs address. 64 + //then it's correct address. 65 + //this should make the browser connect to this as remote. 66 + //we don't want to do this if when using this locally, though. 67 + if(process.title === 'browser') 68 + localStorage.remote = data.remote 69 + 70 + api.sbot_publish({ 71 + type: 'contact', 72 + contact: data.key, 73 + following: true, 74 + }, cb) 75 + } 76 + }) 77 + }) 78 + }, 79 + 80 + screen_view: function (invite) { 81 + 82 + var data = ref.parseInvite(invite) 83 + if(!data) return 84 + 85 + var progress = Progress(4) 86 + 87 + //connect to server 88 + //request follow 89 + //post pub announce 90 + //post follow pub 91 + var div = h('div.column', 92 + h('div', 93 + "you have been invited to join:", h('br'), 94 + h('code', data.invite) 95 + ), 96 + h('button', 'accept', {onclick: attempt}), 97 + progress 98 + ) 99 + 100 + function attempt () { 101 + self.invite_accept(invite, function (message) { 102 + progress.next(message) 103 + }, function (err) { 104 + if(err) return progress.fail(err) 105 + progress.complete() 106 + //check for redirect 107 + var parts = location.hash.substring(1).split('#') 108 + 109 + //TODO: handle in a consistent way with either hashrouting 110 + //or with tabs... 111 + if(parts[0] === data.invite) 112 + location.hash = '' 113 + else 114 + console.log("NO REDIRECT") 115 + }) 116 + } 117 + 118 + // If we are in the browser, 119 + // and do not already have a remote set, automatically trigger the invite. 120 + if(process.title == 'browser' && !localStorage.remote) attempt() 121 + 122 + return div 123 + } 124 + } 125 + } 126 +
+88
patchbay/modules_basic/like.js
··· 1 + 2 + var h = require('hyperscript') 3 + var u = require('../util') 4 + var pull = require('pull-stream') 5 + 6 + var plugs = require('../plugs') 7 + 8 + //var message_confirm = plugs.first(exports.message_confirm = []) 9 + //var message_link = plugs.first(exports.message_link = []) 10 + //var sbot_links = plugs.first(exports.sbot_links = []) 11 + 12 + exports.needs = { 13 + avatar_name: 'first', 14 + message_confirm: 'first', 15 + message_link: 'first', 16 + sbot_links: 'first' 17 + } 18 + 19 + exports.gives = { 20 + message_content: true, 21 + message_content_mini: true, 22 + message_meta: true, 23 + message_action: true 24 + } 25 + 26 + exports.create = function (api) { 27 + var exports = {} 28 + 29 + exports.message_content = 30 + exports.message_content_mini = function (msg, sbot) { 31 + if(msg.value.content.type !== 'vote') return 32 + var link = msg.value.content.vote.link 33 + return [ 34 + msg.value.content.vote.value > 0 ? 'dug' : 'undug', 35 + ' ', api.message_link(link) 36 + ] 37 + } 38 + 39 + exports.message_meta = function (msg, sbot) { 40 + var digs = h('a') 41 + 42 + var votes = [] 43 + for(var k in CACHE) { 44 + if(CACHE[k].content.type == 'vote' && 45 + (CACHE[k].content.vote == msg.key || 46 + CACHE[k].content.vote.link == msg.key 47 + )) 48 + votes.push({source: CACHE[k].author, dest: k, rel: 'vote'}) 49 + } 50 + 51 + if(votes.length === 1) 52 + digs.textContent = ' 1 Dig' 53 + else if(votes.length > 1) 54 + digs.textContent = ' ' + votes.length + ' Digs' 55 + 56 + pull( 57 + pull.values(votes.map(vote => { 58 + return api.avatar_name(vote.source) 59 + })), 60 + pull.collect(function (err, ary) { 61 + digs.title = ary.map(x => x.innerHTML).join(" ") 62 + }) 63 + ) 64 + 65 + return digs 66 + } 67 + 68 + exports.message_action = function (msg, sbot) { 69 + if(msg.value.content.type !== 'vote') 70 + return h('a.dig', {href: '#', onclick: function () { 71 + var dig = { 72 + type: 'vote', 73 + vote: { link: msg.key, value: 1, expression: 'Dig' } 74 + } 75 + if(msg.value.content.recps) { 76 + dig.recps = msg.value.content.recps.map(function (e) { 77 + return e && typeof e !== 'string' ? e.link : e 78 + }) 79 + dig.private = true 80 + } 81 + //TODO: actually publish... 82 + 83 + api.message_confirm(dig) 84 + }}, 'Dig') 85 + 86 + } 87 + return exports 88 + }
+46
patchbay/modules_basic/markdown.js
··· 1 + var markdown = require('ssb-markdown') 2 + var h = require('hyperscript') 3 + var ref = require('ssb-ref') 4 + 5 + exports.needs = { 6 + blob_url: 'first', 7 + emoji_url: 'first' 8 + } 9 + 10 + exports.gives = 'markdown' 11 + 12 + exports.create = function (api) { 13 + 14 + function renderEmoji(emoji) { 15 + var url = api.emoji_url(emoji) 16 + if (!url) return ':' + emoji + ':' 17 + return '<img src="' + encodeURI(url) + '"' 18 + + ' alt=":' + escape(emoji) + ':"' 19 + + ' title=":' + escape(emoji) + ':"' 20 + + ' class="emoji">' 21 + } 22 + 23 + return function (content) { 24 + if('string' === typeof content) 25 + content = {text: content} 26 + //handle patchwork style mentions. 27 + var mentions = {} 28 + if(Array.isArray(content.mentions)) 29 + content.mentions.forEach(function (link) { 30 + if(link.name) mentions["@"+link.name] = link.link 31 + }) 32 + 33 + var md = h('div.markdown') 34 + md.innerHTML = markdown.block(content.text, { 35 + emoji: renderEmoji, 36 + toUrl: function (id) { 37 + if(ref.isBlob(id)) return api.blob_url(id) 38 + return '#'+(mentions[id]?mentions[id]:id) 39 + } 40 + }) 41 + 42 + return md 43 + 44 + } 45 + } 46 +
+39
patchbay/modules_basic/message-link.js
··· 1 + var h = require('hyperscript') 2 + var ref = require('ssb-ref') 3 + 4 + //var first = require('../plugs').first 5 + //var sbot_get = first(exports.sbot_get = []) 6 + //var message_name = first(exports.message_name = []) 7 + 8 + exports.needs = { 9 + message_name: 'first' 10 + } 11 + 12 + exports.gives = 'message_link' 13 + 14 + exports.create = function (api) { 15 + 16 + return function (id) { 17 + 18 + if('string' !== typeof id) 19 + throw new Error('link must be to message id') 20 + 21 + var link = h('a', {href: '#'+id}, id.substring(0, 10)+'...') 22 + 23 + if(ref.isMsg(id)) 24 + api.message_name(id, function (err, name) { 25 + if(err) console.error(err) 26 + else link.textContent = name 27 + }) 28 + 29 + return link 30 + } 31 + } 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 +
+26
patchbay/modules_basic/message-name.js
··· 1 + 2 + function title (s) { 3 + var m = /^\n*([^\n]{0,40})/.exec(s) 4 + return m && (m[1].length == 40 ? m[1]+'...' : m[1]) 5 + } 6 + 7 + exports.needs = { sbot_get: 'first' } 8 + exports.gives = 'message_name' 9 + 10 + //TODO: rewrite as observable? 11 + 12 + exports.create = function (api) { 13 + return function (id, cb) { 14 + api.sbot_get(id, function (err, value) { 15 + if(err && err.name == 'NotFoundError') 16 + return cb(null, id.substring(0, 10)+'...(missing)') 17 + if(value.content.type === 'post' && 'string' === typeof value.content.text) 18 + return cb(null, title(value.content.text)) 19 + else if('string' === typeof value.content.text) 20 + return cb(null, value.content.type + ':'+title(value.content.text)) 21 + else 22 + return cb(null, id.substring(0, 10)+'...') 23 + }) 24 + } 25 + } 26 +
+122
patchbay/modules_basic/message.js
··· 1 + var h = require('hyperscript') 2 + var u = require('../util') 3 + var pull = require('pull-stream') 4 + 5 + //var plugs = require('../plugs') 6 + // 7 + //var message_content = plugs.first(exports.message_content = []) 8 + //var message_content_mini = plugs.first(exports.message_content_mini = []) 9 + // 10 + //var avatar = plugs.first(exports.avatar = []) 11 + //var avatar_name = plugs.first(exports.avatar_name = []) 12 + //var avatar_link = plugs.first(exports.avatar_link = []) 13 + //var message_meta = plugs.map(exports.message_meta = []) 14 + //var message_action = plugs.map(exports.message_action = []) 15 + //var message_link = plugs.first(exports.message_link = []) 16 + // 17 + //var sbot_links = plugs.first(exports.sbot_links = []) 18 + 19 + exports.needs = { 20 + message_content: 'first', 21 + message_content_mini: 'first', 22 + avatar: 'first', 23 + avatar_name: 'first', 24 + avatar_link: 'first', 25 + message_meta: 'map', 26 + message_action: 'map', 27 + message_link: 'first', 28 + // sbot_links: 'first' 29 + } 30 + 31 + exports.gives = 'message_render' 32 + 33 + function message_content_mini_fallback(msg) { 34 + return h('code', msg.value.content.type) 35 + } 36 + 37 + exports.create = function (api) { 38 + 39 + function mini(msg, el) { 40 + var div = h('div.message.message--mini', 41 + h('div.row', 42 + h('div', 43 + api.avatar_link(msg.value.author, api.avatar_name(msg.value.author)), 44 + h('span.message_content', el)), 45 + h('div.message_meta.row', api.message_meta(msg)) 46 + ) 47 + ) 48 + div.setAttribute('tabindex', '0') 49 + return div 50 + } 51 + 52 + return function (msg, sbot) { 53 + var el = api.message_content_mini(msg) 54 + if(el) return mini(msg, el) 55 + 56 + var el = api.message_content(msg) 57 + if(!el) return mini(msg, message_content_mini_fallback(msg)) 58 + 59 + var links = [] 60 + for(var k in CACHE) { 61 + var _msg = CACHE[k] 62 + if(Array.isArray(_msg.content.mentions)) { 63 + for(var i = 0; i < _msg.content.mentions.length; i++) 64 + if(_msg.content.mentions[i].link == msg.key) 65 + links.push(k) 66 + } 67 + } 68 + 69 + var backlinks = h('div.backlinks') 70 + if(links.length) 71 + backlinks.appendChild(h('label', 'backlinks:', 72 + h('div', links.map(function (key) { 73 + return api.message_link(key) 74 + })) 75 + )) 76 + 77 + 78 + // pull( 79 + // sbot_links({dest: msg.key, rel: 'mentions', keys: true}), 80 + // pull.collect(function (err, links) { 81 + // if(links.length) 82 + // backlinks.appendChild(h('label', 'backlinks:', 83 + // h('div', links.map(function (link) { 84 + // return message_link(link.key) 85 + // })) 86 + // )) 87 + // }) 88 + // ) 89 + 90 + var msg = h('div.message', 91 + h('div.title.row', 92 + h('div.avatar', api.avatar(msg.value.author, 'thumbnail')), 93 + h('div.message_meta.row', api.message_meta(msg)) 94 + ), 95 + h('div.message_content', el), 96 + h('div.message_actions.row', 97 + h('div.actions', api.message_action(msg), 98 + h('a', {href: '#' + msg.key}, 'Reply') 99 + ) 100 + ), 101 + backlinks, 102 + {onkeydown: function (ev) { 103 + //on enter, hit first meta. 104 + if(ev.keyCode == 13) { 105 + 106 + // unless in an input 107 + if (ev.target.nodeName === 'INPUT' 108 + || ev.target.nodeName === 'TEXTAREA') return 109 + 110 + msg.querySelector('.enter').click() 111 + } 112 + }} 113 + ) 114 + 115 + // ); hyperscript does not seem to set attributes correctly. 116 + msg.setAttribute('tabindex', '0') 117 + 118 + return msg 119 + } 120 + } 121 + 122 +
+183
patchbay/modules_basic/names.js
··· 1 + var pull = require('pull-stream') 2 + var many = require('pull-many') 3 + var mfr = require('map-filter-reduce') 4 + 5 + function all(stream, cb) { 6 + pull(stream, pull.collect(cb)) 7 + } 8 + 9 + //var plugs = require('../plugs') 10 + //var sbot_links2 = plugs.first(exports.sbot_links2 = []) 11 + //var sbot_query = plugs.first(exports.sbot_query = []) 12 + // 13 + exports.needs = { 14 + sbot_links2: 'first', 15 + sbot_query: 'first' 16 + } 17 + 18 + exports.gives = { 19 + connection_status: true, 20 + signifier: true, 21 + signified: true, 22 + } 23 + 24 + /* 25 + filter(rel: ['mentions', prefix('@')]) | reduce(name: rel[1], value: count()) 26 + */ 27 + 28 + var filter = { 29 + $filter: { 30 + rel: ["mentions", {$prefix: "@"}] 31 + } 32 + } 33 + var map = { 34 + $map: { 35 + name: ['rel', 1], 36 + id: 'dest', 37 + ts: 'ts', 38 + } 39 + } 40 + 41 + var reduce = { 42 + $reduce: { 43 + name: 'name', 44 + id: 'id', 45 + rank: {$count: true}, 46 + ts: {$max: 'ts'} 47 + } 48 + } 49 + 50 + var filter2 = { 51 + $filter: { 52 + value: { 53 + content: { 54 + type: "about", 55 + name: {"$prefix": ""}, 56 + about: {"$prefix": ""} 57 + } 58 + } 59 + } 60 + } 61 + 62 + var map2 = { 63 + $map: { 64 + name: ["value", "content", "name"], 65 + id: ['value', 'content', 'about'], 66 + ts: "timestamp" 67 + } 68 + } 69 + 70 + //union with this query... 71 + 72 + var names = NAMES = [] 73 + function update(name) { 74 + var n = names.find(function (e) { 75 + return e.id == name.id && e.name == e.name 76 + }) 77 + if(!n) { 78 + name.rank = 1 79 + //this should be inserted at the right place... 80 + names.push(name) 81 + } 82 + else 83 + n.rank = n.rank += (name.rank || 1) 84 + } 85 + 86 + var ready = false, waiting = [] 87 + 88 + var merge = { 89 + $reduce: { 90 + name: 'name', 91 + id: 'id', 92 + rank: {$sum: 'rank'}, 93 + ts: {$max: 'ts'} 94 + } 95 + } 96 + 97 + function add_sigil(stream) { 98 + return pull(stream, pull.map(function (e) { 99 + if (e && e.id && e.name && e.id[0] !== e.name[0]) 100 + e.name = e.id[0] + e.name 101 + return e 102 + }) 103 + ) 104 + } 105 + 106 + var queryNamedGitRepos = [ 107 + {$filter: { 108 + value: { 109 + content: { 110 + type: "git-repo", 111 + name: {"$prefix": ""} 112 + } 113 + } 114 + }}, 115 + {$map: { 116 + name: ["value", "content", "name"], 117 + id: ['key'], 118 + ts: "timestamp" 119 + }}, 120 + reduce 121 + ] 122 + exports.create = function (api) { 123 + 124 + var exports = {} 125 + exports.connection_status = function (err) { 126 + if(!err) { 127 + pull( 128 + many([ 129 + api.sbot_links2({query: [filter, map, reduce]}), 130 + add_sigil(api.sbot_query({query: [filter2, map2, reduce]})), 131 + add_sigil(api.sbot_query({query: queryNamedGitRepos})) 132 + ]), 133 + //reducing also ensures order by the lookup properties 134 + //in this case: [name, id] 135 + mfr.reduce(merge), 136 + pull.collect(function (err, ary) { 137 + if(!err) { 138 + NAMES = names = ary 139 + ready = true 140 + while(waiting.length) waiting.shift()() 141 + } 142 + }) 143 + ) 144 + 145 + pull(many([ 146 + api.sbot_links2({query: [filter, map], old: false}), 147 + add_sigil(api.sbot_query({query: [filter2, map2], old: false})), 148 + add_sigil(api.sbot_query({query: queryNamedGitRepos, old: false})) 149 + ]), 150 + pull.drain(update)) 151 + } 152 + } 153 + 154 + function async(fn) { 155 + return function (value, cb) { 156 + function go () { cb(null, fn(value)) } 157 + if(ready) go() 158 + else waiting.push(go) 159 + } 160 + } 161 + 162 + function rank(ary) { 163 + //sort by most used, or most recently used 164 + return ary.sort(function (a, b) { return b.rank - a.rank || b.ts - a.ts }) 165 + } 166 + 167 + //we are just iterating over the entire array. 168 + //if this becomes a problem, maintain two arrays 169 + //one of each sort order, but do not duplicate the objects. 170 + //that should mean the space required is just 2x object references, 171 + //not 2x objects, and we can use binary search to find matches. 172 + 173 + exports.signifier = async(function (id) { 174 + return rank(names.filter(function (e) { return e.id == id})) 175 + }) 176 + 177 + exports.signified = async(function (name) { 178 + var rx = new RegExp('^'+name) 179 + return rank(names.filter(function (e) { return rx.test(e.name) })) 180 + }) 181 + 182 + return exports 183 + }
+43
patchbay/modules_basic/post.js
··· 1 + var markdown = require('ssb-markdown') 2 + var h = require('hyperscript') 3 + var u = require('../util') 4 + var ref = require('ssb-ref') 5 + 6 + //render a message 7 + 8 + //var plugs = require('../plugs') 9 + //var message_link = plugs.first(exports.message_link = []) 10 + //var markdown = plugs.first(exports.markdown = []) 11 + // 12 + 13 + exports.needs = { message_link: 'first', markdown: 'first' } 14 + 15 + exports.gives = 'message_content' 16 + 17 + exports.create = function (api) { 18 + return function (data) { 19 + if(!data.value.content || !data.value.content.text) return 20 + 21 + var root = data.value.content.root 22 + var re = !root ? null : h('span', 're: ', api.message_link(root)) 23 + 24 + return h('div', 25 + re, 26 + api.markdown(data.value.content) 27 + ) 28 + 29 + } 30 + } 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 40 + 41 + 42 + 43 +
+118
patchbay/modules_basic/private.js
··· 1 + 'use strict' 2 + var h = require('hyperscript') 3 + var u = require('../util') 4 + var pull = require('pull-stream') 5 + var Scroller = require('pull-scroll') 6 + var ref = require('ssb-ref') 7 + 8 + function map(ary, iter) { 9 + if(Array.isArray(ary)) return ary.map(iter) 10 + } 11 + 12 + exports.needs = { 13 + message_render: 'first', 14 + message_compose: 'first', 15 + message_unbox: 'first', 16 + sbot_log: 'first', 17 + sbot_whoami: 'first', 18 + avatar_image_link: 'first', 19 + emoji_url: 'first' 20 + } 21 + 22 + exports.gives = { 23 + builtin_tabs: true, 24 + screen_view: true, 25 + message_meta: true, 26 + message_content_mini: true 27 + } 28 + 29 + exports.create = function (api) { 30 + 31 + function unbox () { 32 + return pull( 33 + pull.filter(function (msg) { 34 + return 'string' == typeof msg.value.content 35 + }), 36 + pull.map(function (msg) { 37 + return api.message_unbox(msg) 38 + }), 39 + pull.filter(Boolean) 40 + ) 41 + } 42 + 43 + return { 44 + builtin_tabs: function () { 45 + return ['/private'] 46 + }, 47 + 48 + screen_view: function (path) { 49 + if(path !== '/private') return 50 + 51 + var div = h('div.column.scroller', 52 + {style: {'overflow':'auto'}}) 53 + 54 + // if local id is different from sbot id, sbot won't have indexes of 55 + // private threads 56 + //TODO: put all private indexes client side. 57 + var id = require('../keys').id 58 + api.sbot_whoami(function (err, feed) { 59 + if (err) return console.error(err) 60 + if(id !== feed.id) 61 + return div.appendChild(h('h4', 62 + 'Private messages are not supported in the lite client.')) 63 + 64 + var compose = api.message_compose( 65 + {type: 'post', recps: [], private: true}, 66 + { 67 + prepublish: function (msg) { 68 + msg.recps = [id].concat(msg.mentions).filter(function (e) { 69 + return ref.isFeed('string' === typeof e ? e : e.link) 70 + }) 71 + if(!msg.recps.length) 72 + throw new Error('cannot make private message without recipients - just mention the user in an at reply in the message you send') 73 + return msg 74 + }, 75 + placeholder: 'Write a private message' 76 + } 77 + ) 78 + 79 + var content = h('div.column.scroller__content') 80 + div.appendChild(h('div.scroller__wrapper', compose, content)) 81 + 82 + pull( 83 + u.next(api.sbot_log, {old: false, limit: 100}), 84 + unbox(), 85 + Scroller(div, content, api.message_render, true, false) 86 + ) 87 + 88 + pull( 89 + u.next(api.sbot_log, {reverse: true, limit: 1000}), 90 + unbox(), 91 + Scroller(div, content, api.message_render, false, false, function (err) { 92 + if(err) throw err 93 + }) 94 + ) 95 + }) 96 + 97 + return div 98 + }, 99 + 100 + message_meta: function (msg) { 101 + if(msg.value.content.recps || msg.value.private) 102 + return h('span.row', 'PRIVATE', map(msg.value.content.recps, function (id) { 103 + return api.avatar_image_link('string' == typeof id ? id : id.link, 'thumbnail') 104 + })) 105 + }, 106 + 107 + message_content_mini: function (msg, sbot) { 108 + if (typeof msg.value.content === 'string') { 109 + var icon = api.emoji_url('lock') 110 + return icon 111 + ? h('img', {className: 'emoji', src: icon}) 112 + : 'PRIVATE' 113 + } 114 + } 115 + } 116 + 117 + } 118 +
+29
patchbay/modules_basic/pub.js
··· 1 + var h = require('hyperscript') 2 + //var plugs = require('../plugs') 3 + //var avatar_name = plugs.first(exports.avatar_name = []) 4 + //var avatar_link = plugs.first(exports.avatar_link = []) 5 + // 6 + exports.needs = { 7 + avatar_name: 'first', 8 + avatar_link: 'first' 9 + } 10 + 11 + exports.gives = 'message_content' 12 + 13 + exports.create = function (api) { 14 + 15 + return function (msg, sbot) { 16 + var c = msg.value.content 17 + if (c.type === 'pub') { 18 + var address = c.address || {} 19 + return [ 20 + h('p', 'announced an address for ', 21 + api.avatar_link(address.key, api.avatar_name(address.key)), ':'), 22 + h('blockquote', 23 + h('code', address.host + ':' + address.port) 24 + ) 25 + ] 26 + } 27 + } 28 + 29 + }
+54
patchbay/modules_basic/public.js
··· 1 + var h = require('hyperscript') 2 + var u = require('../util') 3 + var pull = require('pull-stream') 4 + var Scroller = require('pull-scroll') 5 + 6 + //var plugs = require('../plugs') 7 + //var message_render = plugs.first(exports.message_render = []) 8 + //var message_compose = plugs.first(exports.message_compose = []) 9 + //var sbot_log = plugs.first(exports.sbot_log = []) 10 + 11 + exports.needs = { 12 + message_render: 'first', 13 + message_compose: 'first', 14 + sbot_log: 'first', 15 + } 16 + 17 + exports.gives = { 18 + builtin_tabs: true, screen_view: true 19 + } 20 + 21 + exports.create = function (api) { 22 + 23 + return { 24 + builtin_tabs: function () { 25 + return ['/public'] 26 + }, 27 + 28 + screen_view: function (path, sbot) { 29 + if(path === '/public') { 30 + 31 + var content = h('div.column.scroller__content') 32 + var div = h('div.column.scroller', 33 + {style: {'overflow':'auto'}}, 34 + h('div.scroller__wrapper', 35 + api.message_compose({type: 'post'}, {placeholder: 'Write a public message'}), 36 + content 37 + ) 38 + ) 39 + 40 + pull( 41 + u.next(api.sbot_log, {old: false, limit: 100}), 42 + Scroller(div, content, api.message_render, true, false) 43 + ) 44 + 45 + pull( 46 + u.next(api.sbot_log, {reverse: true, limit: 100, live: false}), 47 + Scroller(div, content, api.message_render, false, false) 48 + ) 49 + 50 + return div 51 + } 52 + } 53 + } 54 + }
+62
patchbay/modules_basic/relationships.js
··· 1 + var pull = require('pull-stream') 2 + //var plugs = require('../plugs') 3 + 4 + //var sbot_query = plugs.first(exports.sbot_query = []) 5 + 6 + //this is a bit crude, and doesn't actually show unfollows yet. 7 + 8 + function makeQuery (a, b) { 9 + return {"$filter": { 10 + value: { 11 + author: a, 12 + content: { 13 + type: 'contact', 14 + contact: b, 15 + following: true 16 + } 17 + }, 18 + }} 19 + } 20 + 21 + 22 + exports.needs = { sbot_query: 'first' } 23 + 24 + exports.gives = { 25 + follows: true, 26 + followers: true, 27 + follower_of: true 28 + } 29 + 30 + exports.create = function (api) { 31 + 32 + return { 33 + follows: function (id, cb) { 34 + return api.sbot_query({query: [ 35 + makeQuery(id, {$prefix:"@"}), 36 + {"$map": ['value', 'content', 'contact']} 37 + ]}) 38 + }, 39 + 40 + followers: function (id) { 41 + return api.sbot_query({query: [ 42 + makeQuery({$prefix:"@"}, id), 43 + {"$map": ['value', 'author']} 44 + ]}) 45 + }, 46 + 47 + follower_of: function (source, dest, cb) { 48 + pull( 49 + api.sbot_query({query: [ 50 + makeQuery(source, dest), 51 + {$map: ['value', 'content', 'following']} 52 + ]}), 53 + pull.collect(function (err, ary) { 54 + if(err) return cb(err) 55 + else cb(null, ary.pop()) //will be true, or undefined/false 56 + }) 57 + ) 58 + } 59 + } 60 + 61 + } 62 +
+78
patchbay/modules_basic/search-box.js
··· 1 + 'use strict' 2 + var cont = require('cont') 3 + var h = require('hyperscript') 4 + var suggest = require('suggest-box') 5 + var pull = require('pull-stream') 6 + 7 + //var plugs = require('../plugs') 8 + //var sbot_query = plugs.first(exports.sbot_query = []) 9 + //var sbot_links2 = plugs.first(exports.sbot_links2 = []) 10 + //var suggest_search = plugs.asyncConcat(exports.suggest_search = []) 11 + 12 + exports.needs = { 13 + sbot_query: 'first', sbot_links2: 'first', 14 + suggest_search: 'map' //REWRITE 15 + } 16 + 17 + var channels = [] 18 + 19 + exports.gives = 'search_box' 20 + 21 + exports.create = function (api) { 22 + 23 + return function (go) { 24 + 25 + var suggestBox 26 + var search = h('input.searchprompt', { 27 + type: 'search', 28 + placeholder: 'Commands', 29 + onkeydown: function (ev) { 30 + switch (ev.keyCode) { 31 + case 13: // enter 32 + if (suggestBox && suggestBox.active) { 33 + suggestBox.complete() 34 + ev.stopPropagation() 35 + } 36 + if (go(search.value.trim(), !ev.ctrlKey)) 37 + search.blur() 38 + return 39 + case 27: // escape 40 + ev.preventDefault() 41 + search.blur() 42 + return 43 + } 44 + } 45 + }) 46 + 47 + search.activate = function (sigil, ev) { 48 + search.focus() 49 + ev.preventDefault() 50 + if (search.value[0] === sigil) { 51 + search.selectionStart = 1 52 + search.selectionEnd = search.value.length 53 + } else { 54 + search.value = sigil 55 + } 56 + } 57 + 58 + var suggestions = {} 59 + 60 + // delay until the element has a parent 61 + setTimeout(function () { 62 + suggestBox = suggest(search, function (word, cb) { 63 + cont.para(api.suggest_search(word)) 64 + (function (err, ary) { 65 + if(err) return cb(err) 66 + 67 + cb(null, ary.filter(Boolean).reduce(function (a, b) { 68 + return a.concat(b) 69 + }, [])) 70 + }) 71 + }, {}) 72 + }, 10) 73 + 74 + return search 75 + } 76 + 77 + } 78 +
+160
patchbay/modules_basic/setup.js
··· 1 + 2 + var h = require('hyperscript') 3 + var pull = require('pull-stream') 4 + 5 + //var plugs = require('../plugs') 6 + // 7 + //var avatar_edit = plugs.first(exports.avatar_edit = []) 8 + //var invite_parse = plugs.first(exports.invite_parse = []) 9 + //var invite_accept = plugs.first(exports.invite_accept = []) 10 + //var sbot_progress = plugs.first(exports.sbot_progress = []) 11 + //var sbot_query = plugs.first(exports.sbot_query = []) 12 + //var avatar = plugs.first(exports.avatar = []) 13 + 14 + exports.needs = { 15 + avatar: 'first', 16 + avatar_edit: 'first', 17 + invite_parse: 'first', 18 + invite_accept: 'first', 19 + sbot_progress: 'first', 20 + sbot_query: 'first' 21 + } 22 + 23 + //maybe this could show the pubs, or 24 + //if someone locally follows you, 25 + //it could show the second degree pubs? 26 + 27 + //maybe show the network as animated graph? 28 + 29 + function followers_query (id) { 30 + return [{$filter: { 31 + value: {content: { 32 + type: "contact", 33 + contact: id, 34 + following: true, 35 + // autofollow: true 36 + }} 37 + }}] 38 + } 39 + 40 + exports.create = function (api) { 41 + 42 + var exports = {} 43 + 44 + //test whether we are connected to the ssb network. 45 + exports.setup_is_fresh_install = function (cb) { 46 + //test by checking whether you have any friends following you? 47 + pull( 48 + api.sbot_query({query: followers_query(id), limit: 1, live: false}), 49 + pull.collect(function (err, ary) { 50 + cb(err, !!ary.length) 51 + }) 52 + ) 53 + } 54 + 55 + function invite_form () { 56 + var accept = h('button', 'enter code', {disabled: true, onclick: function () { 57 + api.invite_accept(input.value, function (msg) { 58 + status.textContent = msg 59 + }, function (err) { 60 + if(err) { 61 + accept.textContent = 'error:'+(err.message || err.stack || error.type) 62 + console.error(err) 63 + } 64 + else { 65 + input.value = '' 66 + accept.textContent = 'success!' 67 + } 68 + }) 69 + }}) 70 + 71 + function parseInput () { 72 + if(!input.value) { 73 + accept.disabled = true 74 + accept.textContent = 'enter code' 75 + } 76 + else if(!invite_parse(input.value)) { 77 + accept.disabled = true 78 + accept.textContent = 'invalid code' 79 + } 80 + else { 81 + accept.disabled = false 82 + accept.textContent = 'accept' 83 + } 84 + } 85 + 86 + var input = h('input.wide', {placeholder: 'invite code', oninput: parseInput, onchange: parseInput}) 87 + 88 + return h('div.invite-form.row', input, accept) 89 + } 90 + 91 + exports.progress_bar = function () { 92 + var liquid = h('div.hyperprogress__liquid', '.') 93 + var bar = h('div.hyperprogress__bar', liquid) 94 + liquid.style.width = '0%' 95 + 96 + pull( 97 + api.sbot_progress(), 98 + pull.drain(function (e) { 99 + liquid.style.width = Math.round((e.progress/e.total)*100)+'%' 100 + }) 101 + ) 102 + 103 + return bar 104 + } 105 + 106 + //show the first 5 followers, and how they join you to the network. 107 + //so this will show if a local peer follows you. 108 + 109 + //when you join the network, I want this to show as people follow you. 110 + //that could be when a pub accepts the invite, or when a local peer accepts. 111 + 112 + exports.setup_joined_network = function (id) { 113 + var followers = h('div.column') 114 + var label = h('label', 'not connected to a network') 115 + var joined = h('div.setup__joined', label, followers) 116 + 117 + pull( 118 + api.sbot_query({query: followers_query(id), limit: 5, live: true, sync: false}), 119 + pull.drain(function (follower) { 120 + if(follower.sync) return 121 + label.textContent = 'connected to network via...' 122 + followers.appendChild( 123 + api.avatar(follower.value.author, 'thumbnail') 124 + ) 125 + }) 126 + ) 127 + 128 + return joined 129 + } 130 + 131 + exports.screen_view = function (path) { 132 + 133 + if(path !== '/setup') return 134 + 135 + var id = require('../keys').id 136 + 137 + //set up an avatar 138 + 139 + 140 + var status = h('span') 141 + var invite = h('input', {placeholder: 'invite code'}) 142 + return h('div.scroller', h('div.scroller__wrapper', 143 + h('h1', 'welcome to patchbay!'), 144 + h('div', 145 + 'please choose avatar image and name', 146 + api.avatar_edit(id) 147 + ), 148 + h('h2', 'join network'), 149 + invite_form(), 150 + //show avatars of anyone on the same local network. 151 + //show realtime changes in your followers, especially for local. 152 + 153 + exports.progress_bar(), 154 + exports.setup_joined_network(require('../keys').id) 155 + )) 156 + } 157 + 158 + return exports 159 + 160 + }
+72
patchbay/modules_basic/suggest-mentions.js
··· 1 + var pull = require('pull-stream') 2 + function isImage (filename) { 3 + return /\.(gif|jpg|png|svg)$/i.test(filename) 4 + } 5 + 6 + //var sbot_links2 = require('../plugs').first(exports.sbot_links2 = []) 7 + //var blob_url = require('../plugs').first(exports.blob_url = []) 8 + //var signified = require('../plugs').first(exports.signified = []) 9 + //var builtin_tabs = require('../plugs').map(exports.builtin_tabs = []) 10 + 11 + exports.needs = { 12 + sbot_links2: 'first', 13 + blob_url: 'first', 14 + signified: 'first', 15 + builtin_tabs: 'map' 16 + } 17 + 18 + exports.gives = { 19 + suggest_mentions: true, 20 + suggest_search: true 21 + } 22 + 23 + exports.create = function (api) { 24 + 25 + return { 26 + suggest_mentions: function (word) { 27 + return function (cb) { 28 + if(!/^[%&@]\w/.test(word)) return cb() 29 + 30 + api.signified(word, function (err, names) { 31 + if(err) cb(err) 32 + else cb(null, names.map(function (e) { 33 + return { 34 + title: e.name + ': ' + e.id.substring(0,10)+' ('+e.rank+')', 35 + value: '['+e.name+']('+e.id+')', 36 + rank: e.rank, 37 + //TODO: avatar images... 38 + } 39 + })) 40 + }) 41 + } 42 + }, 43 + 44 + suggest_search: function (query) { 45 + return function (cb) { 46 + if(/^[@%]\w/.test(query)) { 47 + api.signified(query, function (_, names) { 48 + cb(null, names.map(function (e) { 49 + return { 50 + title: e.name + ':'+e.id.substring(0, 10), 51 + value: e.id, 52 + subtitle: e.rank, 53 + rank: e.rank 54 + } 55 + })) 56 + }) 57 + 58 + } else if(/^\//.test(query)) { 59 + var tabs = [].concat.apply([], api.builtin_tabs()) 60 + cb(null, tabs.filter(function (name) { 61 + return name.substr(0, query.length) === query 62 + }).map(function (name) { 63 + return { 64 + title: name, 65 + value: name, 66 + } 67 + })) 68 + } else cb() 69 + } 70 + } 71 + } 72 + }
+138
patchbay/modules_basic/thread.js
··· 1 + var pull = require('pull-stream') 2 + var Cat = require('pull-cat') 3 + var sort = require('ssb-sort') 4 + var ref = require('ssb-ref') 5 + var h = require('hyperscript') 6 + var u = require('../util') 7 + var Scroller = require('pull-scroll') 8 + var self_id = require('../keys').id 9 + 10 + function once (cont) { 11 + var ended = false 12 + return function (abort, cb) { 13 + if(abort) return cb(abort) 14 + else if (ended) return cb(ended) 15 + else 16 + cont(function (err, data) { 17 + if(err) return cb(ended = err) 18 + ended = true 19 + cb(null, data) 20 + }) 21 + } 22 + } 23 + 24 + //var plugs = require('../plugs') 25 + // 26 + //var message_render = plugs.first(exports.message_render = []) 27 + //var message_name = plugs.first(exports.message_name = []) 28 + //var message_compose = plugs.first(exports.message_compose = []) 29 + //var message_unbox = plugs.first(exports.message_unbox = []) 30 + // 31 + //var sbot_get = plugs.first(exports.sbot_get = []) 32 + //var sbot_links = plugs.first(exports.sbot_links = []) 33 + 34 + exports.needs = { 35 + message_render: 'first', 36 + message_name: 'first', 37 + message_compose: 'first', 38 + message_unbox: 'first', 39 + sbot_get: 'first', 40 + sbot_links: 'first' 41 + } 42 + 43 + exports.gives = 'screen_view' 44 + 45 + 46 + exports.create = function (api) { 47 + 48 + function getThread (root, cb) { 49 + //in this case, it's inconvienent that panel only takes 50 + //a stream. maybe it would be better to accept an array? 51 + 52 + api.sbot_get(root, function (err, value) { 53 + if (err) return cb(err) 54 + var msg = {key: root, value: value} 55 + // if(value.content.root) return getThread(value.content.root, cb) 56 + 57 + pull( 58 + api.sbot_links({rel: 'root', dest: root, values: true, keys: true}), 59 + pull.collect(function (err, ary) { 60 + if(err) return cb(err) 61 + ary.unshift(msg) 62 + cb(null, ary) 63 + }) 64 + ) 65 + }) 66 + 67 + } 68 + 69 + return function (id) { 70 + if(ref.isMsg(id)) { 71 + var meta = { 72 + type: 'post', 73 + root: id, 74 + branch: id //mutated when thread is loaded. 75 + } 76 + 77 + var content = h('div.column.scroller__content') 78 + var div = h('div.column.scroller', 79 + {style: {'overflow-y': 'auto'}}, 80 + h('div.scroller__wrapper', 81 + content, 82 + api.message_compose(meta, {shrink: false, placeholder: 'Write a reply'}) 83 + ) 84 + ) 85 + 86 + api.message_name(id, function (err, name) { 87 + div.title = name 88 + }) 89 + 90 + pull( 91 + api.sbot_links({ 92 + rel: 'root', dest: id, keys: true, old: false 93 + }), 94 + pull.drain(function (msg) { 95 + loadThread() //redraw thread 96 + }, function () {} ) 97 + ) 98 + 99 + 100 + function loadThread () { 101 + getThread(id, function (err, thread) { 102 + //would probably be better keep an id for each message element 103 + //(i.e. message key) and then update it if necessary. 104 + //also, it may have moved (say, if you received a missing message) 105 + content.innerHTML = '' 106 + if(err) return content.appendChild(h('pre', err.stack)) 107 + 108 + //decrypt 109 + thread = thread.map(function (msg) { 110 + return 'string' === typeof msg.value.content ? api.message_unbox(msg) : msg 111 + }) 112 + 113 + if(err) return content.appendChild(h('pre', err.stack)) 114 + sort(thread).map(api.message_render).filter(Boolean).forEach(function (el) { 115 + content.appendChild(el) 116 + }) 117 + 118 + var branches = sort.heads(thread) 119 + meta.branch = branches.length > 1 ? branches : branches[0] 120 + meta.root = thread[0].value.content.root || thread[0].key 121 + meta.channel = thread[0].value.content.channel 122 + 123 + var recps = thread[0].value.content.recps 124 + var private = thread[0].value.private 125 + if(private) { 126 + if(recps) 127 + meta.recps = recps 128 + else 129 + meta.recps = [thread[0].value.author, self_id] 130 + } 131 + }) 132 + } 133 + 134 + loadThread() 135 + return div 136 + } 137 + } 138 + }
+28
patchbay/modules_basic/timestamp.js
··· 1 + var h = require('hyperscript') 2 + var human = require('human-time') 3 + 4 + exports.needs = {} 5 + 6 + exports.gives = 'message_meta' 7 + 8 + exports.create = function () { 9 + 10 + function updateTimestampEl(el) { 11 + el.firstChild.nodeValue = human(new Date(el.timestamp)) 12 + return el 13 + } 14 + 15 + setInterval(function () { 16 + var els = [].slice.call(document.querySelectorAll('.timestamp')) 17 + els.forEach(updateTimestampEl) 18 + }, 60e3) 19 + 20 + return function (msg) { 21 + return updateTimestampEl(h('a.enter.timestamp', { 22 + href: '#'+msg.key, 23 + timestamp: msg.value.timestamp, 24 + title: new Date(msg.value.timestamp) 25 + }, '')) 26 + } 27 + 28 + }
+10
patchbay/modules_core/_screen_view.js
··· 1 + 2 + //this is just an UGLY HACK, because depject does not 3 + //support recursion... 4 + 5 + //used by tabs and split views 6 + 7 + var sv = require('../plugs').first(exports.screen_view = []) 8 + exports._screen_view = function (value) { 9 + return sv(value) 10 + }
+42
patchbay/modules_core/app.js
··· 1 + var plugs = require('../plugs') 2 + var h = require('hyperscript') 3 + 4 + module.exports = { 5 + needs: {screen_view: 'first'}, 6 + gives: 'app', 7 + create: function (api) { 8 + return function () { 9 + document.head.appendChild(h('style', require('../style.css.json'))) 10 + 11 + window.addEventListener('error', window.onError = function (e) { 12 + document.body.appendChild(h('div.error', 13 + h('h1', e.message), 14 + h('big', h('code', e.filename + ':' + e.lineno)), 15 + h('pre', e.error ? (e.error.stack || e.error.toString()) : e.toString()))) 16 + }) 17 + 18 + function hash() { 19 + return window.location.hash.substring(1) 20 + } 21 + 22 + console.log(hash() || 'tabs') 23 + var view = api.screen_view(hash() || 'tabs') 24 + 25 + var screen = h('div.screen.column', view) 26 + 27 + window.onhashchange = function (ev) { 28 + var _view = view 29 + view = api.screen_view(hash() || 'tabs') 30 + 31 + if(_view) screen.replaceChild(view, _view) 32 + else document.body.appendChild(view) 33 + } 34 + 35 + document.body.appendChild(screen) 36 + 37 + return screen 38 + } 39 + } 40 + } 41 + 42 +
+13
patchbay/modules_core/blob-url.js
··· 1 + var config = require('../config') 2 + 3 + module.exports = { 4 + gives: 'blob_url', 5 + create: function () { 6 + return function (link) { 7 + if('string' == typeof link.link) 8 + link = link.link 9 + return config().blobsUrl + '/'+link 10 + } 11 + } 12 + } 13 +
+11
patchbay/modules_core/blobs-url.js
··· 1 + var config = require('../config') 2 + 3 + module.exports = { 4 + gives: 'blobs_url', 5 + create: function () { 6 + return function () { 7 + return config().blobsUrl 8 + } 9 + } 10 + } 11 +
+60
patchbay/modules_core/crypto.js
··· 1 + var ref = require('ssb-ref') 2 + var keys = require('../keys') 3 + var ssbKeys = require('ssb-keys') 4 + 5 + function unbox_value(msg) { 6 + var plaintext = ssbKeys.unbox(msg.content, keys) 7 + if(!plaintext) return null 8 + return { 9 + previous: msg.previous, 10 + author: msg.author, 11 + sequence: msg.sequence, 12 + timestamp: msg.timestamp, 13 + hash: msg.hash, 14 + content: plaintext, 15 + private: true 16 + } 17 + } 18 + 19 + 20 + module.exports = { 21 + 22 + needs: {sbot_publish: 'first'}, 23 + gives: { 24 + message_unbox: true, message_box: true, publish: true 25 + }, 26 + create: function (api) { 27 + 28 + var exports = {} 29 + exports.message_unbox = function (msg) { 30 + if(msg.value) { 31 + var value = unbox_value(msg.value) 32 + if(value) 33 + return { 34 + key: msg.key, value: value, timestamp: msg.timestamp 35 + } 36 + } 37 + else 38 + return unbox_value(msg) 39 + } 40 + 41 + exports.message_box = function (content) { 42 + return ssbKeys.box(content, content.recps.map(function (e) { 43 + return ref.isFeed(e) ? e : e.link 44 + })) 45 + } 46 + 47 + exports.publish = function (content, cb) { 48 + if(content.recps) 49 + content = exports.message_box(content) 50 + api.sbot_publish(content, function (err, msg) { 51 + if(err) throw err 52 + console.log('PUBLISHED', msg) 53 + if(cb) cb(err, msg) 54 + }) 55 + } 56 + 57 + return exports 58 + } 59 + } 60 +
+38
patchbay/modules_core/file-input.js
··· 1 + var u = require('../util') 2 + var h = require('hyperscript') 3 + var pull = require('pull-stream') 4 + var mime = require('simple-mime')('application/octect-stream') 5 + var split = require('split-buffer') 6 + 7 + module.exports = { 8 + needs: {sbot_blobs_add: 'first'}, 9 + gives: 'file_input', 10 + create: function (api) { 11 + return function FileInput(onAdded) { 12 + return h('input', { type: 'file', 13 + onchange: function (ev) { 14 + var file = ev.target.files[0] 15 + if (!file) return 16 + var reader = new FileReader() 17 + reader.onload = function () { 18 + pull( 19 + pull.values(split(new Buffer(reader.result), 64*1024)), 20 + api.sbot_blobs_add(function (err, blob) { 21 + if(err) return console.error(err) 22 + onAdded({ 23 + link: blob, 24 + name: file.name, 25 + size: reader.result.length || reader.result.byteLength, 26 + type: mime(file.name) 27 + }) 28 + 29 + }) 30 + ) 31 + } 32 + reader.readAsArrayBuffer(file) 33 + } 34 + }) 35 + } 36 + } 37 + } 38 +
+12
patchbay/modules_core/index.js
··· 1 + module.exports = { 2 + // "_screen_view.js": require('./_screen_view.js'), 3 + "app.js": require('./app.js'), 4 + "blob-url.js": require('./blob-url.js'), 5 + "blobs-url.js": require('./blobs-url.js'), 6 + "crypto.js": require('./crypto.js'), 7 + "file-input.js": require('./file-input.js'), 8 + "menu.js": require('./menu.js'), 9 + "message-confirm.js": require('./message-confirm.js'), 10 + "tabs.js": require('./tabs.js'), 11 + "sbot.js": require('./sbot.js') 12 + }
+45
patchbay/modules_core/menu.js
··· 1 + var plugs = require('../plugs') 2 + var h = require('hyperscript') 3 + 4 + module.exports = { 5 + needs: {menu_items: 'map'}, 6 + gives: {connection_status: true, menu: true}, 7 + create: function (api) { 8 + 9 + var menu_items = api.menu_items //plugs.map(exports.menu_items = []) 10 + 11 + var status = h('div.status.error') //start off disconnected 12 + var list = h('div.menu.column', {style: 'display: none;'}) 13 + 14 + var menu = h('div.column', status, list , { 15 + onmouseover: function (e) { 16 + list.style.display = 'flex' 17 + }, onmouseout: function () { 18 + list.style.display = 'none' 19 + } 20 + }) 21 + 22 + setTimeout(function () { 23 + menu_items().forEach(function (el) { 24 + if(el) 25 + list.appendChild(el) 26 + }) 27 + }, 0) 28 + 29 + return { 30 + connection_status: function (err) { 31 + if(err) status.classList.add('error') 32 + else status.classList.remove('error') 33 + }, 34 + menu: function () { 35 + return menu 36 + } 37 + } 38 + } 39 + } 40 + 41 + 42 + 43 + 44 + 45 +
+69
patchbay/modules_core/message-confirm.js
··· 1 + var lightbox = require('hyperlightbox') 2 + var h = require('hyperscript') 3 + var u = require('../util') 4 + var self_id = require('../keys').id 5 + //publish or add 6 + 7 + var plugs = require('../plugs') 8 + 9 + exports.needs = { 10 + publish: 'first', message_content: 'first', avatar: 'first', 11 + message_meta: 'map' 12 + } 13 + 14 + exports.gives = 'message_confirm' 15 + 16 + //var publish = plugs.first(exports.sbot_publish = []) 17 + //var message_content = plugs.first(exports.message_content = []) 18 + //var avatar = plugs.first(exports.avatar = []) 19 + //var message_meta = plugs.map(exports.message_meta = []) 20 + // 21 + exports.create = function (api) { 22 + return function (content, cb) { 23 + 24 + cb = cb || function () {} 25 + 26 + var lb = lightbox() 27 + document.body.appendChild(lb) 28 + 29 + var msg = { 30 + key: "DRAFT", 31 + value: { 32 + author: self_id, 33 + previous: null, 34 + sequence: null, 35 + timestamp: Date.now(), 36 + content: content 37 + } 38 + } 39 + 40 + var okay = h('button', 'okay', {onclick: function () { 41 + lb.remove() 42 + api.publish(content, cb) 43 + }}) 44 + 45 + var cancel = h('button', 'Cancel', {onclick: function () { 46 + lb.remove() 47 + cb(null) 48 + }}) 49 + 50 + okay.addEventListener('keydown', function (ev) { 51 + if(ev.keyCode === 27) cancel.click() //escape 52 + }) 53 + 54 + lb.show(h('div.column.message-confirm', 55 + h('div.message', 56 + h('div.title.row', 57 + h('div.avatar', api.avatar(msg.value.author, 'thumbnail')), 58 + h('div.message_meta.row', api.message_meta(msg)) 59 + ), 60 + h('div.message_content', api.message_content(msg) 61 + || h('pre', JSON.stringify(msg, null, 2))) 62 + ), 63 + h('div.row.message-confirm__controls', okay, cancel) 64 + )) 65 + 66 + okay.focus() 67 + } 68 + } 69 +
+190
patchbay/modules_core/sbot.js
··· 1 + var pull = require('pull-stream') 2 + var ssbKeys = require('ssb-keys') 3 + var ref = require('ssb-ref') 4 + var Reconnect = require('pull-reconnect') 5 + var path = require('path') 6 + var config = require('ssb-config/inject')(process.env.ssb_appname) 7 + config.keys = ssbKeys.loadOrCreateSync(path.join(config.path, 'secret')) 8 + 9 + function Hash (onHash) { 10 + var buffers = [] 11 + return pull.through(function (data) { 12 + buffers.push('string' === typeof data 13 + ? new Buffer(data, 'utf8') 14 + : data 15 + ) 16 + }, function (err) { 17 + if(err && !onHash) throw err 18 + var b = buffers.length > 1 ? Buffer.concat(buffers) : buffers[0] 19 + var h = '&'+ssbKeys.hash(b) 20 + onHash && onHash(err, h) 21 + }) 22 + } 23 + //uncomment this to use from browser... 24 + //also depends on having ssb-ws installed. 25 + //var createClient = require('ssb-lite') 26 + var createClient = require('ssb-client') 27 + 28 + var createConfig = require('ssb-config/inject') 29 + 30 + var createFeed = require('ssb-feed') 31 + var keys = require('../keys') 32 + var ssbKeys = require('ssb-keys') 33 + 34 + var cache = CACHE = {} 35 + 36 + module.exports = { 37 + needs: { 38 + connection_status: 'map' 39 + }, 40 + gives: { 41 + // connection_status: true, 42 + sbot_blobs_add: true, 43 + sbot_links: true, 44 + sbot_links2: true, 45 + sbot_query: true, 46 + sbot_get: true, 47 + sbot_log: true, 48 + sbot_user_feed: true, 49 + sbot_gossip_peers: true, 50 + sbot_gossip_connect: true, 51 + sbot_progress: true, 52 + sbot_publish: true, 53 + sbot_whoami: true 54 + }, 55 + 56 + //module.exports = { 57 + create: function (api) { 58 + 59 + var opts = createConfig() 60 + var sbot = null 61 + var connection_status = [] 62 + 63 + var rec = Reconnect(function (isConn) { 64 + function notify (value) { 65 + isConn(value); api.connection_status(value) //.forEach(function (fn) { fn(value) }) 66 + } 67 + 68 + createClient(keys, { 69 + manifest: require('../manifest.json'), 70 + remote: require('../config')().remote, 71 + caps: config.caps 72 + }, function (err, _sbot) { 73 + if(err) 74 + return notify(err) 75 + 76 + sbot = _sbot 77 + sbot.on('closed', function () { 78 + sbot = null 79 + notify(new Error('closed')) 80 + }) 81 + 82 + notify() 83 + }) 84 + }) 85 + 86 + var internal = { 87 + getLatest: rec.async(function (id, cb) { 88 + sbot.getLatest(id, cb) 89 + }), 90 + add: rec.async(function (msg, cb) { 91 + sbot.add(msg, cb) 92 + }) 93 + } 94 + 95 + var feed = createFeed(internal, keys, {remote: true}) 96 + 97 + return { 98 + connection_status: connection_status, 99 + sbot_blobs_add: rec.sink(function (cb) { 100 + return pull( 101 + Hash(function (err, id) { 102 + if(err) return cb(err) 103 + //completely UGLY hack to tell when the blob has been sucessfully written... 104 + var start = Date.now(), n = 5 105 + ;(function next () { 106 + setTimeout(function () { 107 + sbot.blobs.has(id, function (err, has) { 108 + if(has) return cb(null, id) 109 + if(n--) next() 110 + else cb(new Error('write failed')) 111 + }) 112 + }, Date.now() - start) 113 + })() 114 + }), 115 + sbot.blobs.add() 116 + ) 117 + }), 118 + sbot_links: rec.source(function (query) { 119 + return sbot.links(query) 120 + }), 121 + sbot_links2: rec.source(function (query) { 122 + return sbot.links2.read(query) 123 + }), 124 + sbot_query: rec.source(function (query) { 125 + return sbot.query.read(query) 126 + }), 127 + sbot_log: rec.source(function (opts) { 128 + return pull( 129 + sbot.createLogStream(opts), 130 + pull.through(function (e) { 131 + CACHE[e.key] = CACHE[e.key] || e.value 132 + }) 133 + ) 134 + }), 135 + sbot_user_feed: rec.source(function (opts) { 136 + return sbot.createUserStream(opts) 137 + }), 138 + sbot_get: rec.async(function (key, cb) { 139 + if('function' !== typeof cb) 140 + throw new Error('cb must be function') 141 + if(CACHE[key]) cb(null, CACHE[key]) 142 + else sbot.get(key, function (err, value) { 143 + if(err) return cb(err) 144 + cb(null, CACHE[key] = value) 145 + }) 146 + }), 147 + sbot_gossip_peers: rec.async(function (cb) { 148 + sbot.gossip.peers(cb) 149 + }), 150 + //liteclient won't have permissions for this 151 + sbot_gossip_connect: rec.async(function (opts, cb) { 152 + sbot.gossip.connect(opts, cb) 153 + }), 154 + sbot_progress: rec.source(function () { 155 + return sbot.replicate.changes() 156 + }), 157 + sbot_publish: rec.async(function (content, cb) { 158 + if(content.recps) 159 + content = ssbKeys.box(content, content.recps.map(function (e) { 160 + return ref.isFeed(e) ? e : e.link 161 + })) 162 + else if(content.mentions) 163 + content.mentions.forEach(function (mention) { 164 + if(ref.isBlob(mention.link)) { 165 + sbot.blobs.push(mention.link, function (err) { 166 + if(err) console.error(err) 167 + }) 168 + } 169 + }) 170 + 171 + feed.add(content, function (err, msg) { 172 + if(err) console.error(err) 173 + else if(!cb) console.log(msg) 174 + cb && cb(err, msg) 175 + }) 176 + }), 177 + sbot_whoami: rec.async(function (cb) { 178 + sbot.whoami(cb) 179 + }) 180 + } 181 + } 182 + } 183 + 184 + 185 + 186 + 187 + 188 + 189 + 190 +
+219
patchbay/modules_core/tabs.js
··· 1 + var Tabs = require('hypertabs') 2 + var h = require('hyperscript') 3 + var pull = require('pull-stream') 4 + var u = require('../util') 5 + var keyscroll = require('../keyscroll') 6 + var open = require('open-external') 7 + 8 + function ancestor (el) { 9 + if(!el) return 10 + if(el.tagName !== 'A') return ancestor(el.parentElement) 11 + return el 12 + } 13 + 14 + //var plugs = require('../plugs') 15 + //var screen_view = plugs.first(exports._screen_view = []) 16 + //var search_box = plugs.first(exports.search_box = []) 17 + //var menu = plugs.first(exports.menu = []) 18 + 19 + exports.needs = {screen_view: 'first', search_box: 'first', menu: 'first'} 20 + 21 + exports.gives = 'screen_view' 22 + 23 + exports.create = function (api) { 24 + return function (path) { 25 + if(path !== 'tabs') 26 + return 27 + 28 + function setSelected (indexes) { 29 + var ids = indexes.map(function (index) { 30 + return tabs.get(index).id 31 + }) 32 + if(search) 33 + if(ids.length > 1) 34 + search.value = 'split('+ids.join(',')+')' 35 + else 36 + search.value = ids[0] 37 + } 38 + 39 + var search 40 + var tabs = Tabs(setSelected) 41 + 42 + search = api.search_box(function (path, change) { 43 + 44 + if(tabs.has(path)) { 45 + tabs.select(path) 46 + return true 47 + } 48 + var el = api.screen_view(path) 49 + 50 + if(el) { 51 + if(!el.title) el.title = path 52 + el.scroll = keyscroll(el.querySelector('.scroller__content')) 53 + tabs.add(el, change) 54 + // localStorage.openTabs = JSON.stringify(tabs.tabs) 55 + return change 56 + } 57 + }) 58 + 59 + //reposition hypertabs menu to inside a container... 60 + tabs.insertBefore(h('div.header.row', 61 + h('div.header__tabs.row', tabs.firstChild), //tabs 62 + h('div.header__search.row.end', h('div', search), api.menu()) 63 + ), tabs.firstChild) 64 + // tabs.insertBefore(search, tabs.firstChild.nextSibling) 65 + 66 + var saved = [] 67 + // try { saved = JSON.parse(localStorage.openTabs) } 68 + // catch (_) { } 69 + 70 + if(!saved || saved.length < 3) 71 + saved = ['/public', '/private', '/notifications', '/data'] 72 + 73 + saved.forEach(function (path) { 74 + var el = api.screen_view(path) 75 + if(!el) return 76 + el.id = el.id || path 77 + if (!el) return 78 + el.scroll = keyscroll(el.querySelector('.scroller__content')) 79 + if(el) tabs.add(el, false, false) 80 + }) 81 + 82 + tabs.select(0) 83 + 84 + //handle link clicks 85 + window.onclick = function (ev) { 86 + var link = ancestor(ev.target) 87 + if(!link) return 88 + var path = link.hash.substring(1) 89 + 90 + ev.preventDefault() 91 + ev.stopPropagation() 92 + 93 + //let the application handle this link 94 + if (link.getAttribute('href') === '#') return 95 + 96 + //open external links. 97 + //this ought to be made into something more runcible 98 + if(open.isExternal(link.href)) return open(link.href) 99 + 100 + if(tabs.has(path)) 101 + return tabs.select(path, !ev.ctrlKey, !!ev.shiftKey) 102 + 103 + var el = api.screen_view(path) 104 + if(el) { 105 + el.id = el.id || path 106 + el.scroll = keyscroll(el.querySelector('.scroller__content')) 107 + tabs.add(el, !ev.ctrlKey, !!ev.shiftKey) 108 + // localStorage.openTabs = JSON.stringify(tabs.tabs) 109 + } 110 + 111 + return false 112 + } 113 + 114 + window.addEventListener('keydown', function (ev) { 115 + if (ev.target.nodeName === 'INPUT' || ev.target.nodeName === 'TEXTAREA') 116 + return 117 + switch(ev.keyCode) { 118 + 119 + // scroll through tabs 120 + case 72: // h 121 + return tabs.selectRelative(-1) 122 + case 76: // l 123 + return tabs.selectRelative(1) 124 + 125 + // scroll through messages 126 + case 74: // j 127 + return tabs.get(tabs.selected[0]).scroll(1) 128 + case 75: // k 129 + return tabs.get(tabs.selected[0]).scroll(-1) 130 + 131 + // close a tab 132 + case 88: // x 133 + if (tabs.selected) { 134 + var sel = tabs.selected 135 + var i = sel.reduce(function (a, b) { return Math.min(a, b) }) 136 + tabs.remove(sel) 137 + tabs.select(Math.max(i-1, 0)) 138 + } 139 + return 140 + 141 + // activate the search field 142 + case 191: // / 143 + if (ev.shiftKey) 144 + search.activate('?', ev) 145 + else 146 + search.activate('/', ev) 147 + return 148 + 149 + // navigate to a feed 150 + case 50: // 2 151 + if (ev.shiftKey) 152 + search.activate('@', ev) 153 + return 154 + 155 + // navigate to a channel 156 + case 51: // 3 157 + if (ev.shiftKey) 158 + search.activate('#', ev) 159 + return 160 + 161 + // navigate to a message 162 + case 53: // 5 163 + if (ev.shiftKey) 164 + search.activate('%', ev) 165 + return 166 + } 167 + }) 168 + 169 + // errors tab 170 + var errorsContent = h('div.column.scroller__content') 171 + var errors = h('div.column.scroller', { 172 + id: 'errors', 173 + style: {'overflow':'auto'} 174 + }, h('div.scroller__wrapper', 175 + errorsContent 176 + ) 177 + ) 178 + 179 + // remove loader error handler 180 + if (window.onError) { 181 + window.removeEventListener('error', window.onError) 182 + delete window.onError 183 + } 184 + 185 + // put errors in a tab 186 + window.addEventListener('error', function (ev) { 187 + var err = ev.error || ev 188 + if(!tabs.has('errors')) 189 + tabs.add(errors, false) 190 + var el = h('div.message', 191 + h('strong', err.message), 192 + h('pre', err.stack)) 193 + if (errorsContent.firstChild) 194 + errorsContent.insertBefore(el, errorsContent.firstChild) 195 + else 196 + errorsContent.appendChild(el) 197 + }) 198 + 199 + if (process.versions.electron) { 200 + window.addEventListener('contextmenu', function (ev) { 201 + ev.preventDefault() 202 + var remote = require('electron').remote 203 + var Menu = remote.Menu 204 + var MenuItem = remote.MenuItem 205 + var menu = new Menu() 206 + menu.append(new MenuItem({ 207 + label: 'Inspect Element', 208 + click: function () { 209 + remote.getCurrentWindow().inspectElement(ev.x, ev.y) 210 + } 211 + })) 212 + menu.popup(remote.getCurrentWindow()) 213 + }) 214 + } 215 + 216 + return tabs 217 + } 218 + 219 + }
+11
patchbay/modules_embedded/index.js
··· 1 + module.exports = { 2 + "_screen_view.js": require('../modules_core/_screen_view.js'), 3 + "app.js": require('../modules_core/app.js'), 4 + "blob-url.js": require('../modules_core/blob-url.js'), 5 + "crypto.js": require('../modules_core/crypto.js'), 6 + "file-input.js": require('../modules_core/file-input.js'), 7 + "menu.js": require('../modules_core/menu.js'), 8 + "message-confirm.js": require('../modules_core/message-confirm.js'), 9 + "tabs.js": require('../modules_core/tabs.js'), 10 + "sbot.js": require('./sbot.js') 11 + }
+3
patchbay/modules_embedded/sbot.js
··· 1 + module.exports = require('../modules_core/sbot') 2 + 3 +
+62
patchbay/modules_extra/audio-mp3.js
··· 1 + var markdown = require('ssb-markdown'); 2 + var h = require('hyperscript'); 3 + var u = require('../util'); 4 + var ref = require('ssb-ref'); 5 + 6 + //render a message 7 + 8 + //var plugs = require('../plugs'); 9 + //var message_link = plugs.first(exports.message_link = []); 10 + //var message_confirm = plugs.first(exports.message_confirm = []); 11 + //var sbot_links = plugs.first(exports.sbot_links = []); 12 + //var blob_url = plugs.first(exports.blob_url = []); 13 + // 14 + exports.needs = { 15 + // message_link: 'first', 16 + // message_confirm: 'first', 17 + // sbot_links: 'first', 18 + blobs_url: 'first' 19 + } 20 + 21 + exports.gives = 'message_content' 22 + 23 + exports.create = function (api) { 24 + 25 + return function(msg) { 26 + if (msg.value.content.type !== 'audio-mp3') 27 + return; 28 + 29 + var v = msg.value.content; 30 + return h('div', 31 + h('h2', "(" + v.Track + ") " + v.Title), 32 + // h('img', { "src" : api.blob_url(v.cover) }), 33 + h('audio', { 34 + "controls" : true, 35 + "src" : api.blob_url(v.link) 36 + })) 37 + // h('dl', 38 + // Object.keys(v).map(function(k) { 39 + // return [ 40 + // h("dt", k), 41 + // h("dd", v[k]), 42 + // ] 43 + // }))) 44 + 45 + // "Album": "the fall of", 46 + // "Crc32": "038becab", 47 + // "Creator": "bleupulp", 48 + // "Format": "VBR MP3", 49 + // "Height": "0", 50 + // "Length": "375.23", 51 + // "Md5": "2c517c8e813da5f940c8c7e77d4b7f3f", 52 + // "Mtime": "1399498698", 53 + // "Name": "2_bleupulp_-_clouds.mp3", 54 + // "Sha1": "9f6a96a3d5571ed1ec2a7da38ffebdcd5f181482", 55 + // "Size": "15009000", 56 + 57 + // "Title": "clouds", 58 + // "Track": "2", 59 + // "Width": "0", 60 + } 61 + } 62 +
+117
patchbay/modules_extra/channel.js
··· 1 + var h = require('hyperscript') 2 + var u = require('../util') 3 + var pull = require('pull-stream') 4 + var Scroller = require('pull-scroll') 5 + var mfr = require('map-filter-reduce') 6 + 7 + exports.needs = { 8 + message_render: 'first', 9 + message_compose: 'first', 10 + sbot_log: 'first', 11 + sbot_query: 'first', 12 + } 13 + 14 + exports.gives = { 15 + message_meta: true, screen_view: true, 16 + connection_status: true, suggest_search: true 17 + } 18 + 19 + exports.create = function (api) { 20 + 21 + var channels 22 + 23 + var filter = {$filter: {value: {content: {channel: {$gt: ''}}}}} 24 + var map = {$map: {'name': ['value', 'content', 'channel']}} 25 + var reduce = {$reduce: { 26 + name: 'name', 27 + rank: {$count: true} 28 + }} 29 + 30 + return { 31 + message_meta: function (msg) { 32 + var chan = msg.value.content.channel 33 + if (chan) 34 + return h('a', {href: '##'+chan}, '#'+chan) 35 + }, 36 + screen_view: function (path) { 37 + if(path[0] === '#') { 38 + var channel = path.substr(1) 39 + 40 + var content = h('div.column.scroller__content') 41 + var div = h('div.column.scroller', 42 + {style: {'overflow':'auto'}}, 43 + h('div.scroller__wrapper', 44 + api.message_compose({type: 'post', channel: channel}), 45 + content 46 + ) 47 + ) 48 + 49 + function matchesChannel(msg) { 50 + if (msg.sync) console.error('SYNC', msg) 51 + var c = msg && msg.value && msg.value.content 52 + return c && c.channel === channel 53 + } 54 + 55 + pull( 56 + api.sbot_log({old: false}), 57 + pull.filter(matchesChannel), 58 + Scroller(div, content, api.message_render, true, false) 59 + ) 60 + 61 + pull( 62 + api.sbot_query({reverse: true, query: [ 63 + {$filter: {value: {content: {channel: channel}}}} 64 + ]}), 65 + Scroller(div, content, api.message_render, false, false) 66 + ) 67 + 68 + return div 69 + } 70 + }, 71 + 72 + connection_status: function (err) { 73 + if(err) return 74 + 75 + channels = [] 76 + 77 + pull( 78 + api.sbot_query({query: [filter, map, reduce]}), 79 + pull.collect(function (err, chans) { 80 + if (err) return console.error(err) 81 + channels = chans.concat(channels) 82 + }) 83 + ) 84 + 85 + pull( 86 + api.sbot_log({old: false}), 87 + mfr.filter(filter), 88 + mfr.map(map), 89 + pull.drain(function (chan) { 90 + var c = channels.find(function (e) { 91 + return e.name === chan.name 92 + }) 93 + if (c) c.rank++ 94 + else channels.push(chan) 95 + }) 96 + ) 97 + }, 98 + 99 + suggest_search: function (query) { 100 + return function (cb) { 101 + if(!/^#\w/.test(query)) return cb() 102 + cb(null, channels.filter(function (chan) { 103 + return ('#'+chan.name).substring(0, query.length) === query 104 + }) 105 + .map(function (chan) { 106 + var name = '#'+chan.name 107 + return { 108 + title: name, 109 + value: name, 110 + subtitle: chan.rank 111 + } 112 + })) 113 + } 114 + } 115 + } 116 + } 117 +
+33
patchbay/modules_extra/dns.js
··· 1 + var h = require('hyperscript') 2 + 3 + function array(obj) { 4 + return !obj ? [] : Array.isArray(obj) ? obj : [obj] 5 + } 6 + 7 + function idLink(id) { 8 + return h('a', {href: '#'+id}, id.substring(0, 10)+'…') 9 + } 10 + 11 + exports.gives = 'message_content' 12 + 13 + exports.create = function () { 14 + return function (msg, sbot) { 15 + var c = msg.value.content 16 + 17 + if(c.type === 'ssb-dns') { 18 + var record = c.record || {} 19 + return h('div', 20 + h('p', 21 + h('ins', {title: 'name'}, record.name), ' ', 22 + h('em', {title: 'ttl'}, record.ttl), ' ', 23 + h('span', {title: 'class'}, record.class), ' ', 24 + h('span', {title: 'type'}, record.type), 25 + h('pre', {title: 'data'}, 26 + JSON.stringify(record.data || record.value, null, 2)), 27 + !c.branch ? null : h('div', h('span', 28 + 'replaces: ', array(c.branch).map(idLink))) 29 + )) 30 + } 31 + } 32 + 33 + }
+22
patchbay/modules_extra/emoji.js
··· 1 + var emojis = require('emoji-named-characters') 2 + var emojiNames = Object.keys(emojis) 3 + 4 + //var plugs = require('../plugs') 5 + //var blob_url = plugs.first(exports.blob_url = []) 6 + // 7 + 8 + exports.needs = { blob_url: 'first' } 9 + exports.gives = { emoji_names: true, emoji_url: true } 10 + 11 + exports.create = function (api) { 12 + return { 13 + emoji_names: function () { 14 + return emojiNames 15 + }, 16 + emoji_url: function (emoji) { 17 + return emoji in emojis && 18 + api.blob_url(emoji).replace(/\/blobs\/get/, '/img/emoji') + '.png' 19 + } 20 + } 21 + } 22 +
+54
patchbay/modules_extra/git-ssb.js
··· 1 + var h = require('hyperscript') 2 + var u = require('../util') 3 + var pull = require('pull-stream') 4 + var Scroller = require('pull-scroll') 5 + 6 + //var plugs = require('../plugs') 7 + //var message_render = plugs.first(exports.message_render = []) 8 + //var message_compose = plugs.first(exports.message_compose = []) 9 + //var sbot_log = plugs.first(exports.sbot_log = []) 10 + 11 + exports.needs = { 12 + message_render: 'first', 13 + message_compose: 'first', 14 + sbot_log: 'first' 15 + } 16 + 17 + exports.gives = { 18 + menu_items: true, screen_view: true 19 + } 20 + 21 + exports.create = function (api) { 22 + return { 23 + menu_items: function () { 24 + return h('a', {href: '#/git-ssb'}, '/git-ssb') 25 + }, 26 + 27 + screen_view: function (path, sbot) { 28 + if(path === '/git-ssb') { 29 + 30 + var content = h('div.column.scroller__content') 31 + var div = h('div.column.scroller', 32 + {style: {'overflow':'auto'}}, 33 + h('div.scroller__wrapper', content) 34 + ) 35 + 36 + pull( 37 + u.next(api.sbot_log, {old: false, limit: 100}), 38 + Scroller(div, content, api.message_render, true, false) 39 + ) 40 + 41 + pull( 42 + u.next(api.sbot_log, {reverse: true, limit: 100, live: false}), 43 + pull.filter(function(msg) { return msg.value.content.type }), 44 + pull.filter(function(msg) { 45 + return msg.value.content.type.match(/^git/) 46 + }), 47 + Scroller(div, content, api.message_render, false, false) 48 + ) 49 + 50 + return div 51 + } 52 + } 53 + } 54 + }
+519
patchbay/modules_extra/git.js
··· 1 + 'use strict' 2 + var h = require('hyperscript') 3 + var pull = require('pull-stream') 4 + var paramap = require('pull-paramap') 5 + var cat = require('pull-cat') 6 + var human = require('human-time') 7 + var combobox = require('hypercombo') 8 + 9 + var getAvatar = require('ssb-avatar') 10 + var KVGraph = require('kvgraph') 11 + var mergeRepo = require('ssb-git/merge') 12 + 13 + //var plugs = require('../plugs') 14 + //var message_link = plugs.first(exports.message_link = []) 15 + //var message_confirm = plugs.first(exports.message_confirm = []) 16 + //var message_compose = plugs.first(exports.message_compose = []) 17 + //var sbot_links = plugs.first(exports.sbot_links = []) 18 + //var sbot_links2 = plugs.first(exports.sbot_links2 = []) 19 + //var sbot_get = plugs.first(exports.sbot_get = []) 20 + //var avatar_name = plugs.first(exports.avatar_name = []) 21 + //var markdown = plugs.first(exports.markdown = []) 22 + 23 + exports.needs = { 24 + message_link: 'first', 25 + message_confirm: 'first', 26 + message_compose: 'first', 27 + sbot_links: 'first', 28 + sbot_links2: 'first', 29 + sbot_get: 'first', 30 + avatar_name: 'first', 31 + markdown: 'first' 32 + } 33 + 34 + exports.gives = { 35 + message_action: true, 36 + message_meta: true, 37 + message_content: true 38 + } 39 + 40 + 41 + var self_id = require('../keys').id 42 + 43 + function shortRefName(ref) { 44 + return ref.replace(/^refs\/(heads|tags)\//, '') 45 + } 46 + 47 + exports.create = function (api) { 48 + 49 + function getRefs(msg) { 50 + var updates = new KVGraph('key') 51 + var _cb, _refs 52 + pull( 53 + api.sbot_links({ 54 + reverse: true, 55 + // source: msg.value.author, 56 + dest: msg.key, 57 + rel: 'repo', 58 + values: true 59 + }), 60 + pull.drain(function (link) { 61 + if (link.value.content.type === 'git-update') { 62 + updates.add(link) 63 + } 64 + }, function (err) { 65 + var refs = updates.reduceRight(mergeRepo).refs 66 + var cb = _cb 67 + if (cb) _cb = null, cb(err, refs) 68 + else _refs = refs 69 + }) 70 + ) 71 + 72 + return pull( 73 + function fn(end, cb) { 74 + if (end || fn.ended) cb(true) 75 + fn.ended = true 76 + if (_refs) cb(_refs) 77 + else _cb = cb 78 + }, 79 + pull.flatten() 80 + ) 81 + } 82 + 83 + function getForks(id) { 84 + return pull( 85 + api.sbot_links({ 86 + reverse: true, 87 + dest: id, 88 + rel: 'upstream' 89 + }), 90 + pull.map(function (link) { 91 + return { 92 + id: link.key, 93 + author: link.source 94 + } 95 + }) 96 + ) 97 + } 98 + 99 + function repoText(id) { 100 + var text = document.createTextNode(id.substr(0, 10) + '…') 101 + getAvatar({links: api.sbot_links, get: api.sbot_get}, self_id, id, 102 + function (err, avatar) { 103 + if(err) return console.error(err) 104 + if (avatar.name[0] !== '%') avatar.name = '%' + avatar.name 105 + text.nodeValue = avatar.name 106 + }) 107 + return text 108 + } 109 + 110 + function repoLink(id) { 111 + return h('a', {href: '#'+id}, repoText(id)) 112 + } 113 + 114 + function repoName(id) { 115 + return h('ins', repoText(id)) 116 + } 117 + 118 + function getIssueState(id, cb) { 119 + pull( 120 + api.sbot_links({dest: id, rel: 'issues', values: true, reverse: true}), 121 + pull.map(function (msg) { 122 + return msg.value.content.issues 123 + }), 124 + pull.flatten(), 125 + pull.filter(function (issue) { 126 + return issue.link === id 127 + }), 128 + pull.map(function (issue) { 129 + return issue.merged ? 'merged' : issue.open ? 'open' : 'closed' 130 + }), 131 + pull.take(1), 132 + pull.collect(function (err, updates) { 133 + cb(err, updates && updates[0] || 'open') 134 + }) 135 + ) 136 + } 137 + 138 + //todo: 139 + function messageTimestampLink(msg) { 140 + var date = new Date(msg.value.timestamp) 141 + return h('a.timestamp', { 142 + timestamp: msg.value.timestamp, 143 + title: date, 144 + href: '#'+msg.key 145 + }, human(date)) 146 + } 147 + 148 + // a thead+tbody where the thead only is added when the first row is added 149 + function tableRows(headerRow) { 150 + var thead = h('thead'), tbody = h('tbody') 151 + var first = true 152 + var t = [thead, tbody] 153 + t.append = function (row) { 154 + if (first) { 155 + first = false 156 + thead.appendChild(headerRow) 157 + } 158 + tbody.appendChild(row) 159 + } 160 + return t 161 + } 162 + 163 + function renderIssueEdit(c) { 164 + var id = c.issue || c.link 165 + return [ 166 + c.title ? h('p', 'renamed issue ', api.message_link(id), 167 + ' to ', h('ins', c.title)) : null, 168 + c.open === false ? h('p', 'closed issue ', api.message_link(id)) : null, 169 + c.open === true ? h('p', 'reopened issue ', api.message_link(id)) : null] 170 + } 171 + 172 + function findMessageContent(el) { 173 + for(; el; el = el.parentNode) { 174 + if(el.classList.contains('message')) { 175 + return el.querySelector('.message_content') 176 + } 177 + } 178 + } 179 + 180 + function issueForm(msg, contentEl) { 181 + var form = h('form', 182 + h('strong', 'New Issue:'), 183 + api.message_compose( 184 + {type: 'issue', project: msg.key}, 185 + function (value) { return value }, 186 + function (err, issue) { 187 + if(err) return alert(err) 188 + if(!issue) return 189 + var title = issue.value.content.text 190 + if(title.length > 70) title = title.substr(0, 70) + '…' 191 + form.appendChild(h('div', 192 + h('a', {href: '#'+issue.key}, title) 193 + )) 194 + } 195 + ) 196 + ) 197 + return form 198 + } 199 + 200 + function branchMenu(msg, full) { 201 + return combobox({ 202 + style: {'max-width': '14ex'}, 203 + placeholder: 'branch…', 204 + default: 'master', 205 + read: msg && pull(getRefs(msg), pull.map(function (ref) { 206 + var m = /^refs\/heads\/(.*)$/.exec(ref.name) 207 + if(!m) return 208 + var branch = m[1] 209 + var label = branch 210 + if(full) { 211 + var updated = new Date(ref.link.value.timestamp) 212 + label = branch + 213 + ' · ' + human(updated) + 214 + ' · ' + ref.hash.substr(1, 8) + 215 + (ref.title ? ' · "' + ref.title + '"' : '') 216 + } 217 + return h('option', {value: branch}, label) 218 + })) 219 + }) 220 + } 221 + 222 + function newPullRequestButton(msg) { 223 + return h('div', [ 224 + h('a', { 225 + href: '#', 226 + onclick: function (e) { 227 + e.preventDefault() 228 + this.parentNode.replaceChild(pullRequestForm(msg), this) 229 + }}, 230 + 'New Pull Request…' 231 + ) 232 + ]) 233 + } 234 + 235 + function pullRequestForm(msg) { 236 + var headRepoInput 237 + var headBranchInput = branchMenu() 238 + var branchInput = branchMenu(msg) 239 + var form = h('form', 240 + h('strong', 'New Pull Request:'), 241 + h('div', 242 + 'from ', 243 + headRepoInput = combobox({ 244 + style: {'max-width': '26ex'}, 245 + onchange: function () { 246 + // list branches for selected repo 247 + var repoId = this.value 248 + if(repoId) api.sbot_get(repoId, function (err, value) { 249 + if(err) console.error(err) 250 + var msg = value && {key: repoId, value: value} 251 + headBranchInput = headBranchInput.swap(branchMenu(msg, true)) 252 + }) 253 + else headBranchInput = headBranchInput.swap(branchMenu()) 254 + }, 255 + read: pull(cat([ 256 + pull.once({id: msg.key, author: msg.value.author}), 257 + getForks(msg.key) 258 + ]), pull.map(function (fork) { 259 + return h('option', {value: fork.id}, 260 + repoLink(fork.id), ' by ', api.avatar_name(fork.author)) 261 + })) 262 + }), 263 + ':', 264 + headBranchInput, 265 + ' to ', 266 + repoName(msg.key), 267 + ':', 268 + branchInput), 269 + api.message_compose( 270 + { 271 + type: 'pull-request', 272 + project: msg.key, 273 + repo: msg.key, 274 + }, 275 + function (value) { 276 + value.branch = branchInput.value 277 + value.head_repo = headRepoInput.value 278 + value.head_branch = headBranchInput.value 279 + return value 280 + }, 281 + function (err, issue) { 282 + if(err) return alert(err) 283 + if(!issue) return 284 + var title = issue.value.content.text 285 + if(title.length > 70) title = title.substr(0, 70) + '…' 286 + form.appendChild(h('div', 287 + h('a', {href: '#'+issue.key}, title) 288 + )) 289 + } 290 + ) 291 + ) 292 + return form 293 + } 294 + 295 + 296 + 297 + return { 298 + message_content: function (msg, sbot) { 299 + var c = msg.value.content 300 + 301 + if(c.type === 'git-repo') { 302 + var branchesT, tagsT, openIssuesT, closedIssuesT, openPRsT, closedPRsT 303 + var forksT 304 + var div = h('div', 305 + h('p', 'git repo ', repoName(msg.key)), 306 + c.upstream ? h('p', 'fork of ', repoLink(c.upstream)) : '', 307 + h('p', h('code', 'ssb://' + msg.key)), 308 + h('div.git-table-wrapper', {style: {'max-height': '12em'}}, 309 + h('table', 310 + branchesT = tableRows(h('tr', 311 + h('th', 'branch'), 312 + h('th', 'commit'), 313 + h('th', 'last update'))), 314 + tagsT = tableRows(h('tr', 315 + h('th', 'tag'), 316 + h('th', 'commit'), 317 + h('th', 'last update'))))), 318 + h('div.git-table-wrapper', {style: {'max-height': '16em'}}, 319 + h('table', 320 + openIssuesT = tableRows(h('tr', 321 + h('th', 'open issues'))), 322 + closedIssuesT = tableRows(h('tr', 323 + h('th', 'closed issues'))))), 324 + h('div.git-table-wrapper', {style: {'max-height': '16em'}}, 325 + h('table', 326 + openPRsT = tableRows(h('tr', 327 + h('th', 'open pull requests'))), 328 + closedPRsT = tableRows(h('tr', 329 + h('th', 'closed pull requests'))))), 330 + h('div.git-table-wrapper', 331 + h('table', 332 + forksT = tableRows(h('tr', 333 + h('th', 'forks'))))), 334 + h('div', h('a', {href: '#', onclick: function (e) { 335 + e.preventDefault() 336 + this.parentNode.replaceChild(issueForm(msg), this) 337 + }}, 'New Issue…')), 338 + newPullRequestButton.call(this, msg) 339 + ) 340 + 341 + pull(getRefs(msg), pull.drain(function (ref) { 342 + var name = ref.realname || ref.name 343 + var author = ref.link && ref.link.value.author 344 + var parts = /^refs\/(heads|tags)\/(.*)$/.exec(name) || [] 345 + var shortName = parts[2] 346 + var t 347 + if(parts[1] === 'heads') t = branchesT 348 + else if(parts[1] === 'tags') t = tagsT 349 + if(t) t.append(h('tr', 350 + h('td', shortName, 351 + ref.conflict ? [ 352 + h('br'), 353 + h('a', {href: '#'+author}, api.avatar_name(author)) 354 + ] : ''), 355 + h('td', h('code', ref.hash)), 356 + h('td', messageTimestampLink(ref.link)))) 357 + }, function (err) { 358 + if(err) console.error(err) 359 + })) 360 + 361 + // list issues and pull requests 362 + pull( 363 + api.sbot_links({ 364 + reverse: true, 365 + dest: msg.key, 366 + rel: 'project', 367 + values: true 368 + }), 369 + paramap(function (link, cb) { 370 + getIssueState(link.key, function (err, state) { 371 + if(err) return cb(err) 372 + link.state = state 373 + cb(null, link) 374 + }) 375 + }), 376 + pull.drain(function (link) { 377 + var c = link.value.content 378 + var title = c.title || (c.text ? c.text.length > 70 379 + ? c.text.substr(0, 70) + '…' 380 + : c.text : link.key) 381 + var author = link.value.author 382 + var t = c.type === 'pull-request' 383 + ? link.state === 'open' ? openPRsT : closedPRsT 384 + : link.state === 'open' ? openIssuesT : closedIssuesT 385 + t.append(h('tr', 386 + h('td', 387 + h('a', {href: '#'+link.key}, title), h('br'), 388 + h('small', 389 + 'opened ', messageTimestampLink(link), 390 + ' by ', h('a', {href: '#'+author}, api.avatar_name(author)))))) 391 + }, function (err) { 392 + if (err) console.error(err) 393 + }) 394 + ) 395 + 396 + // list forks 397 + pull( 398 + getForks(msg.key), 399 + pull.drain(function (fork) { 400 + forksT.append(h('tr', h('td', 401 + repoLink(fork.id), 402 + ' by ', h('a', {href: '#'+fork.author}, api.avatar_name(fork.author))))) 403 + }, function (err) { 404 + if (err) console.error(err) 405 + }) 406 + ) 407 + 408 + return div 409 + } 410 + 411 + if(c.type === 'git-update') { 412 + return [ 413 + h('p', 'pushed to ', repoLink(c.repo)), 414 + c.refs ? h('ul', Object.keys(c.refs).map(function (ref) { 415 + var rev = c.refs[ref] 416 + return h('li', 417 + shortRefName(ref) + ': ', 418 + rev ? h('code', rev) : h('em', 'deleted')) 419 + })) : null, 420 + Array.isArray(c.commits) ? [ 421 + h('ul', 422 + c.commits.map(function (commit) { 423 + return h('li', 424 + typeof commit.sha1 === 'string' ? 425 + [h('code', commit.sha1.substr(0, 8)), ' '] : null, 426 + commit.title ? 427 + h('q', commit.title) : null) 428 + }), 429 + c.commits_more > 0 ? 430 + h('li', '+ ', c.commits_more, ' more') : null) 431 + ] : null, 432 + Array.isArray(c.issues) ? c.issues.map(function (issue) { 433 + if (issue.merged === true) 434 + return h('p', 'Merged ', api.message_link(issue.link), ' in ', 435 + h('code', issue.object), ' ', h('q', issue.label)) 436 + if (issue.open === false) 437 + return h('p', 'Closed ', api.message_link(issue.link), ' in ', 438 + h('code', issue.object), ' ', h('q', issue.label)) 439 + }) : null, 440 + newPullRequestButton.call(this, msg) 441 + ] 442 + } 443 + 444 + if(c.type === 'issue-edit' 445 + || (c.type === 'post' && c.text === '')) { 446 + return h('div', 447 + c.issue ? renderIssueEdit(c) : null, 448 + c.issues ? c.issues.map(renderIssueEdit) : null) 449 + } 450 + 451 + if(c.type === 'issue') { 452 + return h('div', 453 + h('p', 'opened issue on ', repoLink(c.project)), 454 + c.title ? h('h4', c.title) : '', 455 + api.markdown(c) 456 + ) 457 + } 458 + 459 + if(c.type === 'pull-request') { 460 + return h('div', 461 + h('p', 'opened pull-request ', 462 + 'to ', repoLink(c.repo), ':', c.branch, ' ', 463 + 'from ', repoLink(c.head_repo), ':', c.head_branch), 464 + c.title ? h('h4', c.title) : '', 465 + api.markdown(c) 466 + ) 467 + } 468 + }, 469 + 470 + message_meta: function (msg, sbot) { 471 + var type = msg.value.content.type 472 + if (type === 'issue' || type === 'pull-request') { 473 + var el = h('em', '...') 474 + // TODO: update if issue is changed 475 + getIssueState(msg.key, function (err, state) { 476 + if (err) return console.error(err) 477 + el.textContent = state 478 + }) 479 + return el 480 + } 481 + }, 482 + 483 + message_action: function (msg, sbot) { 484 + var c = msg.value.content 485 + if(c.type === 'issue' || c.type === 'pull-request') { 486 + var isOpen 487 + var a = h('a', {href: '#', onclick: function (e) { 488 + e.preventDefault() 489 + api.message_confirm({ 490 + type: 'issue-edit', 491 + root: msg.key, 492 + issues: [{ 493 + link: msg.key, 494 + open: !isOpen 495 + }] 496 + }, function (err, msg) { 497 + if(err) return alert(err) 498 + if(!msg) return 499 + isOpen = msg.value.content.open 500 + update() 501 + }) 502 + }}) 503 + getIssueState(msg.key, function (err, state) { 504 + if (err) return console.error(err) 505 + isOpen = state === 'open' 506 + update() 507 + }) 508 + function update() { 509 + a.textContent = c.type === 'pull-request' 510 + ? isOpen ? 'Close Pull Request' : 'Reopen Pull Request' 511 + : isOpen ? 'Close Issue' : 'Reopen Issue' 512 + } 513 + return a 514 + } 515 + } 516 + } 517 + } 518 + 519 +
+22
patchbay/modules_extra/index.js
··· 1 + module.exports = { 2 + "audio-mp3.js": require('./audio-mp3.js'), 3 + "channel.js": require('./channel.js'), 4 + "emoji.js": require('./emoji.js'), 5 + "suggest-emoji.js": require('./suggest-emoji.js'), 6 + "dns.js": require('./dns.js'), 7 + "git.js": require('./git.js'), 8 + "git-ssb.js": require('./git-ssb.js'), 9 + "key.js": require('./key.js'), 10 + "notifications.js": require('./notifications.js'), 11 + "meta-image.js": require('./meta-image.js'), 12 + "music-release-cc.js": require('./music-release-cc.js'), 13 + "music-release.js": require('./music-release.js'), 14 + "network.js": require('./network.js'), 15 + "query.js": require('./query.js'), 16 + "raw.js": require('./raw.js'), 17 + "search.js": require('./search'), 18 + "split.js": require('./split.js'), 19 + "versions.js": require('./versions.js') 20 + } 21 + 22 +
+73
patchbay/modules_extra/key.js
··· 1 + var h = require('hyperscript') 2 + var u = require('../util') 3 + var pull = require('pull-stream') 4 + var Scroller = require('pull-scroll') 5 + var keys 6 + try { keys = require('../keys') } catch (_) {} 7 + 8 + //var plugs = require('../plugs') 9 + // var message_render = plugs.first(exports.message_render = []) 10 + // var message_compose = plugs.first(exports.message_compose = []) 11 + // var sbot_log = plugs.first(exports.sbot_log = []) 12 + 13 + 14 + exports.gives = { 15 + menu_items: true, screen_view: true 16 + } 17 + 18 + exports.create = function (api) { 19 + return { 20 + menu_items: function () { 21 + return h('a', {href: '#/key'}, '/key') 22 + }, 23 + screen_view: function (path, sbot) { 24 + if(path === '/key') { 25 + if(process.title === 'browser') { 26 + var storedSecret = null 27 + try { storedSecret = localStorage['browser/.ssb/secret'] } catch (_) {} 28 + 29 + if((!storedSecret || storedSecret === 'undefined') && keys && keys.id) { 30 + try { 31 + storedSecret = JSON.stringify(keys, null, 2) 32 + localStorage['browser/.ssb/secret'] = storedSecret 33 + } catch (_) {} 34 + } 35 + 36 + var importKey = h('textarea', {placeholder: 'import an existing public/private key', name: 'textarea'}) 37 + var importRemote = h('textarea', {placeholder: 'import an existing remote', name: 'textarea'}) 38 + var content = h('div.column.scroller__content') 39 + var div = h('div.column.scroller', 40 + {style: {'overflow':'auto'}}, 41 + h('div.scroller__wrapper', 42 + h('div.column.scroller__content', 43 + h('div.message', 44 + h('p', {innerHTML: 'Your secret key is: <pre><code>' + (storedSecret || '') + '</code></pre>'}), 45 + h('form', 46 + importKey, 47 + h('button', {onclick: function (e){ 48 + localStorage['browser/.ssb/secret'] = importKey.value.replace(/\s+/g, ' ') 49 + alert('Your public/private key has been updated') 50 + e.preventDefault() 51 + }}, 'Import'), 52 + h('p', {innerHTML: 'Your ws remote is: <pre>' + localStorage.remote + '</pre>'}), 53 + h('form', 54 + importRemote, 55 + h('button', {onclick: function (e){ 56 + localStorage.remote = importRemote.value 57 + alert('Your websocket remote has been updated') 58 + e.preventDefault() 59 + }}, 'Import') 60 + ) 61 + ) 62 + ) 63 + ) 64 + ) 65 + ) 66 + return div 67 + } else { 68 + return h('p', 'Your key is saved at .ssb/secret') 69 + } 70 + } 71 + } 72 + } 73 + }
+52
patchbay/modules_extra/meta-image.js
··· 1 + var markdown = require('ssb-markdown'); 2 + var h = require('hyperscript'); 3 + var u = require('../util'); 4 + var ref = require('ssb-ref'); 5 + 6 + //render a message 7 + 8 + //var plugs = require('../plugs'); 9 + //var message_link = plugs.first(exports.message_link = []); 10 + //var message_confirm = plugs.first(exports.message_confirm = []); 11 + //var sbot_links = plugs.first(exports.sbot_links = []); 12 + //var blob_url = plugs.first(exports.blob_url = []); 13 + // 14 + exports.needs = { blob_url: 'first' } 15 + exports.gives = 'message_content' 16 + 17 + exports.create = function (api) { 18 + return function(msg, sbot) { 19 + if (msg.value.content.type !== 'meta-image') 20 + return; 21 + 22 + var v = msg.value.content; 23 + return h('div', 24 + // h('h2', "(" + v.Track + ") " + v.Title), 25 + h('img', { "src" : api.blob_url(v.link) })) 26 + 27 + // h('dl', 28 + // Object.keys(v).map(function(k) { 29 + // return [ 30 + // h("dt", k), 31 + // h("dd", v[k]), 32 + // ] 33 + // }))) 34 + 35 + // "Album": "the fall of", 36 + // "Crc32": "038becab", 37 + // "Creator": "bleupulp", 38 + // "Format": "VBR MP3", 39 + // "Height": "0", 40 + // "Length": "375.23", 41 + // "Md5": "2c517c8e813da5f940c8c7e77d4b7f3f", 42 + // "Mtime": "1399498698", 43 + // "Name": "2_bleupulp_-_clouds.mp3", 44 + // "Sha1": "9f6a96a3d5571ed1ec2a7da38ffebdcd5f181482", 45 + // "Size": "15009000", 46 + 47 + // "Title": "clouds", 48 + // "Track": "2", 49 + // "Width": "0", 50 + 51 + } 52 + }
+87
patchbay/modules_extra/music-release-cc.js
··· 1 + var markdown = require('ssb-markdown'); 2 + var h = require('hyperscript'); 3 + var u = require('../util'); 4 + var ref = require('ssb-ref'); 5 + 6 + //render a message 7 + 8 + //var plugs = require('../plugs'); 9 + //var message_link = plugs.first(exports.message_link = []); 10 + //var message_confirm = plugs.first(exports.message_confirm = []); 11 + //var sbot_links = plugs.first(exports.sbot_links = []); 12 + //var blob_url = plugs.first(exports.blob_url = []); 13 + // 14 + 15 + exports.needs = { blob_url: 'first' } 16 + exports.gives = 'message_content' 17 + 18 + exports.create = function (api) { 19 + return function(msg, sbot) { 20 + if (msg.value.content.type !== 'music-release-cc') 21 + return; 22 + 23 + var tracks = msg.value.content.tracks; 24 + return h('div', 25 + h('img', { "src" : api.blob_url(msg.value.content.cover) }), 26 + h('h1', msg.value.content.title), 27 + h('ol', 28 + Object.keys(tracks).map(function(k) { 29 + var t = tracks[k]; 30 + return h('li', t.fname, 31 + h("br"), 32 + h('audio', { 33 + "controls" : true, 34 + "src" : api.blob_url(t.link) 35 + })) 36 + })), 37 + h('p', 38 + "More info:", h('a', { href : msg.value.content.archivedotorg }, "archive.org"), 39 + h("br"), 40 + "License:", h('a', { href : msg.value.content.license }, "Link"))) 41 + } 42 + } 43 + 44 + // copied from like.js 45 + 46 + // inspiration for waveform range selection 47 + 48 + // idea: handout invite codes for upload of tracks to be cached by the pub 49 + 50 + // exports.message_meta = function (msg, sbot) { 51 + 52 + // var yupps = h('a') 53 + 54 + // pull( 55 + // sbot_links({dest: msg.key, rel: 'vote'}), 56 + // pull.collect(function (err, votes) { 57 + // if(votes.length === 1) 58 + // yupps.textContent = ' 1 yup' 59 + // if(votes.length) 60 + // yupps.textContent = ' ' + votes.length + ' yupps' 61 + // }) 62 + // ) 63 + 64 + // return yupps 65 + // } 66 + 67 + // exports.message_action = function (msg, sbot) { 68 + // if(msg.value.content.type !== 'vote') 69 + // return h('a', {href: '#', onclick: function () { 70 + // var yup = { 71 + // type: 'vote', 72 + // vote: { link: msg.key, value: 1, expression: 'yup' } 73 + // } 74 + // if(msg.value.content.recps) { 75 + // yup.recps = msg.value.content.recps.map(function (e) { 76 + // return e && typeof e !== 'string' ? e.link : e 77 + // }) 78 + // yup.private = true 79 + // } 80 + // //TODO: actually publish... 81 + 82 + // message_confirm(yup) 83 + // }}, 'yup') 84 + 85 + // } 86 + 87 +
+46
patchbay/modules_extra/music-release.js
··· 1 + var markdown = require('ssb-markdown'); 2 + var h = require('hyperscript'); 3 + var u = require('../util'); 4 + var ref = require('ssb-ref'); 5 + 6 + //render a message 7 + 8 + //var plugs = require('../plugs'); 9 + //var message_link = plugs.first(exports.message_link = []); 10 + //var message_confirm = plugs.first(exports.message_confirm = []); 11 + //var sbot_links = plugs.first(exports.sbot_links = []); 12 + // 13 + exports.gives = 'message_content' 14 + 15 + exports.create = function () { 16 + 17 + return function(msg, sbot) { 18 + if (msg.value.content.type !== 'music-release') 19 + return; 20 + 21 + var v = msg.value.content; 22 + return h('div', 23 + // h('img', { "src" : "http://localhost:7777/" + encodeURIComponent(v.cover) }), 24 + h('h1', v.Title), 25 + h("p", v.Description), 26 + h("dl", 27 + 28 + h("dt", "Creator"), 29 + h("dd", v.Creator), 30 + 31 + h("dt", "Identifier"), 32 + h("dd", v.Identifier), 33 + 34 + h("dt", "Published"), 35 + h("dd", v.Publicdate), 36 + 37 + h("dt", "Runtime"), 38 + h("dd", v.Runtime), 39 + 40 + h("dt", "Source"), 41 + h("dd", v.Source), 42 + 43 + h("dt", "License"), 44 + h("dd", h('a', { href : v.Licenseurl }, "Link")))) 45 + } 46 + }
+176
patchbay/modules_extra/network.js
··· 1 + var isVisible = require('is-visible').isVisible 2 + var h = require('hyperscript') 3 + 4 + //var avatar = plugs.first(exports.avatar = []) 5 + //var sbot_gossip_peers = plugs.first(exports.sbot_gossip_peers = []) 6 + //var sbot_gossip_connect = plugs.first(exports.sbot_gossip_connect = []) 7 + 8 + exports.needs = { 9 + avatar: 'first', 10 + sbot_gossip_peers: 'first', 11 + sbot_gossip_connect: 'first' 12 + } 13 + 14 + exports.gives = { 15 + menu_items: true, 16 + builtin_tabs: true, 17 + screen_view: true 18 + } 19 + 20 + //sbot_gossip_connect 21 + //sbot_gossip_add 22 + 23 + var human = require('human-time') 24 + 25 + function legacyToMultiServer(addr) { 26 + return 'net:'+addr.host + ':'+addr.port + '~shs:'+addr.key.substring(1).replace('.ed25519','') 27 + } 28 + 29 + //types of peers 30 + 31 + 32 + //on the same wifi network 33 + function isLocal (e) { 34 + // don't rely on private ip address, because 35 + // cjdns creates fake private ip addresses. 36 + return ip.isPrivate(e.host) && e.type === 'local' 37 + } 38 + 39 + 40 + //pub is running scuttlebot >=8 41 + //have connected successfully. 42 + function isLongterm (e) { 43 + return e.ping && e.ping.rtt && e.ping.rtt.mean > 0 44 + } 45 + 46 + //pub is running scuttlebot < 8 47 + //have connected sucessfully 48 + function isLegacy (peer) { 49 + return /connect/.test(peer.state) || (peer.duration && peer.duration.mean) > 0 && !isLongterm(peer) 50 + } 51 + 52 + //tried to connect, but failed. 53 + function isInactive (e) { 54 + return e.stateChange && (e.duration && e.duration.mean == 0) 55 + } 56 + 57 + //havn't tried to connect peer yet. 58 + function isUnattempted (e) { 59 + return !e.stateChange 60 + } 61 + 62 + function getType (e) { 63 + return ( 64 + isLongterm(e) ? 'modern' 65 + : isLegacy(e) ? 'legacy' 66 + : isInactive(e) ? 'inactive' 67 + : isUnattempted(e) ? 'unattempted' 68 + : 'other' //should never happen 69 + ) 70 + } 71 + 72 + function origin (e) { 73 + return e.source === 'local' ? 0 : 1 74 + } 75 + 76 + var states = { 77 + connected: 3, 78 + connecting: 2 79 + } 80 + 81 + var types = { 82 + modern: 4, 83 + legacy: 3, 84 + inactive: 2, 85 + unattempted: 1, 86 + other: 0 87 + } 88 + 89 + function round(n) { 90 + return Math.round(n*100)/100 91 + } 92 + 93 + function duration (s) { 94 + if(!s) return s 95 + if (Math.abs(s) > 30000) 96 + return round(s/60000)+'m' 97 + else if (Math.abs(s) > 500) 98 + return round(s/1000)+'s' 99 + else 100 + return round(s)+'ms' 101 + } 102 + 103 + 104 + 105 + exports.create = function (api) { 106 + 107 + return { 108 + menu_items: function () { 109 + return h('a', {href: '#/network'}, '/network') 110 + }, 111 + 112 + builtin_tabs: function () { 113 + return ['/network'] 114 + }, 115 + 116 + screen_view: function (path) { 117 + 118 + if(path !== '/network') return 119 + 120 + var ol = h('ul.network') 121 + 122 + ;(function poll () { 123 + 124 + //if this tab isn't open, don't update. 125 + //todo: make a better way to do this... 126 + if(!isVisible(ol)) 127 + return setTimeout(poll, 1000) 128 + 129 + api.sbot_gossip_peers(function (err, list) { 130 + ol.innerHTML = '' 131 + list.sort(function (a, b) { 132 + return ( 133 + (states[b.state] || 0) - (states[a.state] || 0) 134 + || origin(b) - origin(a) 135 + || types[getType(b)] - types[getType(a)] 136 + || b.stateChange - a.stateChange 137 + ) 138 + }).forEach(function (peer) { 139 + ol.appendChild(h('div', 140 + api.avatar(peer.key, 'thumbnail'), 141 + h('div', 142 + peer.state || 'not connected', 143 + ' ', 144 + getType(peer), 145 + ' ', 146 + //TODO: show nicer details, with labels. etc. 147 + (peer.ping && peer.ping.rtt) ? duration(peer.ping.rtt.mean) : '', 148 + ' ', 149 + (peer.ping && peer.ping.skew) ? duration(peer.ping.skew.mean) : '', 150 + h('label', 151 + {title: new Date(peer.stateChange).toString()}, 152 + peer.stateChange && ('(' + human(new Date(peer.stateChange))) + ')') 153 + ), 154 + 'source:'+peer.source, 155 + h('pre', legacyToMultiServer(peer)), 156 + h('button', 'connect', {onclick: function () { 157 + api.sbot_gossip_connect(peer, function (err) { 158 + if(err) console.error(err) 159 + else console.log('connected to', peer) 160 + }) 161 + }}) 162 + ) 163 + ) 164 + }) 165 + 166 + setTimeout(poll, 5000) 167 + }) 168 + 169 + })() 170 + 171 + return h('div.column.scroll-y', ol) 172 + } 173 + } 174 + } 175 + 176 +
+170
patchbay/modules_extra/notifications.js
··· 1 + 'use strict' 2 + var h = require('hyperscript') 3 + var u = require('../util') 4 + var pull = require('pull-stream') 5 + var Scroller = require('pull-scroll') 6 + var paramap = require('pull-paramap') 7 + var plugs = require('../plugs') 8 + var cont = require('cont') 9 + var ref = require('ssb-ref') 10 + 11 + //var message_render = plugs.first(exports.message_render = []) 12 + //var sbot_log = plugs.first(exports.sbot_log = []) 13 + //var sbot_get = plugs.first(exports.sbot_get = []) 14 + //var sbot_user_feed = plugs.first(exports.sbot_user_feed = []) 15 + //var message_unbox = plugs.first(exports.message_unbox = []) 16 + 17 + exports.needs = { 18 + message_render: 'first', 19 + sbot_log: 'first', 20 + sbot_get: 'first', 21 + sbot_user_feed: 'first', 22 + message_unbox: 'first' 23 + } 24 + 25 + 26 + exports.gives = { 27 + builtin_tabs: true, 28 + screen_view: true 29 + } 30 + 31 + exports.create = function (api) { 32 + function unbox() { 33 + return pull( 34 + pull.map(function (msg) { 35 + return msg.value && 'string' === typeof msg.value.content ? 36 + api.message_unbox(msg) : msg 37 + }), 38 + pull.filter(Boolean) 39 + ) 40 + } 41 + 42 + function notifications(ourIds) { 43 + 44 + function linksToUs(link) { 45 + return link && link.link in ourIds 46 + } 47 + 48 + function isOurMsg(id, cb) { 49 + if (!id) return cb(null, false) 50 + if (typeof id === 'object' && typeof id.link === 'string') id = id.link 51 + if (!ref.isMsg(id)) return cb(null, false) 52 + api.sbot_get(id, function (err, msg) { 53 + if (err && err.name == 'NotFoundError') cb(null, false) 54 + else if (err) cb(err) 55 + else if (msg.content.type === 'issue' || msg.content.type === 'pull-request') 56 + isOurMsg(msg.content.repo || msg.content.project, cb) 57 + else cb(err, msg.author in ourIds) 58 + }) 59 + } 60 + 61 + function isAnyOurMessage(msg, ids, cb) { 62 + cont.para(ids.map(function (id) { 63 + return function (cb) { isOurMsg(id, cb) } 64 + })) 65 + (function (err, results) { 66 + if (err) cb(err) 67 + else if (results.some(Boolean)) cb(null, msg) 68 + else cb() 69 + }) 70 + } 71 + 72 + return paramap(function (msg, cb) { 73 + var c = msg.value && msg.value.content 74 + if (!c || typeof c !== 'object') return cb() 75 + if (msg.value.author in ourIds) return cb() 76 + 77 + if (c.mentions && Array.isArray(c.mentions) && c.mentions.some(linksToUs)) 78 + return cb(null, msg) 79 + 80 + if (msg.private) 81 + return cb(null, msg) 82 + 83 + switch (c.type) { 84 + case 'post': 85 + if (c.branch || c.root) 86 + return isAnyOurMessage(msg, [].concat(c.branch, c.root), cb) 87 + else return cb() 88 + 89 + case 'contact': 90 + return cb(null, c.contact in ourIds ? msg : null) 91 + 92 + case 'vote': 93 + if (c.vote && c.vote.link) 94 + return isOurMsg(c.vote.link, function (err, isOurs) { 95 + cb(err, isOurs ? msg : null) 96 + }) 97 + else return cb() 98 + 99 + case 'issue': 100 + case 'pull-request': 101 + return isOurMsg(c.project || c.repo, function (err, isOurs) { 102 + cb(err, isOurs ? msg : null) 103 + }) 104 + 105 + case 'issue-edit': 106 + return isAnyOurMessage(msg, [c.issue].concat(c.issues), cb) 107 + 108 + default: 109 + cb() 110 + } 111 + }, 4) 112 + } 113 + 114 + function getFirstMessage(feedId, cb) { 115 + api.sbot_user_feed({id: feedId, gte: 0, limit: 1})(null, cb) 116 + } 117 + 118 + return { 119 + builtin_tabs: function () { 120 + return ['/notifications'] 121 + }, 122 + 123 + screen_view: function (path) { 124 + if(path === '/notifications') { 125 + var ids = {} 126 + var oldest 127 + 128 + var id = require('../keys').id 129 + ids[id] = true 130 + getFirstMessage(id, function (err, msg) { 131 + if (err) return console.error(err) 132 + if (!oldest || msg.value.timestamp < oldest) { 133 + oldest = msg.value.timestamp 134 + } 135 + }) 136 + 137 + var content = h('div.column.scroller__content') 138 + var div = h('div.column.scroller', 139 + {style: {'overflow':'auto'}}, 140 + h('div.scroller__wrapper', 141 + content 142 + ) 143 + ) 144 + 145 + pull( 146 + u.next(api.sbot_log, {old: false, limit: 100}), 147 + unbox(), 148 + notifications(ids), 149 + pull.filter(), 150 + Scroller(div, content, api.message_render, true, false) 151 + ) 152 + 153 + pull( 154 + u.next(api.sbot_log, {reverse: true, limit: 100, live: false}), 155 + unbox(), 156 + notifications(ids), 157 + pull.filter(), 158 + pull.take(function (msg) { 159 + // abort stream after we pass the oldest messages of our feeds 160 + return !oldest ? true : msg.value.timestamp > oldest 161 + }), 162 + Scroller(div, content, api.message_render, false, false) 163 + ) 164 + 165 + return div 166 + } 167 + } 168 + } 169 + } 170 +
+66
patchbay/modules_extra/query.js
··· 1 + var h = require('hyperscript') 2 + var pull = require('pull-stream') 3 + var HJSON = require('hjson') 4 + 5 + //var sbot_query = require('../plugs').first(exports.sbot_query = []) 6 + 7 + exports.needs = { sbot_query: 'first' } 8 + 9 + exports.gives = { 10 + menu_items: true, 11 + builtin_tabs: true, 12 + screen_view: true 13 + } 14 + 15 + exports.create = function (api) { 16 + 17 + return { 18 + menu_items: function () { 19 + return h('a', {href:'#/query'}, '/query') 20 + }, 21 + 22 + builtin_tabs: function () { 23 + return ['/query'] 24 + }, 25 + 26 + screen_view: function (path) { 27 + if(path != '/query') return 28 + var output, status, editor, stream, query 29 + 30 + function parse () { 31 + try { 32 + query = HJSON.parse(editor.value) 33 + } catch (err) { 34 + return status.textContent = err.message 35 + } 36 + status.textContent = 'okay' 37 + } 38 + 39 + return h('div.column.scroll', 40 + editor = h('textarea', {style: 'min-height:100px;', oninput: parse, onkeydown: function (e) { 41 + if(!(e.keyCode === 13 && e.ctrlKey)) return 42 + 43 + status.textContent = 'running...' 44 + parse() 45 + output.innerHTML = '' 46 + if(stream) stream.abort() 47 + 48 + console.log(query) 49 + 50 + stream = pull( 51 + api.sbot_query({query: query, limit: 100}), 52 + pull.drain(function (data) { 53 + output.appendChild(h('pre.query__data', 54 + JSON.stringify(data, null, 2) 55 + )) 56 + }, function (err) { 57 + if(err) status.textContent = err.stack 58 + }) 59 + ) 60 + }}), 61 + status = h('div.query__status'), 62 + output = h('div.column.query__output', {style: 'overflow-y: scroll;'}) 63 + ) 64 + } 65 + } 66 + }
+55
patchbay/modules_extra/raw.js
··· 1 + var h = require('hyperscript') 2 + var u = require('../util') 3 + var pull = require('pull-stream') 4 + var Scroller = require('pull-scroll') 5 + 6 + var plugs = require('../plugs') 7 + //var message_render = plugs.first(exports.message_render = []) 8 + //var message_compose = plugs.first(exports.message_compose = []) 9 + 10 + // from ssb-ref 11 + var refRegex = /((?:@|%|&)[A-Za-z0-9\/+]{43}=\.[\w\d]+)/g 12 + 13 + exports.gives = 'message_meta' 14 + 15 + function linkify (text) { 16 + var arr = text.split(refRegex) 17 + for (var i = 1; i < arr.length; i += 2) { 18 + arr[i] = h('a', {href: '#' + arr[i]}, arr[i]) 19 + } 20 + return arr 21 + } 22 + 23 + exports.create = function (api) { 24 + return function (msg) { 25 + var tmp = h('div') 26 + var el 27 + var pre 28 + return h('input', { 29 + type: 'checkbox', 30 + title: 'View Data', 31 + onclick: function () { 32 + var msgEl = this.parentNode.parentNode.parentNode 33 + var msgContentEl = msgEl.querySelector('.message_content') 34 + if (this.checked) { 35 + // move away the content 36 + while (el = msgContentEl.firstChild) 37 + tmp.appendChild(el) 38 + // show the raw stuff 39 + if (!pre) pre = h('pre', linkify(JSON.stringify({ 40 + key: msg.key, 41 + value: msg.value 42 + }, 0, 2))) 43 + msgContentEl.appendChild(pre) 44 + } else { 45 + // hide the raw stuff 46 + msgContentEl.removeChild(pre) 47 + // put back the content 48 + while (el = tmp.firstChild) 49 + msgContentEl.appendChild(el) 50 + } 51 + } 52 + }) 53 + } 54 + } 55 +
+108
patchbay/modules_extra/search.js
··· 1 + var h = require('hyperscript') 2 + var u = require('../util') 3 + var pull = require('pull-stream') 4 + var Scroller = require('pull-scroll') 5 + var TextNodeSearcher = require('text-node-searcher') 6 + 7 + //var plugs = require('../plugs') 8 + //var message_render = plugs.first(exports.message_render = []) 9 + //var sbot_log = plugs.first(exports.sbot_log = []) 10 + 11 + exports.needs = { 12 + message_render: 'first', 13 + sbot_log: 'first' 14 + } 15 + 16 + exports.gives = 'screen_view' 17 + 18 + var whitespace = /\s+/ 19 + 20 + function andSearch(terms, inputs) { 21 + for(var i = 0; i < terms.length; i++) { 22 + var match = false 23 + for(var j = 0; j < inputs.length; j++) { 24 + if(terms[i].test(inputs[j])) match = true 25 + } 26 + //if a term was not matched by anything, filter this one 27 + if(!match) return false 28 + } 29 + return true 30 + } 31 + 32 + function searchFilter(terms) { 33 + return function (msg) { 34 + var c = msg && msg.value && msg.value.content 35 + return c && ( 36 + msg.key == terms[0] || 37 + andSearch(terms.map(function (term) { 38 + return new RegExp('\\b'+term+'\\b', 'i') 39 + }), [c.text, c.name, c.title]) 40 + ) 41 + } 42 + } 43 + 44 + function createOrRegExp(ary) { 45 + return new RegExp(ary.map(function (e) { 46 + return '\\b'+e+'\\b' 47 + }).join('|'), 'i') 48 + } 49 + 50 + function highlight(el, query) { 51 + var searcher = new TextNodeSearcher({container: el}) 52 + searcher.query = query 53 + searcher.highlight() 54 + return el 55 + } 56 + 57 + exports.create = function (api) { 58 + 59 + return function (path) { 60 + if(path[0] === '?') { 61 + var query = path.substr(1).trim().split(whitespace) 62 + var _matches = searchFilter(query) 63 + 64 + var total = 0, matches = 0 65 + 66 + var header = h('div.search_header', '') 67 + var content = h('div.column.scroller__content') 68 + var div = h('div.column.scroller', 69 + {style: {'overflow':'auto'}}, 70 + h('div.scroller__wrapper', 71 + header, 72 + content 73 + ) 74 + ) 75 + 76 + function matchesQuery (data) { 77 + total++ 78 + var m = _matches(data) 79 + if(m) matches++ 80 + header.textContent = 'searched:'+total+', found:'+matches 81 + return m 82 + } 83 + 84 + 85 + 86 + function renderMsg(msg) { 87 + var el = api.message_render(msg) 88 + highlight(el, createOrRegExp(query)) 89 + return el 90 + } 91 + 92 + pull( 93 + api.sbot_log({old: false}), 94 + pull.filter(matchesQuery), 95 + Scroller(div, content, renderMsg, true, false) 96 + ) 97 + 98 + pull( 99 + u.next(api.sbot_log, {reverse: true, limit: 500, live: false}), 100 + pull.filter(matchesQuery), 101 + Scroller(div, content, renderMsg, false, false) 102 + ) 103 + 104 + return div 105 + } 106 + } 107 + 108 + }
+27
patchbay/modules_extra/split.js
··· 1 + var h = require('hyperscript') 2 + 3 + //var screen_view = 4 + // require('../plugs').first(exports._screen_view = []) 5 + 6 + 7 + exports.needs = { 8 + screen_view: 'first' 9 + } 10 + 11 + exports.gives = 'screen_view' 12 + 13 + exports.create = function (api) { 14 + 15 + return function (path) { 16 + var m = /^split\s*\((.*)\)$/.exec(path) 17 + if(!m) 18 + return 19 + 20 + return h('div.row', 21 + m[1].split(',').map(function (e) { 22 + return api.screen_view(e.trim()) 23 + }).filter(Boolean) 24 + ) 25 + } 26 + 27 + }
+32
patchbay/modules_extra/suggest-emoji.js
··· 1 + //var plugs = require('../plugs') 2 + //var emoji_url = plugs.first(exports.emoji_url = []) 3 + //var emoji_names = plugs.first(exports.emoji_names = []) 4 + 5 + exports.needs = { 6 + emoji_url: 'first', 7 + emoji_names: 'first' 8 + } 9 + 10 + exports.gives = 'suggest_mentions' 11 + 12 + exports.create = function (api) { 13 + 14 + return function (word) { 15 + return function (cb) { 16 + if (word[0] !== ':' || word.length < 2) return cb() 17 + word = word.substr(1) 18 + if (word[word.length-1] === ':') word = word.substr(0, word.length-1) 19 + cb(null, api.emoji_names().filter(function (name) { 20 + return name.substr(0, word.length) === word 21 + }).slice(0, 50).map(function (emoji) { 22 + return { 23 + image: api.emoji_url(emoji), 24 + title: emoji, 25 + subtitle: emoji, 26 + value: ':' + emoji + ':' 27 + } 28 + })) 29 + } 30 + } 31 + 32 + }
+50
patchbay/modules_extra/versions.js
··· 1 + var h = require('hyperscript') 2 + 3 + exports.gives = { 4 + menu_items: true, 5 + builtin_tabs: true, 6 + screen_view: true 7 + } 8 + 9 + exports.create = function () { 10 + 11 + return { 12 + menu_items: function () { 13 + return h('a', {href: '#/versions'}, '/versions') 14 + }, 15 + 16 + builtin_tabs: function () { 17 + return ['/versions'] 18 + }, 19 + 20 + screen_view: function (path) { 21 + if(path !== '/versions') return 22 + 23 + if('undefined' === typeof WebBoot) 24 + return h('h1', 'must run with web-boot enabled enviroment') 25 + 26 + var content = h('div.column') 27 + 28 + WebBoot.versions(function (err, log) { 29 + log.forEach(function (e, i) { 30 + content.appendChild( 31 + h('div.row', 32 + h('a', { 33 + href: '#/run:'+e.value, 34 + onclick: function () { 35 + WebBoot.run(e.value, function () { 36 + console.log('rebooting to:', e.value) 37 + }) 38 + } 39 + }, ' ', e.value, ' ', new Date(e.ts)), 40 + !i && h('label', '(current)') 41 + ) 42 + ) 43 + }) 44 + 45 + }) 46 + 47 + return content 48 + } 49 + } 50 + }
+5767
patchbay/package-lock.json
··· 1 + { 2 + "name": "patchbay", 3 + "version": "6.1.3", 4 + "lockfileVersion": 3, 5 + "requires": true, 6 + "packages": { 7 + "": { 8 + "name": "patchbay", 9 + "version": "6.1.3", 10 + "license": "MIT", 11 + "dependencies": { 12 + "cont": "^1.0.3", 13 + "dataurl-": "^0.1.0", 14 + "depject": "^3.0.0", 15 + "hjson": "^2.0.3", 16 + "human-time": "0.0.1", 17 + "hypercombo": "0.1.0", 18 + "hypercrop": "^1.0.1", 19 + "hyperfile": "^1.1.0", 20 + "hyperlightbox": "^0.1.3", 21 + "hyperprogress": "0.1.0", 22 + "hyperscript": "^1.4.7", 23 + "hypertabs": "^3.0.0", 24 + "is-visible": "^2.0.4", 25 + "kvgraph": "^0.1.0", 26 + "map-filter-reduce": "^3.0.1", 27 + "mime-types": "^2.1.11", 28 + "moment": "^2.13.0", 29 + "open-external": "^0.1.1", 30 + "peaks.js": "^0.4.7", 31 + "pull-cat": "^1.1.9", 32 + "pull-many": "^1.0.7", 33 + "pull-next": "^0.0.1", 34 + "pull-paramap": "^1.1.6", 35 + "pull-reconnect": "^0.0.3", 36 + "pull-scroll": "^0.2.0", 37 + "pull-stream": "^3.4.5", 38 + "simple-mime": "^0.1.0", 39 + "split-buffer": "^1.0.0", 40 + "ssb-avatar": "^0.2.0", 41 + "ssb-client": "^4.0.3", 42 + "ssb-config": "^2.1.1", 43 + "ssb-feed": "^2.2.1", 44 + "ssb-git": "^0.4.1", 45 + "ssb-keys": "^6.1.0", 46 + "ssb-links": "^2.0.0", 47 + "ssb-markdown": "^3.0.0", 48 + "ssb-mentions": "^0.1.0", 49 + "ssb-query": "^0.1.1", 50 + "ssb-ref": "^2.6.2", 51 + "ssb-sort": "^1.0.0", 52 + "ssb-ws": "^0.6.2", 53 + "suggest-box": "^2.2.1", 54 + "text-node-searcher": "^1.1.0", 55 + "visualize-buffer": "0.0.0" 56 + }, 57 + "devDependencies": { 58 + "browselectrify": "^1.0.1", 59 + "browserify": "^16.5.2", 60 + "indexhtmlify": "^1.3.1" 61 + } 62 + }, 63 + "node_modules/abbrev": { 64 + "version": "1.0.9", 65 + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", 66 + "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==", 67 + "license": "ISC", 68 + "optional": true 69 + }, 70 + "node_modules/abstract-leveldown": { 71 + "version": "2.6.3", 72 + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz", 73 + "integrity": "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==", 74 + "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", 75 + "license": "MIT", 76 + "dependencies": { 77 + "xtend": "~4.0.0" 78 + } 79 + }, 80 + "node_modules/acorn": { 81 + "version": "1.2.2", 82 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz", 83 + "integrity": "sha512-FsqWmApWGMGLKKNpHt12PMc5AK7BaZee0WRh04fCysmTzHe+rrKOa2MKjORhnzfpe4r0JnfdqHn02iDA9Dqj2A==", 84 + "dev": true, 85 + "license": "MIT", 86 + "bin": { 87 + "acorn": "bin/acorn" 88 + }, 89 + "engines": { 90 + "node": ">=0.4.0" 91 + } 92 + }, 93 + "node_modules/acorn-node": { 94 + "version": "1.8.2", 95 + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", 96 + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", 97 + "dev": true, 98 + "license": "Apache-2.0", 99 + "dependencies": { 100 + "acorn": "^7.0.0", 101 + "acorn-walk": "^7.0.0", 102 + "xtend": "^4.0.2" 103 + } 104 + }, 105 + "node_modules/acorn-node/node_modules/acorn": { 106 + "version": "7.4.1", 107 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 108 + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", 109 + "dev": true, 110 + "license": "MIT", 111 + "bin": { 112 + "acorn": "bin/acorn" 113 + }, 114 + "engines": { 115 + "node": ">=0.4.0" 116 + } 117 + }, 118 + "node_modules/acorn-node/node_modules/xtend": { 119 + "version": "4.0.2", 120 + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 121 + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 122 + "dev": true, 123 + "license": "MIT", 124 + "engines": { 125 + "node": ">=0.4" 126 + } 127 + }, 128 + "node_modules/acorn-walk": { 129 + "version": "7.2.0", 130 + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", 131 + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", 132 + "dev": true, 133 + "license": "MIT", 134 + "engines": { 135 + "node": ">=0.4.0" 136 + } 137 + }, 138 + "node_modules/after": { 139 + "version": "0.8.2", 140 + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", 141 + "integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==", 142 + "license": "MIT", 143 + "optional": true 144 + }, 145 + "node_modules/ansi": { 146 + "version": "0.3.1", 147 + "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", 148 + "integrity": "sha512-iFY7JCgHbepc0b82yLaw4IMortylNb6wG4kL+4R0C3iv6i+RHGHux/yUX5BTiRvSX/shMnngjR1YyNMnXEFh5A==", 149 + "license": "MIT", 150 + "optional": true 151 + }, 152 + "node_modules/ansi-regex": { 153 + "version": "2.0.0", 154 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", 155 + "integrity": "sha512-jCcLjwL2jOaTcRIaJkoRteMwNXg8nfJvwT/9K91kwZhH7bf4lsprqZ2+Qa7tSp8BYtejobOCBkDreC07q0KmZw==", 156 + "license": "MIT", 157 + "engines": { 158 + "node": ">=0.10.0" 159 + } 160 + }, 161 + "node_modules/ansi-styles": { 162 + "version": "2.2.1", 163 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 164 + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", 165 + "license": "MIT", 166 + "optional": true, 167 + "engines": { 168 + "node": ">=0.10.0" 169 + } 170 + }, 171 + "node_modules/aproba": { 172 + "version": "1.0.4", 173 + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.0.4.tgz", 174 + "integrity": "sha512-g4T1BR2vAjWV6GrBYeM7DmHUBe0WB45xRKKpNKxh4zHkUsjdGfANjdHY//9RzHi1XkWTLc1k58ddAUZ81yC8Cw==", 175 + "license": "ISC" 176 + }, 177 + "node_modules/are-we-there-yet": { 178 + "version": "1.1.2", 179 + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz", 180 + "integrity": "sha512-Ph/5XGGWoEy6z2VsZmELQW3qZtrITchV1zMNt1OonqoSoYo9acY23weZ67fLKTaRdMEGBYDx/jDJBGS8YlwPvg==", 181 + "deprecated": "This package is no longer supported.", 182 + "license": "ISC", 183 + "dependencies": { 184 + "delegates": "^1.0.0", 185 + "readable-stream": "^2.0.0 || ^1.1.13" 186 + } 187 + }, 188 + "node_modules/array-index": { 189 + "version": "1.0.0", 190 + "resolved": "https://registry.npmjs.org/array-index/-/array-index-1.0.0.tgz", 191 + "integrity": "sha512-jesyNbBkLQgGZMSwA1FanaFjalb1mZUGxGeUEkSDidzgrbjBGhvizJkaItdhkt8eIHFOJC7nDsrXk+BaehTdRw==", 192 + "license": "MIT", 193 + "optional": true, 194 + "dependencies": { 195 + "debug": "^2.2.0", 196 + "es6-symbol": "^3.0.2" 197 + }, 198 + "engines": { 199 + "node": "*" 200 + } 201 + }, 202 + "node_modules/arraybuffer-base64": { 203 + "version": "1.0.0", 204 + "resolved": "https://registry.npmjs.org/arraybuffer-base64/-/arraybuffer-base64-1.0.0.tgz", 205 + "integrity": "sha512-ObvQgZtJuUGEhaesM14KFwnqh4UbyUPwWdGvtDzQiQiZizxWL66X4H3jqmzV+KqrgtTUMRBV7YvXsmHyhPbIrA==", 206 + "license": "MIT" 207 + }, 208 + "node_modules/asn1": { 209 + "version": "0.2.3", 210 + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", 211 + "integrity": "sha512-6i37w/+EhlWlGUJff3T/Q8u1RGmP5wgbiwYnOnbOqvtrPxT63/sYFyP9RcpxtxGymtfA075IvmOnL7ycNOWl3w==", 212 + "license": "MIT", 213 + "optional": true 214 + }, 215 + "node_modules/asn1.js": { 216 + "version": "4.8.1", 217 + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.8.1.tgz", 218 + "integrity": "sha512-OSr5ZUGzhiOdp8RQEYLJmkFEb6tRKX11+m7mr7+8/U70T4B0GAQdyx1+ND7rfxv/qRR4LoVmE7ajkpJbGnd7nQ==", 219 + "dev": true, 220 + "license": "MIT", 221 + "dependencies": { 222 + "bn.js": "^4.0.0", 223 + "inherits": "^2.0.1", 224 + "minimalistic-assert": "^1.0.0" 225 + } 226 + }, 227 + "node_modules/asn1js": { 228 + "version": "1.2.12", 229 + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-1.2.12.tgz", 230 + "integrity": "sha512-eCMbXmmQ/9HMLNJkWRjF8TdX2stMrmK4WiWMZFhhmiMOcmi9dO3XDCuWDAyYn7qb0Oq4PmA0TgnqmzOObmrjpw==", 231 + "optional": true 232 + }, 233 + "node_modules/assert": { 234 + "version": "1.5.1", 235 + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.1.tgz", 236 + "integrity": "sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==", 237 + "dev": true, 238 + "license": "MIT", 239 + "dependencies": { 240 + "object.assign": "^4.1.4", 241 + "util": "^0.10.4" 242 + } 243 + }, 244 + "node_modules/assert-plus": { 245 + "version": "0.2.0", 246 + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", 247 + "integrity": "sha512-u1L0ZLywRziOVjUhRxI0Qg9G+4RnFB9H/Rq40YWn0dieDgO7vAYeJz6jKAO6t/aruzlDFLAPkQTT87e+f8Imaw==", 248 + "license": "MIT", 249 + "optional": true, 250 + "engines": { 251 + "node": ">=0.8" 252 + } 253 + }, 254 + "node_modules/astw": { 255 + "version": "2.0.0", 256 + "resolved": "https://registry.npmjs.org/astw/-/astw-2.0.0.tgz", 257 + "integrity": "sha512-W7zhYzCMisx5WQ9R99ZeTYoHk6wqwmCl55PzslcrI6ON6R3aayFxSaRY7Xzi7couwlC8Gsm2A1BGfKoqMMu4uA==", 258 + "dev": true, 259 + "license": "MIT", 260 + "dependencies": { 261 + "acorn": "^1.0.3" 262 + } 263 + }, 264 + "node_modules/async": { 265 + "version": "1.5.2", 266 + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", 267 + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", 268 + "license": "MIT", 269 + "optional": true 270 + }, 271 + "node_modules/asynckit": { 272 + "version": "0.4.0", 273 + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 274 + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", 275 + "license": "MIT", 276 + "optional": true 277 + }, 278 + "node_modules/audio-context": { 279 + "version": "0.1.0", 280 + "resolved": "https://registry.npmjs.org/audio-context/-/audio-context-0.1.0.tgz", 281 + "integrity": "sha512-PkXXfY2f96sZf/w8JWCQZn4hHgRK3lqXNRgIPO9JgdwLOyOecH7PAuYFjWdUEDbJ7BuXudTf0WJek7A+XAFyAA==", 282 + "deprecated": "Depends on Web-Audio-API implementation. Use either web-audio-api, web-audio-js or web-audio-engine package.", 283 + "license": "MIT", 284 + "dependencies": { 285 + "global": "~4.2.1" 286 + } 287 + }, 288 + "node_modules/aws-sign2": { 289 + "version": "0.6.0", 290 + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", 291 + "integrity": "sha512-JnJpAS0p9RmixkOvW2XwDxxzs1bd4/VAGIl6Q0EC5YOo+p+hqIhtDhn/nmFnB/xUNXbLkpE2mOjgVIBRKD4xYw==", 292 + "license": "Apache-2.0", 293 + "optional": true, 294 + "engines": { 295 + "node": "*" 296 + } 297 + }, 298 + "node_modules/aws4": { 299 + "version": "1.5.0", 300 + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.5.0.tgz", 301 + "integrity": "sha512-msbruB31mspZNtdkAMGIpHwGe3salMf4Bu53YJXsO/AmoxrgaVi3DLyP46XKYFKvKJ7Eh/BrLZGS0TMtyzbHlA==", 302 + "license": "MIT", 303 + "optional": true 304 + }, 305 + "node_modules/balanced-match": { 306 + "version": "1.0.2", 307 + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 308 + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 309 + "devOptional": true, 310 + "license": "MIT" 311 + }, 312 + "node_modules/base64-js": { 313 + "version": "1.2.0", 314 + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz", 315 + "integrity": "sha512-hURVuTTGLOppKhjSe9lZy4NCjnvaIAF/juwazv4WtHwsk5rxKrU1WbxN+XtwKDSvkrNbIIaTBQd9wUsSwruZUg==", 316 + "dev": true, 317 + "license": "MIT" 318 + }, 319 + "node_modules/bcrypt-pbkdf": { 320 + "version": "1.0.0", 321 + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz", 322 + "integrity": "sha512-1d7nPZyCV4TvkiRd3dZEqDrcj88tAe3ZxwkKeAJJ9eEoDIHyVPxGbmV1HMFVGa2XH4JHRrwUja36rLzR5BA60g==", 323 + "license": "BSD-4-Clause", 324 + "optional": true, 325 + "dependencies": { 326 + "tweetnacl": "^0.14.3" 327 + } 328 + }, 329 + "node_modules/binary-search": { 330 + "version": "1.3.2", 331 + "resolved": "https://registry.npmjs.org/binary-search/-/binary-search-1.3.2.tgz", 332 + "integrity": "sha512-ldmlaGfbPu0LfRtPTdCG4oqHj56JYcZDR3xu0GqeXh3LsBXBt0utwBoILSJQIlxcS+GFn5jraOKlR0mGGaRPYw==", 333 + "license": "CC0-1.0" 334 + }, 335 + "node_modules/binary-xhr": { 336 + "version": "0.0.2", 337 + "resolved": "https://registry.npmjs.org/binary-xhr/-/binary-xhr-0.0.2.tgz", 338 + "integrity": "sha512-KZ4RhQJRIIXimMnY9fbtwsa6x4kVMfusLdu1MWu87VJU6qBiG1nMr4lNPJHCGRCm2rSwH+gbqppLQ05ZQTTa/A==", 339 + "license": "ISC", 340 + "dependencies": { 341 + "inherits": "1.0.0" 342 + } 343 + }, 344 + "node_modules/binary-xhr/node_modules/inherits": { 345 + "version": "1.0.0", 346 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.0.tgz", 347 + "integrity": "sha512-5KfXESjCAfFQel2TLqhr18NEz++UiWVIA0jwHzs2Kbvb3e+r+G/eVhRfoZbaPCL0PnERvK5YeMgh02O4eenufw==", 348 + "engines": { 349 + "node": "*" 350 + } 351 + }, 352 + "node_modules/bindings": { 353 + "version": "1.2.1", 354 + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", 355 + "integrity": "sha512-u4cBQNepWxYA55FunZSM7wMi55yQaN0otnhhilNoWHq0MfOfJeQx0v0mRRpolGOExPjZcl6FtB0BB8Xkb88F0g==", 356 + "license": "MIT" 357 + }, 358 + "node_modules/bl": { 359 + "version": "1.0.3", 360 + "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.3.tgz", 361 + "integrity": "sha512-phbvN+yOk05EGoFcV/0S8N8ShnJqf6VCWRAw5he2gvRwBubFt/OzmcTNGqBt5b7Y4RK3YCgf6jrgGSR0Cwtsgw==", 362 + "license": "MIT", 363 + "dependencies": { 364 + "readable-stream": "~2.0.5" 365 + } 366 + }, 367 + "node_modules/bl/node_modules/isarray": { 368 + "version": "1.0.0", 369 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 370 + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", 371 + "license": "MIT" 372 + }, 373 + "node_modules/bl/node_modules/readable-stream": { 374 + "version": "2.0.6", 375 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", 376 + "integrity": "sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==", 377 + "license": "MIT", 378 + "dependencies": { 379 + "core-util-is": "~1.0.0", 380 + "inherits": "~2.0.1", 381 + "isarray": "~1.0.0", 382 + "process-nextick-args": "~1.0.6", 383 + "string_decoder": "~0.10.x", 384 + "util-deprecate": "~1.0.1" 385 + } 386 + }, 387 + "node_modules/bl/node_modules/string_decoder": { 388 + "version": "0.10.31", 389 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 390 + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", 391 + "license": "MIT" 392 + }, 393 + "node_modules/blake2s": { 394 + "version": "1.0.1", 395 + "resolved": "https://registry.npmjs.org/blake2s/-/blake2s-1.0.1.tgz", 396 + "integrity": "sha512-KAkhueDkhTqQTxcHQ0uue9RNCkDbUr4dPLORhp2McvAYsIewMt2YxVwnO0DJnYJoe63kA5qYe+iK26NzSPfJzA==", 397 + "license": "Public Domain" 398 + }, 399 + "node_modules/block-stream": { 400 + "version": "0.0.9", 401 + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", 402 + "integrity": "sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==", 403 + "license": "ISC", 404 + "optional": true, 405 + "dependencies": { 406 + "inherits": "~2.0.0" 407 + }, 408 + "engines": { 409 + "node": "0.4 || >=0.5.8" 410 + } 411 + }, 412 + "node_modules/bluebird": { 413 + "version": "3.4.6", 414 + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz", 415 + "integrity": "sha512-YvvhuCEE6vHQVlxe+ZTuZyXiA9RIXLz1X8YamApVDYf410Y/K0tBTpZ2bTVNsnPVSRviN/mfu2W42BnRfSXA2A==", 416 + "license": "MIT", 417 + "optional": true 418 + }, 419 + "node_modules/bn.js": { 420 + "version": "4.11.6", 421 + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", 422 + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", 423 + "dev": true, 424 + "license": "MIT" 425 + }, 426 + "node_modules/boom": { 427 + "version": "2.10.1", 428 + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", 429 + "integrity": "sha512-KbiZEa9/vofNcVJXGwdWWn25reQ3V3dHBWbS07FTF3/TOehLnm9GEhJV4T6ZvGPkShRpmUqYwnaCrkj0mRnP6Q==", 430 + "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", 431 + "license": "BSD-3-Clause", 432 + "optional": true, 433 + "dependencies": { 434 + "hoek": "2.x.x" 435 + }, 436 + "engines": { 437 + "node": ">=0.10.40" 438 + } 439 + }, 440 + "node_modules/brace-expansion": { 441 + "version": "1.1.12", 442 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", 443 + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", 444 + "devOptional": true, 445 + "license": "MIT", 446 + "dependencies": { 447 + "balanced-match": "^1.0.0", 448 + "concat-map": "0.0.1" 449 + } 450 + }, 451 + "node_modules/brorand": { 452 + "version": "1.0.6", 453 + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.0.6.tgz", 454 + "integrity": "sha512-aCTTKVBjiqRQjfe1FEmvqxVkX9C3F8XCEPyU3mT/UF/58tZZMJxmno7HySXqxNCPeysUAMgS1YcICxQc6f+O4w==", 455 + "dev": true, 456 + "license": "MIT" 457 + }, 458 + "node_modules/browselectrify": { 459 + "version": "1.0.1", 460 + "resolved": "https://registry.npmjs.org/browselectrify/-/browselectrify-1.0.1.tgz", 461 + "integrity": "sha512-ETOPHKq7XrP9+92lOe5p9IFzXfojPcXz6+wcQOZMZ0Hh2jYz8H4lyvh+qnljYFo5fqzc5VzyEKEzQ2tFVDrwJg==", 462 + "dev": true, 463 + "license": "MIT", 464 + "dependencies": { 465 + "browserify": "^13.0.1", 466 + "pull-cat": "^1.1.10", 467 + "pull-file": "^0.5.0", 468 + "pull-stream": "^3.4.3", 469 + "stream-to-pull-stream": "^1.7.0" 470 + }, 471 + "bin": { 472 + "browselectrify": "bin.js" 473 + } 474 + }, 475 + "node_modules/browselectrify/node_modules/assert": { 476 + "version": "1.3.0", 477 + "resolved": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz", 478 + "integrity": "sha512-5aKcpD+XnHpZ7EGxsuo6uoILNh0rvm0Ypa17GlkrF2CNSPhvdgi3ft9XsL2ajdVOI2I3xuGZnHvlXAeqTZYvXg==", 479 + "dev": true, 480 + "license": "MIT", 481 + "dependencies": { 482 + "util": "0.10.3" 483 + } 484 + }, 485 + "node_modules/browselectrify/node_modules/browser-resolve": { 486 + "version": "1.11.2", 487 + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", 488 + "integrity": "sha512-IBmTH6PPKm10Mnf/ja+YKXZEyH7pyrxBUbbyr0ZEDBGhNOIWVHo41gTWWU4DhYPKt6JIx2YwTsyrULjTsx7/+A==", 489 + "dev": true, 490 + "license": "MIT", 491 + "dependencies": { 492 + "resolve": "1.1.7" 493 + } 494 + }, 495 + "node_modules/browselectrify/node_modules/browserify": { 496 + "version": "13.1.0", 497 + "resolved": "https://registry.npmjs.org/browserify/-/browserify-13.1.0.tgz", 498 + "integrity": "sha512-i5iASp425UxqX6nhOfsxJVLmm+GKvPcapI8RsPixFSNQQbSbrZsYYLzPK1amobpeOuDF7nJDq/upZYkmw/C59w==", 499 + "dev": true, 500 + "license": "MIT", 501 + "dependencies": { 502 + "assert": "~1.3.0", 503 + "browser-pack": "^6.0.1", 504 + "browser-resolve": "^1.11.0", 505 + "browserify-zlib": "~0.1.2", 506 + "buffer": "^4.1.0", 507 + "concat-stream": "~1.5.1", 508 + "console-browserify": "^1.1.0", 509 + "constants-browserify": "~1.0.0", 510 + "crypto-browserify": "^3.0.0", 511 + "defined": "^1.0.0", 512 + "deps-sort": "^2.0.0", 513 + "domain-browser": "~1.1.0", 514 + "duplexer2": "~0.1.2", 515 + "events": "~1.1.0", 516 + "glob": "^5.0.15", 517 + "has": "^1.0.0", 518 + "htmlescape": "^1.1.0", 519 + "https-browserify": "~0.0.0", 520 + "inherits": "~2.0.1", 521 + "insert-module-globals": "^7.0.0", 522 + "JSONStream": "^1.0.3", 523 + "labeled-stream-splicer": "^2.0.0", 524 + "module-deps": "^4.0.2", 525 + "os-browserify": "~0.1.1", 526 + "parents": "^1.0.1", 527 + "path-browserify": "~0.0.0", 528 + "process": "~0.11.0", 529 + "punycode": "^1.3.2", 530 + "querystring-es3": "~0.2.0", 531 + "read-only-stream": "^2.0.0", 532 + "readable-stream": "^2.0.2", 533 + "resolve": "^1.1.4", 534 + "shasum": "^1.0.0", 535 + "shell-quote": "^1.4.3", 536 + "stream-browserify": "^2.0.0", 537 + "stream-http": "^2.0.0", 538 + "string_decoder": "~0.10.0", 539 + "subarg": "^1.0.0", 540 + "syntax-error": "^1.1.1", 541 + "through2": "^2.0.0", 542 + "timers-browserify": "^1.0.1", 543 + "tty-browserify": "~0.0.0", 544 + "url": "~0.11.0", 545 + "util": "~0.10.1", 546 + "vm-browserify": "~0.0.1", 547 + "xtend": "^4.0.0" 548 + }, 549 + "bin": { 550 + "browserify": "bin/cmd.js" 551 + } 552 + }, 553 + "node_modules/browselectrify/node_modules/browserify-zlib": { 554 + "version": "0.1.4", 555 + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", 556 + "integrity": "sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==", 557 + "dev": true, 558 + "license": "MIT", 559 + "dependencies": { 560 + "pako": "~0.2.0" 561 + } 562 + }, 563 + "node_modules/browselectrify/node_modules/buffer": { 564 + "version": "4.9.1", 565 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", 566 + "integrity": "sha512-DNK4ruAqtyHaN8Zne7PkBTO+dD1Lr0YfTduMqlIyjvQIoztBkUxrvL+hKeLW8NXFKHOq/2upkxuoS9znQ9bW9A==", 567 + "deprecated": "This version of 'buffer' is out-of-date. You must update to v4.9.2 or newer", 568 + "dev": true, 569 + "license": "MIT", 570 + "dependencies": { 571 + "base64-js": "^1.0.2", 572 + "ieee754": "^1.1.4", 573 + "isarray": "^1.0.0" 574 + } 575 + }, 576 + "node_modules/browselectrify/node_modules/builtin-status-codes": { 577 + "version": "2.0.0", 578 + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-2.0.0.tgz", 579 + "integrity": "sha512-8KPx+JfZWi0K8L5sycIOA6/ZFZbaFKXDeUIXaqwUnhed1Ge1cB0wyq+bNDjKnL9AR2Uj3m/khkF6CDolsyMitA==", 580 + "dev": true, 581 + "license": "MIT" 582 + }, 583 + "node_modules/browselectrify/node_modules/concat-stream": { 584 + "version": "1.5.2", 585 + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", 586 + "integrity": "sha512-H6xsIBfQ94aESBG8jGHXQ7i5AEpy5ZeVaLDOisDICiTCKpqEfr34/KmTrspKQNoLKNu9gTkovlpQcUi630AKiQ==", 587 + "dev": true, 588 + "engines": [ 589 + "node >= 0.8" 590 + ], 591 + "license": "MIT", 592 + "dependencies": { 593 + "inherits": "~2.0.1", 594 + "readable-stream": "~2.0.0", 595 + "typedarray": "~0.0.5" 596 + } 597 + }, 598 + "node_modules/browselectrify/node_modules/concat-stream/node_modules/readable-stream": { 599 + "version": "2.0.6", 600 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", 601 + "integrity": "sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==", 602 + "dev": true, 603 + "license": "MIT", 604 + "dependencies": { 605 + "core-util-is": "~1.0.0", 606 + "inherits": "~2.0.1", 607 + "isarray": "~1.0.0", 608 + "process-nextick-args": "~1.0.6", 609 + "string_decoder": "~0.10.x", 610 + "util-deprecate": "~1.0.1" 611 + } 612 + }, 613 + "node_modules/browselectrify/node_modules/detective": { 614 + "version": "4.3.1", 615 + "resolved": "https://registry.npmjs.org/detective/-/detective-4.3.1.tgz", 616 + "integrity": "sha512-/9qiE/5MI6RVAJhb6XTrYocC6MF2DixqvnFfsSq9iOGSwmEXIv8eNmOijOrsHpM1L5Cq1I/cKOCClzC9CmqJaQ==", 617 + "dev": true, 618 + "license": "MIT", 619 + "dependencies": { 620 + "acorn": "^1.0.3", 621 + "defined": "^1.0.0" 622 + } 623 + }, 624 + "node_modules/browselectrify/node_modules/domain-browser": { 625 + "version": "1.1.7", 626 + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", 627 + "integrity": "sha512-fJ5MoHxe69h3E4/lJtFRhcWwLb04bhIBSfvCEMS1YDH+/9yEZTqBHTSTgch8nCP5tE5k2gdQEjodUqJzy7qJ9Q==", 628 + "dev": true, 629 + "license": "MIT", 630 + "engines": { 631 + "node": ">=0.4", 632 + "npm": ">=1.2" 633 + } 634 + }, 635 + "node_modules/browselectrify/node_modules/events": { 636 + "version": "1.1.1", 637 + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", 638 + "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", 639 + "dev": true, 640 + "license": "MIT", 641 + "engines": { 642 + "node": ">=0.4.x" 643 + } 644 + }, 645 + "node_modules/browselectrify/node_modules/glob": { 646 + "version": "5.0.15", 647 + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", 648 + "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", 649 + "deprecated": "Glob versions prior to v9 are no longer supported", 650 + "dev": true, 651 + "license": "ISC", 652 + "dependencies": { 653 + "inflight": "^1.0.4", 654 + "inherits": "2", 655 + "minimatch": "2 || 3", 656 + "once": "^1.3.0", 657 + "path-is-absolute": "^1.0.0" 658 + }, 659 + "engines": { 660 + "node": "*" 661 + } 662 + }, 663 + "node_modules/browselectrify/node_modules/https-browserify": { 664 + "version": "0.0.1", 665 + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", 666 + "integrity": "sha512-EjDQFbgJr1vDD/175UJeSX3ncQ3+RUnCL5NkthQGHvF4VNHlzTy8ifJfTqz47qiPRqaFH58+CbuG3x51WuB1XQ==", 667 + "dev": true, 668 + "license": "MIT" 669 + }, 670 + "node_modules/browselectrify/node_modules/inherits": { 671 + "version": "2.0.1", 672 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 673 + "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", 674 + "dev": true, 675 + "license": "ISC" 676 + }, 677 + "node_modules/browselectrify/node_modules/isarray": { 678 + "version": "1.0.0", 679 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 680 + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", 681 + "dev": true, 682 + "license": "MIT" 683 + }, 684 + "node_modules/browselectrify/node_modules/module-deps": { 685 + "version": "4.0.7", 686 + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-4.0.7.tgz", 687 + "integrity": "sha512-3MGZkxdZLoKxOuBd50SzjrbHMgYbdOewnx0AsbKDTrlIKUkTA4ZBprnvvbWqq8d4FcdaqNiZ/HG5X+1zcWrU7g==", 688 + "dev": true, 689 + "license": "MIT", 690 + "dependencies": { 691 + "browser-resolve": "^1.7.0", 692 + "concat-stream": "~1.5.0", 693 + "defined": "^1.0.0", 694 + "detective": "^4.0.0", 695 + "duplexer2": "^0.1.2", 696 + "inherits": "^2.0.1", 697 + "JSONStream": "^1.0.3", 698 + "parents": "^1.0.0", 699 + "readable-stream": "^2.0.2", 700 + "resolve": "^1.1.3", 701 + "stream-combiner2": "^1.1.1", 702 + "subarg": "^1.0.0", 703 + "through2": "^2.0.0", 704 + "xtend": "^4.0.0" 705 + }, 706 + "bin": { 707 + "module-deps": "bin/cmd.js" 708 + }, 709 + "engines": { 710 + "node": ">= 0.6" 711 + } 712 + }, 713 + "node_modules/browselectrify/node_modules/os-browserify": { 714 + "version": "0.1.2", 715 + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz", 716 + "integrity": "sha512-aZicJZccvxWOZ0Bja2eAch2L8RIJWBuRYmM8Gwl/JjNtRltH0Itcz4eH/ESyuIWfse8cc93ZCf0XrzhXK2HEDA==", 717 + "dev": true, 718 + "license": "MIT" 719 + }, 720 + "node_modules/browselectrify/node_modules/pako": { 721 + "version": "0.2.9", 722 + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", 723 + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", 724 + "dev": true, 725 + "license": "MIT" 726 + }, 727 + "node_modules/browselectrify/node_modules/resolve": { 728 + "version": "1.1.7", 729 + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", 730 + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", 731 + "dev": true, 732 + "license": "MIT" 733 + }, 734 + "node_modules/browselectrify/node_modules/stream-http": { 735 + "version": "2.4.0", 736 + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.4.0.tgz", 737 + "integrity": "sha512-W+HxMdxUvvJVzlqe4sa2bwymVmsYyCcF95pms8ilZXDjXvt8rEadIgMFdjvIgdkWqxmcqAKlv1Wyf6bxHj4jPQ==", 738 + "dev": true, 739 + "license": "MIT", 740 + "dependencies": { 741 + "builtin-status-codes": "^2.0.0", 742 + "inherits": "^2.0.1", 743 + "readable-stream": "^2.1.0", 744 + "to-arraybuffer": "^1.0.0", 745 + "xtend": "^4.0.0" 746 + } 747 + }, 748 + "node_modules/browselectrify/node_modules/string_decoder": { 749 + "version": "0.10.31", 750 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 751 + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", 752 + "dev": true, 753 + "license": "MIT" 754 + }, 755 + "node_modules/browselectrify/node_modules/util": { 756 + "version": "0.10.3", 757 + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", 758 + "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", 759 + "dev": true, 760 + "license": "MIT", 761 + "dependencies": { 762 + "inherits": "2.0.1" 763 + } 764 + }, 765 + "node_modules/browselectrify/node_modules/vm-browserify": { 766 + "version": "0.0.4", 767 + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", 768 + "integrity": "sha512-NyZNR3WDah+NPkjh/YmhuWSsT4a0mF0BJYgUmvrJ70zxjTXh5Y2Asobxlh0Nfs0PCFB5FVpRJft7NozAWFMwLQ==", 769 + "dev": true, 770 + "license": "MIT", 771 + "dependencies": { 772 + "indexof": "0.0.1" 773 + } 774 + }, 775 + "node_modules/browser-pack": { 776 + "version": "6.0.1", 777 + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.0.1.tgz", 778 + "integrity": "sha512-NbySCoD9oUtZHaR5fSo2PWtno1WeipoTUUFHJSCD4kB7tKXI1J2A+0sdBPTZgab7KLyz54TDBXIkOaB1kNuwjQ==", 779 + "dev": true, 780 + "license": "MIT", 781 + "dependencies": { 782 + "combine-source-map": "~0.7.1", 783 + "defined": "^1.0.0", 784 + "JSONStream": "^1.0.3", 785 + "through2": "^2.0.0", 786 + "umd": "^3.0.0" 787 + }, 788 + "bin": { 789 + "browser-pack": "bin/cmd.js" 790 + } 791 + }, 792 + "node_modules/browser-resolve": { 793 + "version": "2.0.0", 794 + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", 795 + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", 796 + "dev": true, 797 + "license": "MIT", 798 + "dependencies": { 799 + "resolve": "^1.17.0" 800 + } 801 + }, 802 + "node_modules/browser-split": { 803 + "version": "0.0.0", 804 + "resolved": "https://registry.npmjs.org/browser-split/-/browser-split-0.0.0.tgz", 805 + "integrity": "sha512-CNXO3AXAS1H/kOGQkPjucm1161/XoF3aVkMfujqwk85XN/D/MkQMvoB81lXyX/2rerZS+hPAYYRR3mAW05awjQ==", 806 + "license": "MIT" 807 + }, 808 + "node_modules/browserify": { 809 + "version": "16.5.2", 810 + "resolved": "https://registry.npmjs.org/browserify/-/browserify-16.5.2.tgz", 811 + "integrity": "sha512-TkOR1cQGdmXU9zW4YukWzWVSJwrxmNdADFbqbE3HFgQWe5wqZmOawqZ7J/8MPCwk/W8yY7Y0h+7mOtcZxLP23g==", 812 + "dev": true, 813 + "license": "MIT", 814 + "dependencies": { 815 + "assert": "^1.4.0", 816 + "browser-pack": "^6.0.1", 817 + "browser-resolve": "^2.0.0", 818 + "browserify-zlib": "~0.2.0", 819 + "buffer": "~5.2.1", 820 + "cached-path-relative": "^1.0.0", 821 + "concat-stream": "^1.6.0", 822 + "console-browserify": "^1.1.0", 823 + "constants-browserify": "~1.0.0", 824 + "crypto-browserify": "^3.0.0", 825 + "defined": "^1.0.0", 826 + "deps-sort": "^2.0.0", 827 + "domain-browser": "^1.2.0", 828 + "duplexer2": "~0.1.2", 829 + "events": "^2.0.0", 830 + "glob": "^7.1.0", 831 + "has": "^1.0.0", 832 + "htmlescape": "^1.1.0", 833 + "https-browserify": "^1.0.0", 834 + "inherits": "~2.0.1", 835 + "insert-module-globals": "^7.0.0", 836 + "JSONStream": "^1.0.3", 837 + "labeled-stream-splicer": "^2.0.0", 838 + "mkdirp-classic": "^0.5.2", 839 + "module-deps": "^6.2.3", 840 + "os-browserify": "~0.3.0", 841 + "parents": "^1.0.1", 842 + "path-browserify": "~0.0.0", 843 + "process": "~0.11.0", 844 + "punycode": "^1.3.2", 845 + "querystring-es3": "~0.2.0", 846 + "read-only-stream": "^2.0.0", 847 + "readable-stream": "^2.0.2", 848 + "resolve": "^1.1.4", 849 + "shasum": "^1.0.0", 850 + "shell-quote": "^1.6.1", 851 + "stream-browserify": "^2.0.0", 852 + "stream-http": "^3.0.0", 853 + "string_decoder": "^1.1.1", 854 + "subarg": "^1.0.0", 855 + "syntax-error": "^1.1.1", 856 + "through2": "^2.0.0", 857 + "timers-browserify": "^1.0.1", 858 + "tty-browserify": "0.0.1", 859 + "url": "~0.11.0", 860 + "util": "~0.10.1", 861 + "vm-browserify": "^1.0.0", 862 + "xtend": "^4.0.0" 863 + }, 864 + "bin": { 865 + "browserify": "bin/cmd.js" 866 + }, 867 + "engines": { 868 + "node": ">= 0.8" 869 + } 870 + }, 871 + "node_modules/browserify-aes": { 872 + "version": "1.0.6", 873 + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", 874 + "integrity": "sha512-MMvWM6jpfsiuzY2Y+pRJvHRac3x3rHWQisWoz1dJaF9qDFsD8HdVxB7MyZKeLKeEt0fEjrXXZ0mxgTHSoJusug==", 875 + "dev": true, 876 + "license": "MIT", 877 + "dependencies": { 878 + "buffer-xor": "^1.0.2", 879 + "cipher-base": "^1.0.0", 880 + "create-hash": "^1.1.0", 881 + "evp_bytestokey": "^1.0.0", 882 + "inherits": "^2.0.1" 883 + } 884 + }, 885 + "node_modules/browserify-cipher": { 886 + "version": "1.0.0", 887 + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", 888 + "integrity": "sha512-eR/Xnl6GNhMILoylgYn0CXdb5rbDRp3awDF0KXd/S96E+l49E9EWjSmbJPPM03Gj0nX6Ihydv/3wmtml5hnGrw==", 889 + "dev": true, 890 + "license": "MIT", 891 + "dependencies": { 892 + "browserify-aes": "^1.0.4", 893 + "browserify-des": "^1.0.0", 894 + "evp_bytestokey": "^1.0.0" 895 + } 896 + }, 897 + "node_modules/browserify-des": { 898 + "version": "1.0.0", 899 + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", 900 + "integrity": "sha512-8ryPIDvl6sFWCs8M8XOLjysP3BmwTUldIuX5yWHu76zazZpMguxHYFJI+kQ99a0lpuPF5jt+qzkFuMtjgo2xBg==", 901 + "dev": true, 902 + "license": "MIT", 903 + "dependencies": { 904 + "cipher-base": "^1.0.1", 905 + "des.js": "^1.0.0", 906 + "inherits": "^2.0.1" 907 + } 908 + }, 909 + "node_modules/browserify-rsa": { 910 + "version": "4.0.1", 911 + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", 912 + "integrity": "sha512-+YpEyaLDDvvdzIxQ+cCx73r5YEhS3ANGOkiHdyWqW4t3gdeoNEYjSiQwntbU4Uo2/9yRkpYX3SRFeH+7jc2Duw==", 913 + "dev": true, 914 + "license": "MIT", 915 + "dependencies": { 916 + "bn.js": "^4.1.0", 917 + "randombytes": "^2.0.1" 918 + } 919 + }, 920 + "node_modules/browserify-sign": { 921 + "version": "4.0.0", 922 + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.0.tgz", 923 + "integrity": "sha512-jD8i7sSI7TXGxUzTS8JvpiXbyt6S4S56n+uiQ2ycWKB3aKEHN4IpuAowIjGBsPVkhk6LA2S2aQzi0J5eiagQcA==", 924 + "dev": true, 925 + "license": "ISC", 926 + "dependencies": { 927 + "bn.js": "^4.1.1", 928 + "browserify-rsa": "^4.0.0", 929 + "create-hash": "^1.1.0", 930 + "create-hmac": "^1.1.2", 931 + "elliptic": "^6.0.0", 932 + "inherits": "^2.0.1", 933 + "parse-asn1": "^5.0.0" 934 + } 935 + }, 936 + "node_modules/browserify-zlib": { 937 + "version": "0.2.0", 938 + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", 939 + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", 940 + "dev": true, 941 + "license": "MIT", 942 + "dependencies": { 943 + "pako": "~1.0.5" 944 + } 945 + }, 946 + "node_modules/buffer": { 947 + "version": "5.2.1", 948 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", 949 + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", 950 + "dev": true, 951 + "license": "MIT", 952 + "dependencies": { 953 + "base64-js": "^1.0.2", 954 + "ieee754": "^1.1.4" 955 + } 956 + }, 957 + "node_modules/buffer-from": { 958 + "version": "1.1.2", 959 + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 960 + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 961 + "dev": true, 962 + "license": "MIT" 963 + }, 964 + "node_modules/buffer-shims": { 965 + "version": "1.0.0", 966 + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", 967 + "integrity": "sha512-Zy8ZXMyxIT6RMTeY7OP/bDndfj6bwCan7SS98CEndS6deHwWPpseeHlwarNcBim+etXnF9HBc1non5JgDaJU1g==", 968 + "license": "MIT" 969 + }, 970 + "node_modules/buffer-v6-polyfill": { 971 + "version": "1.0.3", 972 + "resolved": "https://registry.npmjs.org/buffer-v6-polyfill/-/buffer-v6-polyfill-1.0.3.tgz", 973 + "integrity": "sha512-8erfTDCuA8sRrDomLB81Swwq04euTvxyqRMbg4NrCdIDDne95fwOkKfZCRvfXhlhukofq0qYOYzdPDYitEew+g==", 974 + "license": "(MIT OR Apache-2.0)", 975 + "optional": true 976 + }, 977 + "node_modules/buffer-xor": { 978 + "version": "1.0.3", 979 + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", 980 + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", 981 + "dev": true, 982 + "license": "MIT" 983 + }, 984 + "node_modules/builtin-status-codes": { 985 + "version": "3.0.0", 986 + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", 987 + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", 988 + "dev": true, 989 + "license": "MIT" 990 + }, 991 + "node_modules/bytewise": { 992 + "version": "1.1.0", 993 + "resolved": "https://registry.npmjs.org/bytewise/-/bytewise-1.1.0.tgz", 994 + "integrity": "sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==", 995 + "license": "MIT", 996 + "dependencies": { 997 + "bytewise-core": "^1.2.2", 998 + "typewise": "^1.0.3" 999 + } 1000 + }, 1001 + "node_modules/bytewise-core": { 1002 + "version": "1.2.3", 1003 + "resolved": "https://registry.npmjs.org/bytewise-core/-/bytewise-core-1.2.3.tgz", 1004 + "integrity": "sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==", 1005 + "license": "MIT", 1006 + "dependencies": { 1007 + "typewise-core": "^1.2" 1008 + } 1009 + }, 1010 + "node_modules/cached-path-relative": { 1011 + "version": "1.1.0", 1012 + "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz", 1013 + "integrity": "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==", 1014 + "dev": true, 1015 + "license": "MIT" 1016 + }, 1017 + "node_modules/call-bind": { 1018 + "version": "1.0.8", 1019 + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", 1020 + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", 1021 + "dev": true, 1022 + "license": "MIT", 1023 + "dependencies": { 1024 + "call-bind-apply-helpers": "^1.0.0", 1025 + "es-define-property": "^1.0.0", 1026 + "get-intrinsic": "^1.2.4", 1027 + "set-function-length": "^1.2.2" 1028 + }, 1029 + "engines": { 1030 + "node": ">= 0.4" 1031 + }, 1032 + "funding": { 1033 + "url": "https://github.com/sponsors/ljharb" 1034 + } 1035 + }, 1036 + "node_modules/call-bind-apply-helpers": { 1037 + "version": "1.0.2", 1038 + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", 1039 + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", 1040 + "dev": true, 1041 + "license": "MIT", 1042 + "dependencies": { 1043 + "es-errors": "^1.3.0", 1044 + "function-bind": "^1.1.2" 1045 + }, 1046 + "engines": { 1047 + "node": ">= 0.4" 1048 + } 1049 + }, 1050 + "node_modules/call-bound": { 1051 + "version": "1.0.4", 1052 + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", 1053 + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", 1054 + "dev": true, 1055 + "license": "MIT", 1056 + "dependencies": { 1057 + "call-bind-apply-helpers": "^1.0.2", 1058 + "get-intrinsic": "^1.3.0" 1059 + }, 1060 + "engines": { 1061 + "node": ">= 0.4" 1062 + }, 1063 + "funding": { 1064 + "url": "https://github.com/sponsors/ljharb" 1065 + } 1066 + }, 1067 + "node_modules/caseless": { 1068 + "version": "0.11.0", 1069 + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", 1070 + "integrity": "sha512-ODLXH644w9C2fMPAm7bMDQ3GRvipZWZfKc+8As6hIadRIelE0n0xZuN38NS6kiK3KPEVrpymmQD8bvncAHWQkQ==", 1071 + "license": "Apache-2.0", 1072 + "optional": true 1073 + }, 1074 + "node_modules/chalk": { 1075 + "version": "1.1.3", 1076 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 1077 + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", 1078 + "license": "MIT", 1079 + "optional": true, 1080 + "dependencies": { 1081 + "ansi-styles": "^2.2.1", 1082 + "escape-string-regexp": "^1.0.2", 1083 + "has-ansi": "^2.0.0", 1084 + "strip-ansi": "^3.0.0", 1085 + "supports-color": "^2.0.0" 1086 + }, 1087 + "engines": { 1088 + "node": ">=0.10.0" 1089 + } 1090 + }, 1091 + "node_modules/chloride": { 1092 + "version": "2.2.4", 1093 + "resolved": "https://registry.npmjs.org/chloride/-/chloride-2.2.4.tgz", 1094 + "integrity": "sha512-BqkVXAJnLjseg96sMBDuViGjHFi8cjBjs6c7M47hwwjiRgowkKL+ZOVE1ibiKdH/i7mTOAAaSQXR9goCSIHxuQ==", 1095 + "license": "MIT", 1096 + "dependencies": { 1097 + "is-electron": "^2.0.0", 1098 + "sodium-browserify": "^1.0.3", 1099 + "sodium-browserify-tweetnacl": "^0.2.0" 1100 + }, 1101 + "optionalDependencies": { 1102 + "sodium-prebuilt": "1.0.22" 1103 + } 1104 + }, 1105 + "node_modules/chloride-test": { 1106 + "version": "1.1.1", 1107 + "resolved": "https://registry.npmjs.org/chloride-test/-/chloride-test-1.1.1.tgz", 1108 + "integrity": "sha512-zD9TVM771/NQCyzrfBRDo2WkS8oGOStSpRi86iP//hsqijm/cejf+BwiIldtv1Ujix4DQctmr1HrXXIbLa/M5g==", 1109 + "license": "MIT", 1110 + "dependencies": { 1111 + "json-buffer": "^2.0.11" 1112 + } 1113 + }, 1114 + "node_modules/cipher-base": { 1115 + "version": "1.0.3", 1116 + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.3.tgz", 1117 + "integrity": "sha512-Ci/6dw5oG7K7Eqvpo3xbK3WYpZdT8RjSUn87DZHkKShDVbB9iIxCBKNXdm7IlpV+gwt7uDwZDhV0mmrRSkcOsA==", 1118 + "dev": true, 1119 + "license": "MIT", 1120 + "dependencies": { 1121 + "inherits": "^2.0.1" 1122 + } 1123 + }, 1124 + "node_modules/class-list": { 1125 + "version": "0.1.1", 1126 + "resolved": "https://registry.npmjs.org/class-list/-/class-list-0.1.1.tgz", 1127 + "integrity": "sha512-zqR0uW+VsLtyQhixBhkdQ+z6B8+Y8HTh28kdSVjJ4zTTKM7Xz2asAQSya9VI6m/34F6N6Ktm0mrchKB+E5a8Xw==", 1128 + "dependencies": { 1129 + "indexof": "0.0.1" 1130 + } 1131 + }, 1132 + "node_modules/code-point-at": { 1133 + "version": "1.0.1", 1134 + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.1.tgz", 1135 + "integrity": "sha512-EkgYXIIg8KktHWJo0nRM6NpAmoIg6tXxW91YX337LY06hUijIostM9dWfBt9O/4zue4ONqRvEQwo8diSEHrYvA==", 1136 + "license": "MIT", 1137 + "dependencies": { 1138 + "number-is-nan": "^1.0.0" 1139 + }, 1140 + "engines": { 1141 + "node": ">=0.10.0" 1142 + } 1143 + }, 1144 + "node_modules/combine-source-map": { 1145 + "version": "0.7.2", 1146 + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.7.2.tgz", 1147 + "integrity": "sha512-MwoXgyZ+d44+GhTg4Vi0V9QcMSrH378vuBwR9riv7sv1r7mslA05tV1dT3+8KHLeoHe4mtM1r2K9xkbhJ451bA==", 1148 + "dev": true, 1149 + "license": "MIT", 1150 + "dependencies": { 1151 + "convert-source-map": "~1.1.0", 1152 + "inline-source-map": "~0.6.0", 1153 + "lodash.memoize": "~3.0.3", 1154 + "source-map": "~0.5.3" 1155 + } 1156 + }, 1157 + "node_modules/combined-stream": { 1158 + "version": "1.0.5", 1159 + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", 1160 + "integrity": "sha512-JgSRe4l4UzPwpJuxfcPWEK1SCrL4dxNjp1uqrQLMop3QZUVo+hDU8w9BJKA4JPbulTWI+UzrI2UA3tK12yQ6bg==", 1161 + "license": "MIT", 1162 + "optional": true, 1163 + "dependencies": { 1164 + "delayed-stream": "~1.0.0" 1165 + }, 1166 + "engines": { 1167 + "node": ">= 0.8" 1168 + } 1169 + }, 1170 + "node_modules/commander": { 1171 + "version": "2.20.3", 1172 + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 1173 + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 1174 + "license": "MIT" 1175 + }, 1176 + "node_modules/concat-map": { 1177 + "version": "0.0.1", 1178 + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1179 + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 1180 + "devOptional": true, 1181 + "license": "MIT" 1182 + }, 1183 + "node_modules/concat-stream": { 1184 + "version": "1.6.2", 1185 + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", 1186 + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", 1187 + "dev": true, 1188 + "engines": [ 1189 + "node >= 0.8" 1190 + ], 1191 + "license": "MIT", 1192 + "dependencies": { 1193 + "buffer-from": "^1.0.0", 1194 + "inherits": "^2.0.3", 1195 + "readable-stream": "^2.2.2", 1196 + "typedarray": "^0.0.6" 1197 + } 1198 + }, 1199 + "node_modules/concat-stream/node_modules/isarray": { 1200 + "version": "1.0.0", 1201 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1202 + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", 1203 + "dev": true, 1204 + "license": "MIT" 1205 + }, 1206 + "node_modules/concat-stream/node_modules/process-nextick-args": { 1207 + "version": "2.0.1", 1208 + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1209 + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 1210 + "dev": true, 1211 + "license": "MIT" 1212 + }, 1213 + "node_modules/concat-stream/node_modules/readable-stream": { 1214 + "version": "2.3.8", 1215 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", 1216 + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", 1217 + "dev": true, 1218 + "license": "MIT", 1219 + "dependencies": { 1220 + "core-util-is": "~1.0.0", 1221 + "inherits": "~2.0.3", 1222 + "isarray": "~1.0.0", 1223 + "process-nextick-args": "~2.0.0", 1224 + "safe-buffer": "~5.1.1", 1225 + "string_decoder": "~1.1.1", 1226 + "util-deprecate": "~1.0.1" 1227 + } 1228 + }, 1229 + "node_modules/concat-stream/node_modules/safe-buffer": { 1230 + "version": "5.1.2", 1231 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1232 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1233 + "dev": true, 1234 + "license": "MIT" 1235 + }, 1236 + "node_modules/concat-stream/node_modules/string_decoder": { 1237 + "version": "1.1.1", 1238 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1239 + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1240 + "dev": true, 1241 + "license": "MIT", 1242 + "dependencies": { 1243 + "safe-buffer": "~5.1.0" 1244 + } 1245 + }, 1246 + "node_modules/console-browserify": { 1247 + "version": "1.1.0", 1248 + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", 1249 + "integrity": "sha512-duS7VP5pvfsNLDvL1O4VOEbw37AI3A4ZUQYemvDlnpGrNu9tprR7BYWpDYwC0Xia0Zxz5ZupdiIrUp0GH1aXfg==", 1250 + "dev": true, 1251 + "dependencies": { 1252 + "date-now": "^0.1.4" 1253 + } 1254 + }, 1255 + "node_modules/console-control-strings": { 1256 + "version": "1.1.0", 1257 + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", 1258 + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", 1259 + "license": "ISC" 1260 + }, 1261 + "node_modules/constants-browserify": { 1262 + "version": "1.0.0", 1263 + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", 1264 + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", 1265 + "dev": true, 1266 + "license": "MIT" 1267 + }, 1268 + "node_modules/cont": { 1269 + "version": "1.0.3", 1270 + "resolved": "https://registry.npmjs.org/cont/-/cont-1.0.3.tgz", 1271 + "integrity": "sha512-lZzUsnNnzBW4EN+Mll8J54cdHn6JzKyHpa9ftxxsPwkWfhdYRIHph9dFdmi0ibfqhnvR103tQ61eAF57FF87IA==", 1272 + "license": "MIT", 1273 + "dependencies": { 1274 + "continuable": "~1.2.0", 1275 + "continuable-para": "~1.2.0", 1276 + "continuable-series": "~1.2.0" 1277 + } 1278 + }, 1279 + "node_modules/continuable": { 1280 + "version": "1.2.0", 1281 + "resolved": "https://registry.npmjs.org/continuable/-/continuable-1.2.0.tgz", 1282 + "integrity": "sha512-DMksZyrS34yEX+DTGyt9h8/6ONHRBH+PpQ5ev3YdCy5J41r0nMNv+psAujoeoT1mJf+fzKhzacR9o1M1ys2tBQ==" 1283 + }, 1284 + "node_modules/continuable-hash": { 1285 + "version": "0.1.4", 1286 + "resolved": "https://registry.npmjs.org/continuable-hash/-/continuable-hash-0.1.4.tgz", 1287 + "integrity": "sha512-Gu5kdDzwmCymZ2tROViH0VYSd0iXDDaOjn8iG51FyZreS6OuqEJAE+a3sJ6/Ky6roKOHYHDYD8Ttxj+a1tyYrg==", 1288 + "dependencies": { 1289 + "continuable": "~1.1.6" 1290 + } 1291 + }, 1292 + "node_modules/continuable-hash/node_modules/continuable": { 1293 + "version": "1.1.8", 1294 + "resolved": "https://registry.npmjs.org/continuable/-/continuable-1.1.8.tgz", 1295 + "integrity": "sha512-DrVON8s+uwIH+OJa/HdbLE7ViLKpDeF0+flOhLf7hKtffIvyI2l38i7jq6G5i2GFqodpkz7RJPq60VkmwxfVnA==" 1296 + }, 1297 + "node_modules/continuable-list": { 1298 + "version": "0.1.6", 1299 + "resolved": "https://registry.npmjs.org/continuable-list/-/continuable-list-0.1.6.tgz", 1300 + "integrity": "sha512-dqfYFtC/YRR4fUuZyJ8A+VKX/oV8E+atSCCcOvkuHsB6MFkiyI9LrDlUXCnHYowuuDu5vYqcAiRU2hiGXtcb7w==", 1301 + "dependencies": { 1302 + "continuable": "~1.1.6" 1303 + } 1304 + }, 1305 + "node_modules/continuable-list/node_modules/continuable": { 1306 + "version": "1.1.8", 1307 + "resolved": "https://registry.npmjs.org/continuable/-/continuable-1.1.8.tgz", 1308 + "integrity": "sha512-DrVON8s+uwIH+OJa/HdbLE7ViLKpDeF0+flOhLf7hKtffIvyI2l38i7jq6G5i2GFqodpkz7RJPq60VkmwxfVnA==" 1309 + }, 1310 + "node_modules/continuable-para": { 1311 + "version": "1.2.0", 1312 + "resolved": "https://registry.npmjs.org/continuable-para/-/continuable-para-1.2.0.tgz", 1313 + "integrity": "sha512-XjPo974RGEJqnvFVT9PWxG97d/NCg58mwmWDbKXqTZBZuUnMIjkx0vde+xerkUuymk8DR+YUAcllK8J5/O4Leg==", 1314 + "license": "MIT", 1315 + "dependencies": { 1316 + "continuable-hash": "~0.1.4", 1317 + "continuable-list": "~0.1.5" 1318 + } 1319 + }, 1320 + "node_modules/continuable-series": { 1321 + "version": "1.2.0", 1322 + "resolved": "https://registry.npmjs.org/continuable-series/-/continuable-series-1.2.0.tgz", 1323 + "integrity": "sha512-xMAlREs3m/IM0VCzuh0TRBXpjd6tl6zi3cMgiwcywIPFcCmNlcFNA6XCtA2cEx6Kq7EE6c1JVDVl3WGepp6a5g==", 1324 + "license": "MIT" 1325 + }, 1326 + "node_modules/convert-source-map": { 1327 + "version": "1.1.3", 1328 + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", 1329 + "integrity": "sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg==", 1330 + "dev": true, 1331 + "license": "MIT" 1332 + }, 1333 + "node_modules/core-util-is": { 1334 + "version": "1.0.2", 1335 + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1336 + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", 1337 + "license": "MIT" 1338 + }, 1339 + "node_modules/create-ecdh": { 1340 + "version": "4.0.0", 1341 + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", 1342 + "integrity": "sha512-7rYnhx2rzljQb/UszJC+KvDO8muh2kJm0meQ+VxlDoEHQ3vnZcaHRLCdIReCasEt3s5gJUy4FkkOw2L7HomsQQ==", 1343 + "dev": true, 1344 + "license": "MIT", 1345 + "dependencies": { 1346 + "bn.js": "^4.1.0", 1347 + "elliptic": "^6.0.0" 1348 + } 1349 + }, 1350 + "node_modules/create-hash": { 1351 + "version": "1.1.2", 1352 + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.2.tgz", 1353 + "integrity": "sha512-pGMQxzwaMm3+Bsw36lktDMRB6q50KdoLxBY1hvB4jf/wB7bgmSACscKCVnJQpDwo7VoLKTMomEuaeNHKtNT/rw==", 1354 + "dev": true, 1355 + "license": "MIT", 1356 + "dependencies": { 1357 + "cipher-base": "^1.0.1", 1358 + "inherits": "^2.0.1", 1359 + "ripemd160": "^1.0.0", 1360 + "sha.js": "^2.3.6" 1361 + } 1362 + }, 1363 + "node_modules/create-hmac": { 1364 + "version": "1.1.4", 1365 + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.4.tgz", 1366 + "integrity": "sha512-USPrJgMKn+vsZuEcvwmrZV7D2UWLhWlQJ9HHGrS84fxX6tSxfO6MAacnD6alDA3a0LAVtC1N3BU1Wb/6H/yUVQ==", 1367 + "dev": true, 1368 + "license": "MIT", 1369 + "dependencies": { 1370 + "create-hash": "^1.1.0", 1371 + "inherits": "^2.0.1" 1372 + } 1373 + }, 1374 + "node_modules/cryptiles": { 1375 + "version": "2.0.5", 1376 + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", 1377 + "integrity": "sha512-FFN5KwpvvQTTS5hWPxrU8/QE4kQUc6uwZcrnlMBN82t1MgAtq8mnoDwINBly9Tdr02seeIIhtdF+UH1feBYGog==", 1378 + "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", 1379 + "license": "BSD-3-Clause", 1380 + "optional": true, 1381 + "dependencies": { 1382 + "boom": "2.x.x" 1383 + }, 1384 + "engines": { 1385 + "node": ">=0.10.40" 1386 + } 1387 + }, 1388 + "node_modules/crypto-browserify": { 1389 + "version": "3.11.0", 1390 + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.0.tgz", 1391 + "integrity": "sha512-P9qJXODwW1V0tNZ71FhQEViD3EEfFhojQMOiN1P8C7DrbMJSvU6l3cLnVN0G7ujoNpaQwvFYUPNuEYRyQcwMfA==", 1392 + "dev": true, 1393 + "license": "MIT", 1394 + "dependencies": { 1395 + "browserify-cipher": "^1.0.0", 1396 + "browserify-sign": "^4.0.0", 1397 + "create-ecdh": "^4.0.0", 1398 + "create-hash": "^1.1.0", 1399 + "create-hmac": "^1.1.0", 1400 + "diffie-hellman": "^5.0.0", 1401 + "inherits": "^2.0.1", 1402 + "pbkdf2": "^3.0.3", 1403 + "public-encrypt": "^4.0.0", 1404 + "randombytes": "^2.0.0" 1405 + }, 1406 + "engines": { 1407 + "node": "*" 1408 + } 1409 + }, 1410 + "node_modules/d": { 1411 + "version": "0.1.1", 1412 + "resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz", 1413 + "integrity": "sha512-0SdM9V9pd/OXJHoWmTfNPTAeD+lw6ZqHg+isPyBFuJsZLSE0Ygg1cYZ/0l6DrKQXMOqGOu1oWupMoOfoRfMZrQ==", 1414 + "license": "MIT", 1415 + "optional": true, 1416 + "dependencies": { 1417 + "es5-ext": "~0.10.2" 1418 + } 1419 + }, 1420 + "node_modules/dashdash": { 1421 + "version": "1.14.0", 1422 + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz", 1423 + "integrity": "sha512-yQoNs2JYflS72nKEufCisG/IytQVVtsIRGVUKPsxI0QZs/Q8gZVBR3YUxHYbW1mLT2Q41HQU4seotPHlEHw36Q==", 1424 + "license": "MIT", 1425 + "optional": true, 1426 + "dependencies": { 1427 + "assert-plus": "^1.0.0" 1428 + }, 1429 + "engines": { 1430 + "node": ">=0.10" 1431 + } 1432 + }, 1433 + "node_modules/dashdash/node_modules/assert-plus": { 1434 + "version": "1.0.0", 1435 + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 1436 + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", 1437 + "license": "MIT", 1438 + "optional": true, 1439 + "engines": { 1440 + "node": ">=0.8" 1441 + } 1442 + }, 1443 + "node_modules/dataurl-": { 1444 + "version": "0.1.0", 1445 + "resolved": "https://registry.npmjs.org/dataurl-/-/dataurl--0.1.0.tgz", 1446 + "integrity": "sha512-J1Veu9JMYJIEl+jEiwhNzY+NoWFFsvEpv79YctEXquXr3PRB0xuAr4SZnGpm0MDJHiLIbOhu1VDPVQFOvlrwYw==", 1447 + "license": "MIT" 1448 + }, 1449 + "node_modules/date-now": { 1450 + "version": "0.1.4", 1451 + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", 1452 + "integrity": "sha512-AsElvov3LoNB7tf5k37H2jYSB+ZZPMT5sG2QjJCcdlV5chIv6htBUBUui2IKRjgtKAKtCBN7Zbwa+MtwLjSeNw==", 1453 + "dev": true 1454 + }, 1455 + "node_modules/debug": { 1456 + "version": "2.2.0", 1457 + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", 1458 + "integrity": "sha512-X0rGvJcskG1c3TgSCPqHJ0XJgwlcvOC7elJ5Y0hYuKBZoVqWpAMfLOeIh2UI/DCQ5ruodIjvsugZtjUYUw2pUw==", 1459 + "license": "MIT", 1460 + "optional": true, 1461 + "dependencies": { 1462 + "ms": "0.7.1" 1463 + } 1464 + }, 1465 + "node_modules/decompress-response": { 1466 + "version": "3.3.0", 1467 + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", 1468 + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", 1469 + "license": "MIT", 1470 + "dependencies": { 1471 + "mimic-response": "^1.0.0" 1472 + }, 1473 + "engines": { 1474 + "node": ">=4" 1475 + } 1476 + }, 1477 + "node_modules/deep-equal": { 1478 + "version": "1.0.1", 1479 + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", 1480 + "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", 1481 + "license": "MIT" 1482 + }, 1483 + "node_modules/deep-extend": { 1484 + "version": "0.4.1", 1485 + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz", 1486 + "integrity": "sha512-td/IpUMQ7E0yjmU8s3orgl5+Fvv41C8p0zzf+IRYVuE3bM5Fc0G3hyln0mz9VOPt5T7KahPU3hMdR0B6t9cdhQ==", 1487 + "license": "MIT", 1488 + "engines": { 1489 + "iojs": ">=1.0.0", 1490 + "node": ">=0.12.0" 1491 + } 1492 + }, 1493 + "node_modules/deferred-leveldown": { 1494 + "version": "1.2.1", 1495 + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.1.tgz", 1496 + "integrity": "sha512-g3fM2CbrCd7pfSUHsVlZoJ/VGM1Rk19Fq5BEyvZrrIptHuFn/pp+1o1LdGP87erNdYb59Wt2ePhfDjm+Go8/0A==", 1497 + "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", 1498 + "license": "MIT", 1499 + "dependencies": { 1500 + "abstract-leveldown": "~2.4.0" 1501 + } 1502 + }, 1503 + "node_modules/deferred-leveldown/node_modules/abstract-leveldown": { 1504 + "version": "2.4.1", 1505 + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.4.1.tgz", 1506 + "integrity": "sha512-sW2ic/lpOHcEhqCrUNgjN0EMhzsqNF8WO8YE5q3n/v3eVUBX24O/gAUMwwFj2BtC/DibKFXn/vA4WYhYt+NNnw==", 1507 + "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", 1508 + "license": "MIT", 1509 + "dependencies": { 1510 + "xtend": "~4.0.0" 1511 + } 1512 + }, 1513 + "node_modules/define-data-property": { 1514 + "version": "1.1.4", 1515 + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", 1516 + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", 1517 + "dev": true, 1518 + "license": "MIT", 1519 + "dependencies": { 1520 + "es-define-property": "^1.0.0", 1521 + "es-errors": "^1.3.0", 1522 + "gopd": "^1.0.1" 1523 + }, 1524 + "engines": { 1525 + "node": ">= 0.4" 1526 + }, 1527 + "funding": { 1528 + "url": "https://github.com/sponsors/ljharb" 1529 + } 1530 + }, 1531 + "node_modules/define-properties": { 1532 + "version": "1.2.1", 1533 + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", 1534 + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", 1535 + "dev": true, 1536 + "license": "MIT", 1537 + "dependencies": { 1538 + "define-data-property": "^1.0.1", 1539 + "has-property-descriptors": "^1.0.0", 1540 + "object-keys": "^1.1.1" 1541 + }, 1542 + "engines": { 1543 + "node": ">= 0.4" 1544 + }, 1545 + "funding": { 1546 + "url": "https://github.com/sponsors/ljharb" 1547 + } 1548 + }, 1549 + "node_modules/defined": { 1550 + "version": "1.0.0", 1551 + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", 1552 + "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==", 1553 + "dev": true, 1554 + "license": "MIT" 1555 + }, 1556 + "node_modules/delayed-stream": { 1557 + "version": "1.0.0", 1558 + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 1559 + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 1560 + "license": "MIT", 1561 + "optional": true, 1562 + "engines": { 1563 + "node": ">=0.4.0" 1564 + } 1565 + }, 1566 + "node_modules/delegates": { 1567 + "version": "1.0.0", 1568 + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", 1569 + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", 1570 + "license": "MIT" 1571 + }, 1572 + "node_modules/depject": { 1573 + "version": "3.2.0", 1574 + "resolved": "https://registry.npmjs.org/depject/-/depject-3.2.0.tgz", 1575 + "integrity": "sha512-dGRQTJo5BNdF2c/NUPj5xBDOrSh/ZtJ6kbPphLI9crr6xkP4xIbTzN49ORMCaOACT+tM7YGWZy4EpmqVnd9apQ==", 1576 + "license": "MIT", 1577 + "dependencies": { 1578 + "libnested": "^1.1.0" 1579 + }, 1580 + "engines": { 1581 + "node": ">=4" 1582 + } 1583 + }, 1584 + "node_modules/deps-sort": { 1585 + "version": "2.0.0", 1586 + "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz", 1587 + "integrity": "sha512-SdbEF/hgr/EyZ2PfW1DzRT5jKUC7ilCmIMxH3WIqPAm9EGvpcudeS/eW7FbM3M7mYMsdopvkQhM5rVGAIW4wlg==", 1588 + "dev": true, 1589 + "license": "MIT", 1590 + "dependencies": { 1591 + "JSONStream": "^1.0.3", 1592 + "shasum": "^1.0.0", 1593 + "subarg": "^1.0.0", 1594 + "through2": "^2.0.0" 1595 + }, 1596 + "bin": { 1597 + "deps-sort": "bin/cmd.js" 1598 + } 1599 + }, 1600 + "node_modules/des.js": { 1601 + "version": "1.0.0", 1602 + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", 1603 + "integrity": "sha512-QlJHGiTiOmW4z3EO0qKwjM2Mb+EmOlBHbpC6QgTiXB913NxMKttEuV2SJ+eLA12sMKDg1N8HnncfAtYaNnU+cg==", 1604 + "dev": true, 1605 + "license": "MIT", 1606 + "dependencies": { 1607 + "inherits": "^2.0.1", 1608 + "minimalistic-assert": "^1.0.0" 1609 + } 1610 + }, 1611 + "node_modules/detect-libc": { 1612 + "version": "1.0.3", 1613 + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", 1614 + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", 1615 + "license": "Apache-2.0", 1616 + "bin": { 1617 + "detect-libc": "bin/detect-libc.js" 1618 + }, 1619 + "engines": { 1620 + "node": ">=0.10" 1621 + } 1622 + }, 1623 + "node_modules/detective": { 1624 + "version": "5.2.1", 1625 + "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", 1626 + "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", 1627 + "dev": true, 1628 + "license": "MIT", 1629 + "dependencies": { 1630 + "acorn-node": "^1.8.2", 1631 + "defined": "^1.0.0", 1632 + "minimist": "^1.2.6" 1633 + }, 1634 + "bin": { 1635 + "detective": "bin/detective.js" 1636 + }, 1637 + "engines": { 1638 + "node": ">=0.8.0" 1639 + } 1640 + }, 1641 + "node_modules/diffie-hellman": { 1642 + "version": "5.0.2", 1643 + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", 1644 + "integrity": "sha512-6bFNThpXO1MSkYrHm2SPXvfJQ3h4gChXxj5RToODJGCs7Df79q+KNJAiB71Nut2n50ZLc35NTOPVc7jYPPWwtg==", 1645 + "dev": true, 1646 + "license": "MIT", 1647 + "dependencies": { 1648 + "bn.js": "^4.1.0", 1649 + "miller-rabin": "^4.0.0", 1650 + "randombytes": "^2.0.0" 1651 + } 1652 + }, 1653 + "node_modules/discontinuous-range": { 1654 + "version": "1.0.0", 1655 + "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", 1656 + "integrity": "sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==", 1657 + "license": "MIT" 1658 + }, 1659 + "node_modules/dom-walk": { 1660 + "version": "0.1.1", 1661 + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", 1662 + "integrity": "sha512-8CGZnLAdYN/o0SHjlP3nLvliHpi2f/prVU63/Hc4DTDpBgsNVAJekegjFtxfZ7NTUEDzHUByjX1gT3eYakIKqg==" 1663 + }, 1664 + "node_modules/domain-browser": { 1665 + "version": "1.2.0", 1666 + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", 1667 + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", 1668 + "dev": true, 1669 + "license": "MIT", 1670 + "engines": { 1671 + "node": ">=0.4", 1672 + "npm": ">=1.2" 1673 + } 1674 + }, 1675 + "node_modules/dunder-proto": { 1676 + "version": "1.0.1", 1677 + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", 1678 + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", 1679 + "dev": true, 1680 + "license": "MIT", 1681 + "dependencies": { 1682 + "call-bind-apply-helpers": "^1.0.1", 1683 + "es-errors": "^1.3.0", 1684 + "gopd": "^1.2.0" 1685 + }, 1686 + "engines": { 1687 + "node": ">= 0.4" 1688 + } 1689 + }, 1690 + "node_modules/duplexer2": { 1691 + "version": "0.1.4", 1692 + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", 1693 + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", 1694 + "dev": true, 1695 + "license": "BSD-3-Clause", 1696 + "dependencies": { 1697 + "readable-stream": "^2.0.2" 1698 + } 1699 + }, 1700 + "node_modules/ecc-jsbn": { 1701 + "version": "0.1.1", 1702 + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", 1703 + "integrity": "sha512-8Pvg9QY16SYajEL9W1Lk+9yM7XCK/MOq2wibslLZYAAEEkbAIO6mLkW+GFYbvvw8qTuDFzFMg40rS9IxkNCWPg==", 1704 + "license": "MIT", 1705 + "optional": true, 1706 + "dependencies": { 1707 + "jsbn": "~0.1.0" 1708 + } 1709 + }, 1710 + "node_modules/ed2curve": { 1711 + "version": "0.1.4", 1712 + "resolved": "https://registry.npmjs.org/ed2curve/-/ed2curve-0.1.4.tgz", 1713 + "integrity": "sha512-hDZWhCHZ1wu4P2g2RVsM2MjDmmJzhvcsXr5qHUSBJZXvuhJSunhbVsWoBXdIe0/yTa3RV4UaWpOmFmrVsKr0wA==", 1714 + "license": "Public domain", 1715 + "dependencies": { 1716 + "tweetnacl": "0.x.x" 1717 + } 1718 + }, 1719 + "node_modules/elliptic": { 1720 + "version": "6.3.2", 1721 + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.2.tgz", 1722 + "integrity": "sha512-fWMXUkG+piyCogoOd+bUbMYBSO6y2W9BAo28CEZ6wJ06+ZQCgQ2ASgIIlKw/zj0Dny2pa+FN/Do5xMAF4NvUzg==", 1723 + "dev": true, 1724 + "license": "MIT", 1725 + "dependencies": { 1726 + "bn.js": "^4.4.0", 1727 + "brorand": "^1.0.1", 1728 + "hash.js": "^1.0.0", 1729 + "inherits": "^2.0.1" 1730 + } 1731 + }, 1732 + "node_modules/emoji-named-characters": { 1733 + "version": "1.0.2", 1734 + "resolved": "https://registry.npmjs.org/emoji-named-characters/-/emoji-named-characters-1.0.2.tgz", 1735 + "integrity": "sha512-F9uKjyRsj7qjqZh7yjgHYa7XCgJgGI+nHTUqxkq/TDGuq0wLFbUX0wNes3XC6OA2j2Uu8PaeZD6hvCu5eO3lTA==", 1736 + "deprecated": "This package is no longer maintained", 1737 + "license": "MIT" 1738 + }, 1739 + "node_modules/end-of-stream": { 1740 + "version": "1.1.0", 1741 + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz", 1742 + "integrity": "sha512-EoulkdKF/1xa92q25PbjuDcgJ9RDHYU2Rs3SCIvs2/dSQ3BpmxneNHmA/M7fe60M3PrV7nNGTTNbkK62l6vXiQ==", 1743 + "license": "MIT", 1744 + "dependencies": { 1745 + "once": "~1.3.0" 1746 + } 1747 + }, 1748 + "node_modules/end-of-stream/node_modules/once": { 1749 + "version": "1.3.3", 1750 + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", 1751 + "integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==", 1752 + "license": "ISC", 1753 + "dependencies": { 1754 + "wrappy": "1" 1755 + } 1756 + }, 1757 + "node_modules/errno": { 1758 + "version": "0.1.4", 1759 + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", 1760 + "integrity": "sha512-B6ww/BgkeBIfyIaOKPMW2zteXdAeXSfOTPv6kGhl3luYw4BOTopQ0EjdGFePGdajvBjLQZq12axGLtHnrp+/Pg==", 1761 + "license": "MIT", 1762 + "dependencies": { 1763 + "prr": "~0.0.0" 1764 + }, 1765 + "bin": { 1766 + "errno": "cli.js" 1767 + } 1768 + }, 1769 + "node_modules/errno/node_modules/prr": { 1770 + "version": "0.0.0", 1771 + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", 1772 + "integrity": "sha512-LmUECmrW7RVj6mDWKjTXfKug7TFGdiz9P18HMcO4RHL+RW7MCOGNvpj5j47Rnp6ne6r4fZ2VzyUWEpKbg+tsjQ==", 1773 + "license": "MIT" 1774 + }, 1775 + "node_modules/es-define-property": { 1776 + "version": "1.0.1", 1777 + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", 1778 + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", 1779 + "dev": true, 1780 + "license": "MIT", 1781 + "engines": { 1782 + "node": ">= 0.4" 1783 + } 1784 + }, 1785 + "node_modules/es-errors": { 1786 + "version": "1.3.0", 1787 + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", 1788 + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", 1789 + "dev": true, 1790 + "license": "MIT", 1791 + "engines": { 1792 + "node": ">= 0.4" 1793 + } 1794 + }, 1795 + "node_modules/es-object-atoms": { 1796 + "version": "1.1.1", 1797 + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", 1798 + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", 1799 + "dev": true, 1800 + "license": "MIT", 1801 + "dependencies": { 1802 + "es-errors": "^1.3.0" 1803 + }, 1804 + "engines": { 1805 + "node": ">= 0.4" 1806 + } 1807 + }, 1808 + "node_modules/es5-ext": { 1809 + "version": "0.10.12", 1810 + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.12.tgz", 1811 + "integrity": "sha512-uHlaijZsSZkv+oudKIgdjiC0FtOhHP2oHbcc8kw7i9NQSwazocxfyv2RXOGpHnrUZ+CrrhpjdO+bt+Q9jFYG9g==", 1812 + "license": "MIT", 1813 + "optional": true, 1814 + "dependencies": { 1815 + "es6-iterator": "2", 1816 + "es6-symbol": "~3.1" 1817 + } 1818 + }, 1819 + "node_modules/es6-iterator": { 1820 + "version": "2.0.0", 1821 + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz", 1822 + "integrity": "sha512-xaFGj2hKo5Np4lJZ3kF0x86zIHuW7qX4ppVhSNx4ya0H9fRYP2V7zBMNiMiw9qR4hKJDSrsDmf/Gq58mnu0tCg==", 1823 + "license": "MIT", 1824 + "optional": true, 1825 + "dependencies": { 1826 + "d": "^0.1.1", 1827 + "es5-ext": "^0.10.7", 1828 + "es6-symbol": "3" 1829 + } 1830 + }, 1831 + "node_modules/es6-symbol": { 1832 + "version": "3.1.0", 1833 + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.0.tgz", 1834 + "integrity": "sha512-mcdWe5FToZm6UsH9ncf1KHfPnUJrdqQZh/or6ESLdg+c8ZnQqDyDuQAfxhf9z+QUC/bN8eLStlmPZHd+cMJONQ==", 1835 + "license": "MIT", 1836 + "optional": true, 1837 + "dependencies": { 1838 + "d": "~0.1.1", 1839 + "es5-ext": "~0.10.11" 1840 + } 1841 + }, 1842 + "node_modules/escape-string-regexp": { 1843 + "version": "1.0.5", 1844 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1845 + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", 1846 + "license": "MIT", 1847 + "optional": true, 1848 + "engines": { 1849 + "node": ">=0.8.0" 1850 + } 1851 + }, 1852 + "node_modules/eventemitter2": { 1853 + "version": "1.0.5", 1854 + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-1.0.5.tgz", 1855 + "integrity": "sha512-EUFhWUYzqqBZlzBMI+dPU8rnKXfQZEUnitnccQuEIAnvWFHCpt3+4fts2+4dpxLtlsiseVXCMFg37KjYChSxpg==", 1856 + "license": "MIT" 1857 + }, 1858 + "node_modules/events": { 1859 + "version": "2.1.0", 1860 + "resolved": "https://registry.npmjs.org/events/-/events-2.1.0.tgz", 1861 + "integrity": "sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg==", 1862 + "dev": true, 1863 + "license": "MIT", 1864 + "engines": { 1865 + "node": ">=0.4.x" 1866 + } 1867 + }, 1868 + "node_modules/evp_bytestokey": { 1869 + "version": "1.0.0", 1870 + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz", 1871 + "integrity": "sha512-ALeH0LCygUuJllS9VdUF1JLBxD37VHyxlFonQixBbQQLcO50OV2vIqPb1fRSz5WDv8aqTAnK9EMGGiF4fE6ToA==", 1872 + "dev": true, 1873 + "license": "MIT", 1874 + "dependencies": { 1875 + "create-hash": "^1.1.1" 1876 + } 1877 + }, 1878 + "node_modules/execspawn": { 1879 + "version": "1.0.1", 1880 + "resolved": "https://registry.npmjs.org/execspawn/-/execspawn-1.0.1.tgz", 1881 + "integrity": "sha512-s2k06Jy9i8CUkYe0+DxRlvtkZoOkwwfhB+Xxo5HGUtrISVW2m98jO2tr67DGRFxZwkjQqloA3v/tNtjhBRBieg==", 1882 + "license": "MIT", 1883 + "optional": true, 1884 + "dependencies": { 1885 + "util-extend": "^1.0.1" 1886 + } 1887 + }, 1888 + "node_modules/expand-template": { 1889 + "version": "1.0.3", 1890 + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-1.0.3.tgz", 1891 + "integrity": "sha512-Di+5Idl9j2FdaeXqrHdXTN9bv32nXHBMoNCzzqlwNWpHUXwcMegCbyO/m2kQQ4MTvaA1gKtmHnJHJTB+9TI1yg==", 1892 + "license": "WTFPL" 1893 + }, 1894 + "node_modules/explain-error": { 1895 + "version": "1.0.4", 1896 + "resolved": "https://registry.npmjs.org/explain-error/-/explain-error-1.0.4.tgz", 1897 + "integrity": "sha512-/wSgNMxFusiYRy1rd19LT2SQlIXDppHpumpWo06wxjflD1OYxDLbl6rMVw+U3bxD5Nuhex4TKqv9Aem4D0lVzQ==", 1898 + "license": "MIT" 1899 + }, 1900 + "node_modules/extend": { 1901 + "version": "3.0.0", 1902 + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", 1903 + "integrity": "sha512-5mYyg57hpD+sFaJmgNL9BidQ5C7dmJE3U5vzlRWbuqG+8dytvYEoxvKs6Tj5cm3LpMsFvRt20qz1ckezmsOUgQ==", 1904 + "license": "MIT", 1905 + "optional": true 1906 + }, 1907 + "node_modules/extsprintf": { 1908 + "version": "1.0.2", 1909 + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", 1910 + "integrity": "sha512-g21Br4ELmVaKCVSUSSTXecKG+MiLcHFoby5RPPUmfZdhQTontXUOPf0QK/TvreRjgItRiyO928zxR4TCrnuwmA==", 1911 + "engines": [ 1912 + "node >=0.6.0" 1913 + ], 1914 + "optional": true 1915 + }, 1916 + "node_modules/fast-future": { 1917 + "version": "1.0.2", 1918 + "resolved": "https://registry.npmjs.org/fast-future/-/fast-future-1.0.2.tgz", 1919 + "integrity": "sha512-ZdgcQC4CDq0OlirlbmaV1Hvl9hrQBKwSJokpemb2Y82uzQ3mFaGxBCCTbr78t3obRsgjqrJAsEaYWZSK3oEcJQ==", 1920 + "license": "MIT" 1921 + }, 1922 + "node_modules/flumeview-level": { 1923 + "version": "2.1.1", 1924 + "resolved": "https://registry.npmjs.org/flumeview-level/-/flumeview-level-2.1.1.tgz", 1925 + "integrity": "sha512-1hvF6npbtXZpSk4FGXF0M/PE4iGFZvXf6mx6pjo8ui7Qh0vy7alAqjJZGlcO27AeGOAjQCZYH7nSH+lmYu8hVg==", 1926 + "license": "MIT", 1927 + "dependencies": { 1928 + "bytewise": "^1.1.0", 1929 + "explain-error": "^1.0.4", 1930 + "level": "^1.7.0", 1931 + "ltgt": "^2.1.3", 1932 + "mkdirp": "^0.5.1", 1933 + "obv": "0.0.0", 1934 + "pull-level": "^2.0.3", 1935 + "pull-paramap": "^1.2.1", 1936 + "pull-stream": "^3.5.0", 1937 + "pull-write": "^1.1.1" 1938 + } 1939 + }, 1940 + "node_modules/flumeview-query": { 1941 + "version": "4.0.1", 1942 + "resolved": "https://registry.npmjs.org/flumeview-query/-/flumeview-query-4.0.1.tgz", 1943 + "integrity": "sha512-UkMRbcVJqVTfqlYCDzZf4cKgjl3EN3Ja8gOwbBykRIqVoIrdTV+IfhJ8z/bvtN7b27G+ctitcA0bDgPBN1uR2A==", 1944 + "license": "MIT", 1945 + "dependencies": { 1946 + "explain-error": "^1.0.1", 1947 + "flumeview-level": "^2.1.0", 1948 + "map-filter-reduce": "^3.0.2", 1949 + "pull-flatmap": "0.0.1", 1950 + "pull-paramap": "^1.1.3", 1951 + "pull-sink-through": "0.0.0", 1952 + "pull-stream": "^3.4.0" 1953 + } 1954 + }, 1955 + "node_modules/forever-agent": { 1956 + "version": "0.6.1", 1957 + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 1958 + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", 1959 + "license": "Apache-2.0", 1960 + "optional": true, 1961 + "engines": { 1962 + "node": "*" 1963 + } 1964 + }, 1965 + "node_modules/form-data": { 1966 + "version": "2.0.0", 1967 + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.0.0.tgz", 1968 + "integrity": "sha512-BWUNep0UvjzlIJgDsi0SFD3MvnLlwiRaVpfr82Hj2xgc9MJJcl1tSQj01CJDMG+w/kzm+vkZMmXwRM2XrkBuaA==", 1969 + "license": "MIT", 1970 + "optional": true, 1971 + "dependencies": { 1972 + "asynckit": "^0.4.0", 1973 + "combined-stream": "^1.0.5", 1974 + "mime-types": "^2.1.11" 1975 + }, 1976 + "engines": { 1977 + "node": ">= 0.12" 1978 + } 1979 + }, 1980 + "node_modules/fs.realpath": { 1981 + "version": "1.0.0", 1982 + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1983 + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1984 + "devOptional": true, 1985 + "license": "ISC" 1986 + }, 1987 + "node_modules/fstream": { 1988 + "version": "1.0.10", 1989 + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", 1990 + "integrity": "sha512-c8PWyQzw0JRHCbK5H2c1IQJDuOm2ssGIsmtPsPmKbKETciucj8XYvsFVImrucP1rvlEYb2VF/WM/8Nc4VOK1tA==", 1991 + "deprecated": "This package is no longer supported.", 1992 + "license": "ISC", 1993 + "optional": true, 1994 + "dependencies": { 1995 + "graceful-fs": "^4.1.2", 1996 + "inherits": "~2.0.0", 1997 + "mkdirp": ">=0.5 0", 1998 + "rimraf": "2" 1999 + }, 2000 + "engines": { 2001 + "node": ">=0.6" 2002 + } 2003 + }, 2004 + "node_modules/function-bind": { 2005 + "version": "1.1.2", 2006 + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 2007 + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 2008 + "dev": true, 2009 + "license": "MIT", 2010 + "funding": { 2011 + "url": "https://github.com/sponsors/ljharb" 2012 + } 2013 + }, 2014 + "node_modules/gauge": { 2015 + "version": "1.2.7", 2016 + "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz", 2017 + "integrity": "sha512-fVbU2wRE91yDvKUnrIaQlHKAWKY5e08PmztCrwuH5YVQ+Z/p3d0ny2T48o6uvAAXHIUnfaQdHkmxYbQft1eHVA==", 2018 + "deprecated": "This package is no longer supported.", 2019 + "license": "ISC", 2020 + "optional": true, 2021 + "dependencies": { 2022 + "ansi": "^0.3.0", 2023 + "has-unicode": "^2.0.0", 2024 + "lodash.pad": "^4.1.0", 2025 + "lodash.padend": "^4.1.0", 2026 + "lodash.padstart": "^4.1.0" 2027 + } 2028 + }, 2029 + "node_modules/generate-function": { 2030 + "version": "2.0.0", 2031 + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", 2032 + "integrity": "sha512-X46lB9wLCsgkyagCmX2Dev5od5j6niCr3UeMbXVDBVO4tlpXp3o4OFh+0gPTlkD3ZMixU8PCKxf0IMGQvPo8HQ==", 2033 + "license": "MIT", 2034 + "optional": true 2035 + }, 2036 + "node_modules/generate-object-property": { 2037 + "version": "1.2.0", 2038 + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", 2039 + "integrity": "sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==", 2040 + "license": "MIT", 2041 + "optional": true, 2042 + "dependencies": { 2043 + "is-property": "^1.0.0" 2044 + } 2045 + }, 2046 + "node_modules/get-intrinsic": { 2047 + "version": "1.3.0", 2048 + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", 2049 + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", 2050 + "dev": true, 2051 + "license": "MIT", 2052 + "dependencies": { 2053 + "call-bind-apply-helpers": "^1.0.2", 2054 + "es-define-property": "^1.0.1", 2055 + "es-errors": "^1.3.0", 2056 + "es-object-atoms": "^1.1.1", 2057 + "function-bind": "^1.1.2", 2058 + "get-proto": "^1.0.1", 2059 + "gopd": "^1.2.0", 2060 + "has-symbols": "^1.1.0", 2061 + "hasown": "^2.0.2", 2062 + "math-intrinsics": "^1.1.0" 2063 + }, 2064 + "engines": { 2065 + "node": ">= 0.4" 2066 + }, 2067 + "funding": { 2068 + "url": "https://github.com/sponsors/ljharb" 2069 + } 2070 + }, 2071 + "node_modules/get-proto": { 2072 + "version": "1.0.1", 2073 + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", 2074 + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", 2075 + "dev": true, 2076 + "license": "MIT", 2077 + "dependencies": { 2078 + "dunder-proto": "^1.0.1", 2079 + "es-object-atoms": "^1.0.0" 2080 + }, 2081 + "engines": { 2082 + "node": ">= 0.4" 2083 + } 2084 + }, 2085 + "node_modules/getpass": { 2086 + "version": "0.1.6", 2087 + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz", 2088 + "integrity": "sha512-Uj295v1VGRPhKEty7IiEzGYf2rAIEbcGQ8dxK5QrQuwP7tCW8ftD5o8FUsGW4MLdws4P3eKRBzo+mFySYYcimA==", 2089 + "license": "MIT", 2090 + "optional": true, 2091 + "dependencies": { 2092 + "assert-plus": "^1.0.0" 2093 + } 2094 + }, 2095 + "node_modules/getpass/node_modules/assert-plus": { 2096 + "version": "1.0.0", 2097 + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 2098 + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", 2099 + "license": "MIT", 2100 + "optional": true, 2101 + "engines": { 2102 + "node": ">=0.8" 2103 + } 2104 + }, 2105 + "node_modules/ghreleases": { 2106 + "version": "1.0.5", 2107 + "resolved": "https://registry.npmjs.org/ghreleases/-/ghreleases-1.0.5.tgz", 2108 + "integrity": "sha512-fXmepLW+EDMe9i8navRMxhqHgIPqn1f91GA2QGA2u8xz/DnwFqnD4JudKLpKho2I9TC9Vb/qHvcXktism6Hp2w==", 2109 + "license": "MIT", 2110 + "optional": true, 2111 + "dependencies": { 2112 + "after": "~0.8.1", 2113 + "ghrepos": "~2.0.0", 2114 + "ghutils": "~3.2.0", 2115 + "simple-mime": "~0.1.0", 2116 + "url-template": "~2.0.6", 2117 + "xtend": "~4.0.0" 2118 + } 2119 + }, 2120 + "node_modules/ghrepos": { 2121 + "version": "2.0.0", 2122 + "resolved": "https://registry.npmjs.org/ghrepos/-/ghrepos-2.0.0.tgz", 2123 + "integrity": "sha512-WKekkei1vtl4rvciCSVBIz+l9rNmlAFto2ryk61emqiLUFXpVuWvdPUmP0NVgLv05uxsXGqvs8T+6xKfon49pg==", 2124 + "license": "MIT", 2125 + "optional": true, 2126 + "dependencies": { 2127 + "ghutils": "~3.2.0" 2128 + } 2129 + }, 2130 + "node_modules/ghutils": { 2131 + "version": "3.2.0", 2132 + "resolved": "https://registry.npmjs.org/ghutils/-/ghutils-3.2.0.tgz", 2133 + "integrity": "sha512-VY9pgUWCr8OBTAv6LHxLL5vdF6ECe7hVdz/TmKb8TtSHn+q+n2vg9sgXwDhMnzbjR39F2j1mrZwhPDwiP8gapA==", 2134 + "license": "MIT", 2135 + "optional": true, 2136 + "dependencies": { 2137 + "jsonist": "~1.2.0", 2138 + "xtend": "~4.0.0" 2139 + } 2140 + }, 2141 + "node_modules/github-from-package": { 2142 + "version": "0.0.0", 2143 + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", 2144 + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", 2145 + "license": "MIT" 2146 + }, 2147 + "node_modules/glob": { 2148 + "version": "7.2.3", 2149 + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 2150 + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 2151 + "deprecated": "Glob versions prior to v9 are no longer supported", 2152 + "devOptional": true, 2153 + "license": "ISC", 2154 + "dependencies": { 2155 + "fs.realpath": "^1.0.0", 2156 + "inflight": "^1.0.4", 2157 + "inherits": "2", 2158 + "minimatch": "^3.1.1", 2159 + "once": "^1.3.0", 2160 + "path-is-absolute": "^1.0.0" 2161 + }, 2162 + "engines": { 2163 + "node": "*" 2164 + }, 2165 + "funding": { 2166 + "url": "https://github.com/sponsors/isaacs" 2167 + } 2168 + }, 2169 + "node_modules/global": { 2170 + "version": "4.2.1", 2171 + "resolved": "https://registry.npmjs.org/global/-/global-4.2.1.tgz", 2172 + "integrity": "sha512-z0c5wOXm1QKf+carsplKebLIGjpzWaq1RcjTRZRw/aD5FojM3vgWYp+/S8IdBgOYtds5T+RIuCXH2Z1GciU3BA==", 2173 + "dependencies": { 2174 + "min-document": "^2.6.1", 2175 + "process": "~0.5.1" 2176 + } 2177 + }, 2178 + "node_modules/global/node_modules/process": { 2179 + "version": "0.5.2", 2180 + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", 2181 + "integrity": "sha512-oNpcutj+nYX2FjdEW7PGltWhXulAnFlM0My/k48L90hARCOJtvBbQXc/6itV2jDvU5xAAtonP+r6wmQgCcbAUA==", 2182 + "engines": { 2183 + "node": ">= 0.6.0" 2184 + } 2185 + }, 2186 + "node_modules/gopd": { 2187 + "version": "1.2.0", 2188 + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", 2189 + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", 2190 + "dev": true, 2191 + "license": "MIT", 2192 + "engines": { 2193 + "node": ">= 0.4" 2194 + }, 2195 + "funding": { 2196 + "url": "https://github.com/sponsors/ljharb" 2197 + } 2198 + }, 2199 + "node_modules/graceful-fs": { 2200 + "version": "4.1.9", 2201 + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.9.tgz", 2202 + "integrity": "sha512-XoXYnP6yTKfmZYVQJ089K4GdLHvvHWDYN9JcR1hskHIjAFrtAlryPmJQ+bgqs/L9fu0OjahI9d3MTgbtNvbiuA==", 2203 + "license": "ISC", 2204 + "optional": true, 2205 + "engines": { 2206 + "node": ">=0.4.0" 2207 + } 2208 + }, 2209 + "node_modules/har-validator": { 2210 + "version": "2.0.6", 2211 + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", 2212 + "integrity": "sha512-P6tFV+wCcUL3nbyTDAvveDySfbhy0XkDtAIfZP6HITjM2WUsiPna/Eg1Yy93SFXvahqoX+kt0n+6xlXKDXYowA==", 2213 + "deprecated": "this library is no longer supported", 2214 + "license": "ISC", 2215 + "optional": true, 2216 + "dependencies": { 2217 + "chalk": "^1.1.1", 2218 + "commander": "^2.9.0", 2219 + "is-my-json-valid": "^2.12.4", 2220 + "pinkie-promise": "^2.0.0" 2221 + }, 2222 + "bin": { 2223 + "har-validator": "bin/har-validator" 2224 + }, 2225 + "engines": { 2226 + "node": ">=0.10" 2227 + } 2228 + }, 2229 + "node_modules/has": { 2230 + "version": "1.0.1", 2231 + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", 2232 + "integrity": "sha512-8wpov6mGFPJ/SYWGQIFo6t0yuNWoO9MkSq3flX8LhiGmbIUhDETp9knPMcIm0Xig1ybWsw6gq2w0gCz1JHD+Qw==", 2233 + "dev": true, 2234 + "dependencies": { 2235 + "function-bind": "^1.0.2" 2236 + }, 2237 + "engines": { 2238 + "node": ">= 0.8.0" 2239 + } 2240 + }, 2241 + "node_modules/has-ansi": { 2242 + "version": "2.0.0", 2243 + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 2244 + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", 2245 + "license": "MIT", 2246 + "optional": true, 2247 + "dependencies": { 2248 + "ansi-regex": "^2.0.0" 2249 + }, 2250 + "engines": { 2251 + "node": ">=0.10.0" 2252 + } 2253 + }, 2254 + "node_modules/has-property-descriptors": { 2255 + "version": "1.0.2", 2256 + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", 2257 + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", 2258 + "dev": true, 2259 + "license": "MIT", 2260 + "dependencies": { 2261 + "es-define-property": "^1.0.0" 2262 + }, 2263 + "funding": { 2264 + "url": "https://github.com/sponsors/ljharb" 2265 + } 2266 + }, 2267 + "node_modules/has-symbols": { 2268 + "version": "1.1.0", 2269 + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", 2270 + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", 2271 + "dev": true, 2272 + "license": "MIT", 2273 + "engines": { 2274 + "node": ">= 0.4" 2275 + }, 2276 + "funding": { 2277 + "url": "https://github.com/sponsors/ljharb" 2278 + } 2279 + }, 2280 + "node_modules/has-unicode": { 2281 + "version": "2.0.1", 2282 + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", 2283 + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", 2284 + "license": "ISC" 2285 + }, 2286 + "node_modules/hash.js": { 2287 + "version": "1.0.3", 2288 + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.0.3.tgz", 2289 + "integrity": "sha512-J0ew1WQhNTfUrH4VYckHyBLq3WzyKJleK8HPeWVIFtgu/mUBKy1fKtk3drOijR2T1gh0ZqC6EZ06uGRgdMASSg==", 2290 + "dev": true, 2291 + "license": "MIT", 2292 + "dependencies": { 2293 + "inherits": "^2.0.1" 2294 + } 2295 + }, 2296 + "node_modules/hasown": { 2297 + "version": "2.0.2", 2298 + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", 2299 + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 2300 + "dev": true, 2301 + "license": "MIT", 2302 + "dependencies": { 2303 + "function-bind": "^1.1.2" 2304 + }, 2305 + "engines": { 2306 + "node": ">= 0.4" 2307 + } 2308 + }, 2309 + "node_modules/hawk": { 2310 + "version": "3.1.3", 2311 + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", 2312 + "integrity": "sha512-X8xbmTc1cbPXcQV4WkLcRMALuyoxhfpFATmyuCxJPOAvrDS4DNnsTAOmKUxMTOWU6TzrTOkxPKwIx5ZOpJVSrg==", 2313 + "deprecated": "This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.", 2314 + "license": "BSD-3-Clause", 2315 + "optional": true, 2316 + "dependencies": { 2317 + "boom": "2.x.x", 2318 + "cryptiles": "2.x.x", 2319 + "hoek": "2.x.x", 2320 + "sntp": "1.x.x" 2321 + }, 2322 + "engines": { 2323 + "node": ">=0.10.32" 2324 + } 2325 + }, 2326 + "node_modules/hjson": { 2327 + "version": "2.1.0", 2328 + "resolved": "https://registry.npmjs.org/hjson/-/hjson-2.1.0.tgz", 2329 + "integrity": "sha512-6++LRZE+zCbSoo1y8xnJcGjsXQE6aQmRQb6UytsdzLv1tf9KL31DGpBV5GXsppDyN6nsphRBXC7dGoS5kTHKGw==", 2330 + "license": "MIT", 2331 + "bin": { 2332 + "hjson": "bin/hjson" 2333 + } 2334 + }, 2335 + "node_modules/hmac": { 2336 + "version": "1.0.1", 2337 + "resolved": "https://registry.npmjs.org/hmac/-/hmac-1.0.1.tgz", 2338 + "integrity": "sha512-7pSzEtIx7WBY04FDVFvdU7gufDrdthJIfQuW3eM6tSNcCWWBW2zSYDgYT74vwys74vuasInzgo5e1Rc4Uoh70Q==", 2339 + "license": "MIT" 2340 + }, 2341 + "node_modules/hoek": { 2342 + "version": "2.16.3", 2343 + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", 2344 + "integrity": "sha512-V6Yw1rIcYV/4JsnggjBU0l4Kr+EXhpwqXRusENU1Xx6ro00IHPHYNynCuBTOZAPlr3AAmLvchH9I7N/VUdvOwQ==", 2345 + "deprecated": "This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).", 2346 + "license": "BSD-3-Clause", 2347 + "optional": true, 2348 + "engines": { 2349 + "node": ">=0.10.40" 2350 + } 2351 + }, 2352 + "node_modules/homedir": { 2353 + "version": "0.6.0", 2354 + "resolved": "https://registry.npmjs.org/homedir/-/homedir-0.6.0.tgz", 2355 + "integrity": "sha512-KZFBHenkVuyyG4uaqRSXqWJr3HTxcaPguM7rU1BlH/mtbDlzaXNSXTa9AhV+fXEjrNemHu9vtLRIaM8/8OW0xA==", 2356 + "license": "MIT", 2357 + "optional": true 2358 + }, 2359 + "node_modules/html-element": { 2360 + "version": "1.3.0", 2361 + "resolved": "https://registry.npmjs.org/html-element/-/html-element-1.3.0.tgz", 2362 + "integrity": "sha512-ZueZhoU2xwAIh8WMQbBkX5zTjOf0KRcDin9Nd91DotBXOLEdmxSDy5172LuGywD/P09KB0Wnb9HN1x4+DvabAw==", 2363 + "license": "MIT", 2364 + "dependencies": { 2365 + "class-list": "~0.1.1" 2366 + } 2367 + }, 2368 + "node_modules/htmlescape": { 2369 + "version": "1.1.1", 2370 + "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", 2371 + "integrity": "sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==", 2372 + "dev": true, 2373 + "license": "MIT", 2374 + "engines": { 2375 + "node": ">=0.10" 2376 + } 2377 + }, 2378 + "node_modules/http-signature": { 2379 + "version": "1.1.1", 2380 + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", 2381 + "integrity": "sha512-iUn0NcRULlDGtqNLN1Jxmzayk8ogm7NToldASyZBpM2qggbphjXzNOiw3piN8tgz+e/DRs6X5gAzFwTI6BCRcg==", 2382 + "license": "MIT", 2383 + "optional": true, 2384 + "dependencies": { 2385 + "assert-plus": "^0.2.0", 2386 + "jsprim": "^1.2.2", 2387 + "sshpk": "^1.7.0" 2388 + }, 2389 + "engines": { 2390 + "node": ">=0.8", 2391 + "npm": ">=1.3.7" 2392 + } 2393 + }, 2394 + "node_modules/https-browserify": { 2395 + "version": "1.0.0", 2396 + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", 2397 + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", 2398 + "dev": true, 2399 + "license": "MIT" 2400 + }, 2401 + "node_modules/human-time": { 2402 + "version": "0.0.1", 2403 + "resolved": "https://registry.npmjs.org/human-time/-/human-time-0.0.1.tgz", 2404 + "integrity": "sha512-A+xgXNarLizEqp9iHGy9Y4dII0VI/b0NV3qzpdjlInsiLouojaXUG1mLEMMWxlO2X7Kbg+UYw+18oKb74ZWwXQ==", 2405 + "license": "MIT" 2406 + }, 2407 + "node_modules/hypercombo": { 2408 + "version": "0.1.0", 2409 + "resolved": "https://registry.npmjs.org/hypercombo/-/hypercombo-0.1.0.tgz", 2410 + "integrity": "sha512-lJaTVukYWcNi5igfF4gus6UzERJoiv3n8eL6ao6Mwp1PZ9hLenMWGm2ytkyViLLRBhvE2xyExVJ4Td4LAXNUUg==", 2411 + "license": "GPL-3.0+", 2412 + "dependencies": { 2413 + "hyperscript": "^2.0.2", 2414 + "pull-stream": "^3.4.3" 2415 + } 2416 + }, 2417 + "node_modules/hypercombo/node_modules/html-element": { 2418 + "version": "2.1.1", 2419 + "resolved": "https://registry.npmjs.org/html-element/-/html-element-2.1.1.tgz", 2420 + "integrity": "sha512-HqX1EEj/9TzXgyRBf0hF7geW8xUiH6kcyFsM+ReZqff9qdmDCazGYxrsi3ny4BEhc/nqT0jqT6fI3ZpxxJXNqg==", 2421 + "license": "MIT", 2422 + "dependencies": { 2423 + "class-list": "~0.1.1" 2424 + }, 2425 + "engines": { 2426 + "node": ">=4.2" 2427 + } 2428 + }, 2429 + "node_modules/hypercombo/node_modules/hyperscript": { 2430 + "version": "2.0.2", 2431 + "resolved": "https://registry.npmjs.org/hyperscript/-/hyperscript-2.0.2.tgz", 2432 + "integrity": "sha512-uggBAYfHFC5WyZQXlJ61BNZbPmJbschcvfYNhYdZWCp+0J8KYb5Du8nQuk8Ru+ThoCNb01B0tPtnTRqnrFBkVg==", 2433 + "license": "MIT", 2434 + "dependencies": { 2435 + "browser-split": "0.0.0", 2436 + "class-list": "~0.1.0", 2437 + "html-element": "^2.0.0" 2438 + } 2439 + }, 2440 + "node_modules/hypercrop": { 2441 + "version": "1.0.1", 2442 + "resolved": "https://registry.npmjs.org/hypercrop/-/hypercrop-1.0.1.tgz", 2443 + "integrity": "sha512-y07l6JWSJ6k02WD+7PdJNNWCUAv8864muzL6lrl1/QAv7LBifck6/CF0/oitWRYAHfoNbBtIdUCb7qLyvM5Wgw==", 2444 + "license": "MIT", 2445 + "dependencies": { 2446 + "hyperscript": "^1.4.7" 2447 + } 2448 + }, 2449 + "node_modules/hyperfile": { 2450 + "version": "1.1.1", 2451 + "resolved": "https://registry.npmjs.org/hyperfile/-/hyperfile-1.1.1.tgz", 2452 + "integrity": "sha512-XTRgT2XZRFgVxpXphgqVuec8DxEIGAdb8PNLibU2AOAW+8C059j/H4YefMS92I22ogQT4tWUInDf2yK0zNSG9g==", 2453 + "license": "MIT", 2454 + "dependencies": { 2455 + "hyperscript": "^1.4.7" 2456 + } 2457 + }, 2458 + "node_modules/hyperlightbox": { 2459 + "version": "0.1.3", 2460 + "resolved": "https://registry.npmjs.org/hyperlightbox/-/hyperlightbox-0.1.3.tgz", 2461 + "integrity": "sha512-r1JKOMJtmjsR/erwmLlxqXpuCjVqy/D4g0d9FmDxmZWVhBPs3t1yQWPxIPul6CLoGrWFlrYXWneYIsZCg6KPeg==", 2462 + "license": "MIT", 2463 + "dependencies": { 2464 + "hyperscript": "^1.4.7" 2465 + } 2466 + }, 2467 + "node_modules/hyperprogress": { 2468 + "version": "0.1.0", 2469 + "resolved": "https://registry.npmjs.org/hyperprogress/-/hyperprogress-0.1.0.tgz", 2470 + "integrity": "sha512-5VniZ4Kk7bcqcw7qqOuplIQiUB8pvBUSGaJoCa/opb/EdH6hfHwvVqRCmI+LE2EmIq1vDHq8X6mfnz1SgY9JXA==", 2471 + "license": "MIT" 2472 + }, 2473 + "node_modules/hyperquest": { 2474 + "version": "1.2.0", 2475 + "resolved": "https://registry.npmjs.org/hyperquest/-/hyperquest-1.2.0.tgz", 2476 + "integrity": "sha512-N6QwIYr/ENmsE3+0aNA/x8M+jHF0wedvc9ZiGAhg7KK6TxwtJTSR95b0invqaLFPqUrsngYUrc4LVmLtrl7kvw==", 2477 + "license": "MIT", 2478 + "optional": true, 2479 + "dependencies": { 2480 + "duplexer2": "~0.0.2", 2481 + "through2": "~0.6.3" 2482 + } 2483 + }, 2484 + "node_modules/hyperquest/node_modules/duplexer2": { 2485 + "version": "0.0.2", 2486 + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", 2487 + "integrity": "sha512-+AWBwjGadtksxjOQSFDhPNQbed7icNXApT4+2BNpsXzcCBiInq2H9XW0O8sfHFaPmnQRs7cg/P0fAr2IWQSW0g==", 2488 + "license": "BSD", 2489 + "optional": true, 2490 + "dependencies": { 2491 + "readable-stream": "~1.1.9" 2492 + } 2493 + }, 2494 + "node_modules/hyperquest/node_modules/readable-stream": { 2495 + "version": "1.1.14", 2496 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", 2497 + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", 2498 + "license": "MIT", 2499 + "optional": true, 2500 + "dependencies": { 2501 + "core-util-is": "~1.0.0", 2502 + "inherits": "~2.0.1", 2503 + "isarray": "0.0.1", 2504 + "string_decoder": "~0.10.x" 2505 + } 2506 + }, 2507 + "node_modules/hyperquest/node_modules/string_decoder": { 2508 + "version": "0.10.31", 2509 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 2510 + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", 2511 + "license": "MIT", 2512 + "optional": true 2513 + }, 2514 + "node_modules/hyperquest/node_modules/through2": { 2515 + "version": "0.6.5", 2516 + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", 2517 + "integrity": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==", 2518 + "license": "MIT", 2519 + "optional": true, 2520 + "dependencies": { 2521 + "readable-stream": ">=1.0.33-1 <1.1.0-0", 2522 + "xtend": ">=4.0.0 <4.1.0-0" 2523 + } 2524 + }, 2525 + "node_modules/hyperquest/node_modules/through2/node_modules/readable-stream": { 2526 + "version": "1.0.34", 2527 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", 2528 + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", 2529 + "license": "MIT", 2530 + "optional": true, 2531 + "dependencies": { 2532 + "core-util-is": "~1.0.0", 2533 + "inherits": "~2.0.1", 2534 + "isarray": "0.0.1", 2535 + "string_decoder": "~0.10.x" 2536 + } 2537 + }, 2538 + "node_modules/hyperscript": { 2539 + "version": "1.4.7", 2540 + "resolved": "https://registry.npmjs.org/hyperscript/-/hyperscript-1.4.7.tgz", 2541 + "integrity": "sha512-5/qa//3SJb60obSEb3MsCMIVMEtAtgnX73uQw96WvH7Zlx6v0b6h8WEk+FNXL+pRW6TSBjmC36P2h8hIjqujaw==", 2542 + "license": "MIT", 2543 + "dependencies": { 2544 + "browser-split": "0.0.0", 2545 + "class-list": "~0.1.0", 2546 + "html-element": "~1.3.0" 2547 + } 2548 + }, 2549 + "node_modules/hypertabs": { 2550 + "version": "3.0.3", 2551 + "resolved": "https://registry.npmjs.org/hypertabs/-/hypertabs-3.0.3.tgz", 2552 + "integrity": "sha512-pIwSU/t4r/h+OnYv2aAu9fGn4juoy6hKdVYbIJPtafXB9n3OwESgqbUnI6y+ZSAT77VvrAGbo8pP7riAml8IDw==", 2553 + "license": "MIT", 2554 + "dependencies": { 2555 + "hyperscript": "^1.4.7" 2556 + } 2557 + }, 2558 + "node_modules/ieee754": { 2559 + "version": "1.1.8", 2560 + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", 2561 + "integrity": "sha512-/aoyv2Nt7mGLnCAWzE0C1WH9Xd8ZsqR0f4Pjwxputi1JNm01+InyAYQotF4N+ulEIjbEsJo22NOHr+U/XEZ1Pw==", 2562 + "dev": true, 2563 + "license": "BSD-3-Clause" 2564 + }, 2565 + "node_modules/increment-buffer": { 2566 + "version": "1.0.0", 2567 + "resolved": "https://registry.npmjs.org/increment-buffer/-/increment-buffer-1.0.0.tgz", 2568 + "integrity": "sha512-IgOr5HpHN4nBRLB/q4ynnMtQSDYfbWMxpGKje/Llk5R26DrOlRQVV3fXkhuTA4XsEV9gMYnRDbfom1pcT61QZg==", 2569 + "license": "MIT" 2570 + }, 2571 + "node_modules/indexhtmlify": { 2572 + "version": "1.3.1", 2573 + "resolved": "https://registry.npmjs.org/indexhtmlify/-/indexhtmlify-1.3.1.tgz", 2574 + "integrity": "sha512-34IP9FW9k/YqFVwuFMx2/pVbryiI9EAJsfYy+OXU3IMbnlIenYBvRxLvPruQjKuTkqxdemeVar+gjkNB8NdExQ==", 2575 + "dev": true, 2576 + "license": "MIT", 2577 + "dependencies": { 2578 + "optimist": "~0.6.0", 2579 + "through2": "^0.4.1" 2580 + }, 2581 + "bin": { 2582 + "indexhtmlify": "index.js" 2583 + } 2584 + }, 2585 + "node_modules/indexhtmlify/node_modules/object-keys": { 2586 + "version": "0.4.0", 2587 + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", 2588 + "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==", 2589 + "dev": true, 2590 + "license": "MIT" 2591 + }, 2592 + "node_modules/indexhtmlify/node_modules/readable-stream": { 2593 + "version": "1.0.34", 2594 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", 2595 + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", 2596 + "dev": true, 2597 + "license": "MIT", 2598 + "dependencies": { 2599 + "core-util-is": "~1.0.0", 2600 + "inherits": "~2.0.1", 2601 + "isarray": "0.0.1", 2602 + "string_decoder": "~0.10.x" 2603 + } 2604 + }, 2605 + "node_modules/indexhtmlify/node_modules/string_decoder": { 2606 + "version": "0.10.31", 2607 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 2608 + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", 2609 + "dev": true, 2610 + "license": "MIT" 2611 + }, 2612 + "node_modules/indexhtmlify/node_modules/through2": { 2613 + "version": "0.4.2", 2614 + "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz", 2615 + "integrity": "sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ==", 2616 + "dev": true, 2617 + "license": "MIT", 2618 + "dependencies": { 2619 + "readable-stream": "~1.0.17", 2620 + "xtend": "~2.1.1" 2621 + } 2622 + }, 2623 + "node_modules/indexhtmlify/node_modules/xtend": { 2624 + "version": "2.1.2", 2625 + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", 2626 + "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", 2627 + "dev": true, 2628 + "dependencies": { 2629 + "object-keys": "~0.4.0" 2630 + }, 2631 + "engines": { 2632 + "node": ">=0.4" 2633 + } 2634 + }, 2635 + "node_modules/indexof": { 2636 + "version": "0.0.1", 2637 + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", 2638 + "integrity": "sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==" 2639 + }, 2640 + "node_modules/inflight": { 2641 + "version": "1.0.5", 2642 + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz", 2643 + "integrity": "sha512-ZOr/ZZjWvVTQML+yBDtsvuVlC9zkWqmaZVZTWP7XdfMTmoO3qjIP26vjfDKDJ6zA9ZffGlnm6Ry5t965o+WUgA==", 2644 + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", 2645 + "devOptional": true, 2646 + "license": "ISC", 2647 + "dependencies": { 2648 + "once": "^1.3.0", 2649 + "wrappy": "1" 2650 + } 2651 + }, 2652 + "node_modules/inherits": { 2653 + "version": "2.0.3", 2654 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 2655 + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", 2656 + "license": "ISC" 2657 + }, 2658 + "node_modules/ini": { 2659 + "version": "1.3.4", 2660 + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", 2661 + "integrity": "sha512-VUA7WAWNCWfm6/8f9kAb8Y6iGBWnmCfgFS5dTrv2C38LLm1KUmpY388mCVCJCsMKQomvOQ1oW8/edXdChd9ZXQ==", 2662 + "deprecated": "Please update to ini >=1.3.6 to avoid a prototype pollution issue", 2663 + "license": "ISC", 2664 + "engines": { 2665 + "node": "*" 2666 + } 2667 + }, 2668 + "node_modules/inline-source-map": { 2669 + "version": "0.6.2", 2670 + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", 2671 + "integrity": "sha512-0mVWSSbNDvedDWIN4wxLsdPM4a7cIPcpyMxj3QZ406QRwQ6ePGB1YIHxVPjqpcUGbWQ5C+nHTwGNWAGvt7ggVA==", 2672 + "dev": true, 2673 + "license": "MIT", 2674 + "dependencies": { 2675 + "source-map": "~0.5.3" 2676 + } 2677 + }, 2678 + "node_modules/insert-module-globals": { 2679 + "version": "7.0.1", 2680 + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.1.tgz", 2681 + "integrity": "sha512-tjMZcZBS2NtqlX87Y6mlEIUSdftJ2VxlVXSQkrJNBUUB7xgnRIgdVO7nM9DpNl58U1Nejm+ahTjMEQiUpjvA+w==", 2682 + "dev": true, 2683 + "license": "MIT", 2684 + "dependencies": { 2685 + "combine-source-map": "~0.7.1", 2686 + "concat-stream": "~1.5.1", 2687 + "is-buffer": "^1.1.0", 2688 + "JSONStream": "^1.0.3", 2689 + "lexical-scope": "^1.2.0", 2690 + "process": "~0.11.0", 2691 + "through2": "^2.0.0", 2692 + "xtend": "^4.0.0" 2693 + }, 2694 + "bin": { 2695 + "insert-module-globals": "bin/cmd.js" 2696 + } 2697 + }, 2698 + "node_modules/insert-module-globals/node_modules/concat-stream": { 2699 + "version": "1.5.2", 2700 + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", 2701 + "integrity": "sha512-H6xsIBfQ94aESBG8jGHXQ7i5AEpy5ZeVaLDOisDICiTCKpqEfr34/KmTrspKQNoLKNu9gTkovlpQcUi630AKiQ==", 2702 + "dev": true, 2703 + "engines": [ 2704 + "node >= 0.8" 2705 + ], 2706 + "license": "MIT", 2707 + "dependencies": { 2708 + "inherits": "~2.0.1", 2709 + "readable-stream": "~2.0.0", 2710 + "typedarray": "~0.0.5" 2711 + } 2712 + }, 2713 + "node_modules/insert-module-globals/node_modules/isarray": { 2714 + "version": "1.0.0", 2715 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 2716 + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", 2717 + "dev": true, 2718 + "license": "MIT" 2719 + }, 2720 + "node_modules/insert-module-globals/node_modules/readable-stream": { 2721 + "version": "2.0.6", 2722 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", 2723 + "integrity": "sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==", 2724 + "dev": true, 2725 + "license": "MIT", 2726 + "dependencies": { 2727 + "core-util-is": "~1.0.0", 2728 + "inherits": "~2.0.1", 2729 + "isarray": "~1.0.0", 2730 + "process-nextick-args": "~1.0.6", 2731 + "string_decoder": "~0.10.x", 2732 + "util-deprecate": "~1.0.1" 2733 + } 2734 + }, 2735 + "node_modules/insert-module-globals/node_modules/string_decoder": { 2736 + "version": "0.10.31", 2737 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 2738 + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", 2739 + "dev": true, 2740 + "license": "MIT" 2741 + }, 2742 + "node_modules/ip": { 2743 + "version": "1.1.3", 2744 + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.3.tgz", 2745 + "integrity": "sha512-M7h6UQnULysP4/3m97qCEAQ0GwgMv6JEr7dPJ3Rd3ttfr6LIiSBxe46TGixBFDgfQaa6MIKj30tDvH+pImI5VA==", 2746 + "license": "MIT" 2747 + }, 2748 + "node_modules/is": { 2749 + "version": "3.1.0", 2750 + "resolved": "https://registry.npmjs.org/is/-/is-3.1.0.tgz", 2751 + "integrity": "sha512-GvIjiMYxR9fgscrtCvSK31+0gNiFZrp01qlbaD2ed91FQc+0YwT33ncK5iUmPRi2R6ULjSPeIJx6JpelBoanpQ==", 2752 + "license": "MIT", 2753 + "optional": true, 2754 + "engines": { 2755 + "node": "*" 2756 + } 2757 + }, 2758 + "node_modules/is-buffer": { 2759 + "version": "1.1.4", 2760 + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.4.tgz", 2761 + "integrity": "sha512-LdKAPZcV+EfT6PvN90Un/Rnn1g8cL1BfzEBdz6d3Y6CUzMyUVWHewXxyuiNFkLwRKgpDMYHrocdqjMsYTDkOow==", 2762 + "deprecated": "This version of 'is-buffer' is out-of-date. You must update to v1.1.6 or newer", 2763 + "dev": true, 2764 + "license": "MIT" 2765 + }, 2766 + "node_modules/is-canonical-base64": { 2767 + "version": "1.1.1", 2768 + "resolved": "https://registry.npmjs.org/is-canonical-base64/-/is-canonical-base64-1.1.1.tgz", 2769 + "integrity": "sha512-o6t/DwgEapC0bsloqtegAQyZzQXaQ5+8fzsyf2KmLqupC2ifLFq/lMQiFCJeGpdSrK1o6GL+WW2lRU050lLlFg==", 2770 + "license": "MIT" 2771 + }, 2772 + "node_modules/is-core-module": { 2773 + "version": "2.16.1", 2774 + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", 2775 + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", 2776 + "dev": true, 2777 + "license": "MIT", 2778 + "dependencies": { 2779 + "hasown": "^2.0.2" 2780 + }, 2781 + "engines": { 2782 + "node": ">= 0.4" 2783 + }, 2784 + "funding": { 2785 + "url": "https://github.com/sponsors/ljharb" 2786 + } 2787 + }, 2788 + "node_modules/is-electron": { 2789 + "version": "2.0.0", 2790 + "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.0.0.tgz", 2791 + "integrity": "sha512-VDe6eanPIpm1XBj1VDE7yaeNCW6LDcrFOxo3H2pV0Evp0y0drgUTcGUDDV8HGlR3DN5/I93duMdUJy0je1TvQw==", 2792 + "license": "MIT" 2793 + }, 2794 + "node_modules/is-fullwidth-code-point": { 2795 + "version": "1.0.0", 2796 + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 2797 + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", 2798 + "license": "MIT", 2799 + "dependencies": { 2800 + "number-is-nan": "^1.0.0" 2801 + }, 2802 + "engines": { 2803 + "node": ">=0.10.0" 2804 + } 2805 + }, 2806 + "node_modules/is-my-json-valid": { 2807 + "version": "2.15.0", 2808 + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz", 2809 + "integrity": "sha512-32CTy9FyiPq2qLVcb5Jh3pScUj5aLP0NRqACYT1bkJs5zIJsfzcsMs+W1sk4p5FEY5r5CuSjJ1VuYKZsA32ohg==", 2810 + "deprecated": "catastrophic backtracking in regexes could potentially lead to REDOS attack, upgrade to 2.17.2 as soon as possible", 2811 + "license": "MIT", 2812 + "optional": true, 2813 + "dependencies": { 2814 + "generate-function": "^2.0.0", 2815 + "generate-object-property": "^1.1.0", 2816 + "jsonpointer": "^4.0.0", 2817 + "xtend": "^4.0.0" 2818 + } 2819 + }, 2820 + "node_modules/is-property": { 2821 + "version": "1.0.2", 2822 + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", 2823 + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", 2824 + "license": "MIT", 2825 + "optional": true 2826 + }, 2827 + "node_modules/is-typedarray": { 2828 + "version": "1.0.0", 2829 + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 2830 + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", 2831 + "license": "MIT", 2832 + "optional": true 2833 + }, 2834 + "node_modules/is-valid-domain": { 2835 + "version": "0.0.2", 2836 + "resolved": "https://registry.npmjs.org/is-valid-domain/-/is-valid-domain-0.0.2.tgz", 2837 + "integrity": "sha512-cu39FMag8bRXovdSr/Y7YqaE/2b4ItrJij/fPPDYo89JVn21C3LR6Buatf0hYAcqimLZs0POodwHE4WDihLrqA==", 2838 + "license": "MIT" 2839 + }, 2840 + "node_modules/is-visible": { 2841 + "version": "2.1.1", 2842 + "resolved": "https://registry.npmjs.org/is-visible/-/is-visible-2.1.1.tgz", 2843 + "integrity": "sha512-oddKCOHCwcZWwbbY9aYkJWMlFMbrqU0lN8S7AU3VCQfcczD3FrpMfeYa0lTq/n6SUsub0U8MrJKDMU9/s0mLaw==", 2844 + "license": "MIT", 2845 + "dependencies": { 2846 + "iselement": "^1.1.3", 2847 + "style-properties": "^1.3.1" 2848 + } 2849 + }, 2850 + "node_modules/isarray": { 2851 + "version": "0.0.1", 2852 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 2853 + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", 2854 + "license": "MIT" 2855 + }, 2856 + "node_modules/iselement": { 2857 + "version": "1.1.4", 2858 + "resolved": "https://registry.npmjs.org/iselement/-/iselement-1.1.4.tgz", 2859 + "integrity": "sha512-4Q519eWmbHO1pbimiz7H1iJRUHVmAmfh0viSsUD+oAwVO4ntZt7gpf8i8AShVBTyOvRTZNYNBpUxOIvwZR+ffw==", 2860 + "license": "MIT" 2861 + }, 2862 + "node_modules/isexe": { 2863 + "version": "1.1.2", 2864 + "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz", 2865 + "integrity": "sha512-d2eJzK691yZwPHcv1LbeAOa91yMJ9QmfTgSO1oXB65ezVhXQsxBac2vEB4bMVms9cGzaA99n6V2viHMq82VLDw==", 2866 + "license": "ISC", 2867 + "optional": true 2868 + }, 2869 + "node_modules/isstream": { 2870 + "version": "0.1.2", 2871 + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 2872 + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", 2873 + "license": "MIT", 2874 + "optional": true 2875 + }, 2876 + "node_modules/jodid25519": { 2877 + "version": "1.0.2", 2878 + "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", 2879 + "integrity": "sha512-b2Zna/wGIyTzi0Gemg27JYUaRyTyBETw5GnqyVQMr71uojOYMrgkD2+Px3bG2ZFi7/zTUXJSDoGoBOhMixq7tg==", 2880 + "license": "MIT", 2881 + "optional": true, 2882 + "dependencies": { 2883 + "jsbn": "~0.1.0" 2884 + } 2885 + }, 2886 + "node_modules/jsbn": { 2887 + "version": "0.1.0", 2888 + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz", 2889 + "integrity": "sha512-nSJUKpgMhIK31baMn1+o+ykqan4LBGpeoQguOposJRYzectoBq94PDeRu8wwaJwHMoD7FTGjILdRyWZRuL9pAw==", 2890 + "license": "BSD", 2891 + "optional": true 2892 + }, 2893 + "node_modules/json-buffer": { 2894 + "version": "2.0.11", 2895 + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-2.0.11.tgz", 2896 + "integrity": "sha512-Wu4/hxSZX7Krzjor+sZHWaRau6Be4WQHlrkl3v8cmxRBBewF2TotlgHUedKQJyFiUyFxnK/ZlRYnR9UNVZ7pkg==", 2897 + "license": "MIT" 2898 + }, 2899 + "node_modules/json-schema": { 2900 + "version": "0.2.3", 2901 + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", 2902 + "integrity": "sha512-a3xHnILGMtk+hDOqNwHzF6e2fNbiMrXZvxKQiEv2MlgQP+pjIOzqAmKYD2mDpXYE/44M7g+n9p2bKkYWDUcXCQ==", 2903 + "optional": true 2904 + }, 2905 + "node_modules/json-stable-stringify": { 2906 + "version": "0.0.1", 2907 + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", 2908 + "integrity": "sha512-nKtD/Qxm7tWdZqJoldEC7fF0S41v0mWbeaXG3637stOWfyGxTgWTYE2wtfKmjzpvxv2MA2xzxsXOIiwUpkX6Qw==", 2909 + "dev": true, 2910 + "license": "MIT", 2911 + "dependencies": { 2912 + "jsonify": "~0.0.0" 2913 + } 2914 + }, 2915 + "node_modules/json-stringify-safe": { 2916 + "version": "5.0.1", 2917 + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 2918 + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", 2919 + "license": "ISC", 2920 + "optional": true 2921 + }, 2922 + "node_modules/jsonify": { 2923 + "version": "0.0.0", 2924 + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", 2925 + "integrity": "sha512-trvBk1ki43VZptdBI5rIlG4YOzyeH/WefQt5rj1grasPn4iiZWKet8nkgc4GlsAylaztn0qZfUYOiTsASJFdNA==", 2926 + "dev": true, 2927 + "license": "Public Domain", 2928 + "engines": { 2929 + "node": "*" 2930 + } 2931 + }, 2932 + "node_modules/jsonist": { 2933 + "version": "1.2.0", 2934 + "resolved": "https://registry.npmjs.org/jsonist/-/jsonist-1.2.0.tgz", 2935 + "integrity": "sha512-qEH2OvbVeHXh0T/elR24TEIy7MB+nbYAwNvpsbAcIzNtVYZ13/mVk0o3ENLu8AUB/ZhIbrmDpyi6sysYUIElpA==", 2936 + "license": "MIT", 2937 + "optional": true, 2938 + "dependencies": { 2939 + "bl": "~1.0.0", 2940 + "hyperquest": "~1.2.0", 2941 + "json-stringify-safe": "~5.0.0", 2942 + "xtend": "~4.0.0" 2943 + } 2944 + }, 2945 + "node_modules/jsonparse": { 2946 + "version": "1.2.0", 2947 + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.2.0.tgz", 2948 + "integrity": "sha512-LkDEYtKnPFI9hQ/IURETe6F1dUH80cbRkaF6RaViSwoSNPwaxQpi6TgJGvJKyLQ2/9pQW+XCxK3hBoR44RAjkg==", 2949 + "dev": true, 2950 + "engines": [ 2951 + "node >= 0.2.0" 2952 + ], 2953 + "license": "MIT" 2954 + }, 2955 + "node_modules/jsonpointer": { 2956 + "version": "4.0.0", 2957 + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.0.tgz", 2958 + "integrity": "sha512-BSyv7u/pT7TCkuAi6PK67D/qa8Q1cDCrh0SHkacQWs7yg2X84pz8b7SbBr3FLNrd8NDAUlInT+DNbR1N4RsT/A==", 2959 + "license": "MIT", 2960 + "optional": true, 2961 + "engines": { 2962 + "node": ">=0.10.0" 2963 + } 2964 + }, 2965 + "node_modules/JSONStream": { 2966 + "version": "1.2.1", 2967 + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.2.1.tgz", 2968 + "integrity": "sha512-yLfH7+rxS2SHQAUgnBMoBGmXHB6NlYl46SazFADcom/wVBD0Idb2iP6CHvih8OZe4R98f6bJ2/XM+nBLxK69Kg==", 2969 + "dev": true, 2970 + "license": "(MIT OR Apache-2.0)", 2971 + "dependencies": { 2972 + "jsonparse": "^1.2.0", 2973 + "through": ">=2.2.7 <3" 2974 + }, 2975 + "bin": { 2976 + "JSONStream": "index.js" 2977 + }, 2978 + "engines": { 2979 + "node": "*" 2980 + } 2981 + }, 2982 + "node_modules/jsprim": { 2983 + "version": "1.3.1", 2984 + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.1.tgz", 2985 + "integrity": "sha512-bxYB8xe0/KIpYlNbZcA9e+lNquVmdPUGmZFNIQiAHPxkUDK2THIq3R+7VVgnv3UkZ63BrJ10+IeNZuew4Pso9Q==", 2986 + "engines": [ 2987 + "node >=0.6.0" 2988 + ], 2989 + "license": "MIT", 2990 + "optional": true, 2991 + "dependencies": { 2992 + "extsprintf": "1.0.2", 2993 + "json-schema": "0.2.3", 2994 + "verror": "1.3.6" 2995 + } 2996 + }, 2997 + "node_modules/konva": { 2998 + "version": "1.0.3", 2999 + "resolved": "https://registry.npmjs.org/konva/-/konva-1.0.3.tgz", 3000 + "integrity": "sha512-PIRcWGh3LWXGtA3vH6cHAy604bzOckNIUBBQN1onBYPvfj9a73DgrVlqe5RqjPD3ChdfDAs2GuVE97jJpfRU7A==", 3001 + "license": "MIT" 3002 + }, 3003 + "node_modules/kvgraph": { 3004 + "version": "0.1.0", 3005 + "resolved": "https://registry.npmjs.org/kvgraph/-/kvgraph-0.1.0.tgz", 3006 + "integrity": "sha512-A7Cn9SNXC3G+MnymR8rYg5k9qxKq+RRBUpWzKmuDB/2Dmvhl4jFt3B0kEuwR9D5DgkitfwqKy75wILepoqQKcg==", 3007 + "license": "Fair" 3008 + }, 3009 + "node_modules/labeled-stream-splicer": { 3010 + "version": "2.0.0", 3011 + "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz", 3012 + "integrity": "sha512-/6dSMZcWGSgSny5DzaW9L3mOIqhz6B/CCjmuszf8tfy/puNSNCJfCDAZGXZTrOdyNnIWNB1PR+bfrxHDPQwhLw==", 3013 + "dev": true, 3014 + "license": "MIT", 3015 + "dependencies": { 3016 + "inherits": "^2.0.1", 3017 + "isarray": "~0.0.1", 3018 + "stream-splicer": "^2.0.0" 3019 + } 3020 + }, 3021 + "node_modules/letiny-core": { 3022 + "version": "2.0.3", 3023 + "resolved": "https://registry.npmjs.org/letiny-core/-/letiny-core-2.0.3.tgz", 3024 + "integrity": "sha512-xOpwakxcZpDrArZe8mJuWSwc4qtk4RhWbUy37S+ah4adF8TKa9ftHA/k9wvEkDuNhZa5S0AVxxYnMITCZRwj9g==", 3025 + "license": "MPL-2.0", 3026 + "optional": true, 3027 + "dependencies": { 3028 + "node-forge": "^0.6.38", 3029 + "request": "^2.55.0", 3030 + "rsa-compat": "^1.2.3" 3031 + }, 3032 + "optionalDependencies": { 3033 + "ursa": "^0.9.1" 3034 + } 3035 + }, 3036 + "node_modules/letsencrypt": { 3037 + "version": "1.5.8", 3038 + "resolved": "https://registry.npmjs.org/letsencrypt/-/letsencrypt-1.5.8.tgz", 3039 + "integrity": "sha512-Oz5jOtYA3Up3Drud5r4n9Zr2+n3M8e8QHjqHMaGrNxAoU2RxoY01fPkY6Prb7rSr/7G98e0lmBSjk7vnuAJj7A==", 3040 + "deprecated": "letsencrypt has been renamed to greenlock. Please find it at npm greenlock", 3041 + "license": "(MIT OR Apache-2.0)", 3042 + "optional": true, 3043 + "dependencies": { 3044 + "asn1js": "^1.2.12", 3045 + "bluebird": "^3.0.6", 3046 + "homedir": "^0.6.0", 3047 + "letiny-core": "^2.0.1", 3048 + "mkdirp": "^0.5.1", 3049 + "node.extend": "^1.1.5", 3050 + "pkijs": "^1.3.27", 3051 + "pyconf": "^1.1.2", 3052 + "request": "^2.67.0", 3053 + "rsa-compat": "^1.2.1", 3054 + "safe-replace": "^1.0.2" 3055 + } 3056 + }, 3057 + "node_modules/letsencrypt-express": { 3058 + "version": "1.2.0", 3059 + "resolved": "https://registry.npmjs.org/letsencrypt-express/-/letsencrypt-express-1.2.0.tgz", 3060 + "integrity": "sha512-G4ierluY4zsE3SURjeY+irkvhlXoE8md9xxgjt9fC8o0Plzw1WOn6I0oCuBuIFuP9jItypUEYtngP1+ZizcxyQ==", 3061 + "deprecated": "letsencrypt-express has been renamed to greenlock-express and will now be maintained as such.", 3062 + "license": "(MIT OR Apache-2.0)", 3063 + "optional": true, 3064 + "dependencies": { 3065 + "homedir": "^0.6.0", 3066 + "letsencrypt": "^1.5.0", 3067 + "localhost.daplie.com-certificates": "^1.1.2", 3068 + "mkdirp": "^0.5.1" 3069 + }, 3070 + "bin": { 3071 + "letsencrypt-express": "bin/lex.js", 3072 + "lex": "bin/lex.js" 3073 + } 3074 + }, 3075 + "node_modules/level": { 3076 + "version": "1.7.0", 3077 + "resolved": "https://registry.npmjs.org/level/-/level-1.7.0.tgz", 3078 + "integrity": "sha512-Ev92KRZGGJiKs86pK4v9XwEdOxrzXfD5bzaxbwdyNokyXK4WBd0V8OW/KD0rsgKTicp0ocja6Un7hCwYNDy+0g==", 3079 + "license": "MIT", 3080 + "dependencies": { 3081 + "level-packager": "~1.2.0", 3082 + "leveldown": "~1.7.0" 3083 + } 3084 + }, 3085 + "node_modules/level-codec": { 3086 + "version": "6.1.0", 3087 + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-6.1.0.tgz", 3088 + "integrity": "sha512-pPceZJpp/7HKN8R4oaSoHg2qxQPwo/d+RG+yeBBJQ5TI+rq9P5WWGMlpeXDTR/0QeXcGJstdRLYp/GGxKTrqOQ==", 3089 + "deprecated": "Superseded by level-transcoder (https://github.com/Level/community#faq)", 3090 + "license": "MIT" 3091 + }, 3092 + "node_modules/level-errors": { 3093 + "version": "1.0.4", 3094 + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.0.4.tgz", 3095 + "integrity": "sha512-DEwrtBVEsv2SJY4VB1zsg9gG3ZheXjl52bmsXG7/jE7XM5sqxjaxxej9AaMqmGoxjsr5o0khYuzZTEhcgBQtyw==", 3096 + "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", 3097 + "license": "MIT", 3098 + "dependencies": { 3099 + "errno": "~0.1.1" 3100 + } 3101 + }, 3102 + "node_modules/level-iterator-stream": { 3103 + "version": "1.3.1", 3104 + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz", 3105 + "integrity": "sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw==", 3106 + "license": "MIT", 3107 + "dependencies": { 3108 + "inherits": "^2.0.1", 3109 + "level-errors": "^1.0.3", 3110 + "readable-stream": "^1.0.33", 3111 + "xtend": "^4.0.0" 3112 + } 3113 + }, 3114 + "node_modules/level-iterator-stream/node_modules/readable-stream": { 3115 + "version": "1.1.14", 3116 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", 3117 + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", 3118 + "license": "MIT", 3119 + "dependencies": { 3120 + "core-util-is": "~1.0.0", 3121 + "inherits": "~2.0.1", 3122 + "isarray": "0.0.1", 3123 + "string_decoder": "~0.10.x" 3124 + } 3125 + }, 3126 + "node_modules/level-iterator-stream/node_modules/string_decoder": { 3127 + "version": "0.10.31", 3128 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 3129 + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", 3130 + "license": "MIT" 3131 + }, 3132 + "node_modules/level-packager": { 3133 + "version": "1.2.0", 3134 + "resolved": "https://registry.npmjs.org/level-packager/-/level-packager-1.2.0.tgz", 3135 + "integrity": "sha512-oDyGwYgTAz9/08Q32M+S869wyBJ+GxV40nra+ihp9I+TcxIKm04h5Ievy6/d1Ljwjw+x4IOmJ6Xs4djBIJ8FSQ==", 3136 + "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", 3137 + "license": "MIT", 3138 + "dependencies": { 3139 + "levelup": "~1.3.0" 3140 + } 3141 + }, 3142 + "node_modules/level-post": { 3143 + "version": "1.0.5", 3144 + "resolved": "https://registry.npmjs.org/level-post/-/level-post-1.0.5.tgz", 3145 + "integrity": "sha512-A2VlgnSWjXuMnk4CAw0aWJnQZyrHcTd9Q34/cy23z3eD0QhaNdP/5zFd4wT0ALbzqfL6V3LLfqvu27A72s7n0A==", 3146 + "license": "MIT", 3147 + "dependencies": { 3148 + "ltgt": "^2.1.2" 3149 + } 3150 + }, 3151 + "node_modules/leveldown": { 3152 + "version": "1.7.2", 3153 + "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-1.7.2.tgz", 3154 + "integrity": "sha512-SV57VxeejUnuUodKRmKQ2JJzGkHl4u6+8cpiWOIUR1tUrLn8FeeTiU2t4jT/P5dE1ORYArfgoXE2Vfzrb6nOWQ==", 3155 + "deprecated": "Superseded by classic-level (https://github.com/Level/community#faq)", 3156 + "hasInstallScript": true, 3157 + "license": "MIT", 3158 + "dependencies": { 3159 + "abstract-leveldown": "~2.6.1", 3160 + "bindings": "~1.2.1", 3161 + "fast-future": "~1.0.2", 3162 + "nan": "~2.6.1", 3163 + "prebuild-install": "^2.1.0" 3164 + } 3165 + }, 3166 + "node_modules/levelup": { 3167 + "version": "1.3.3", 3168 + "resolved": "https://registry.npmjs.org/levelup/-/levelup-1.3.3.tgz", 3169 + "integrity": "sha512-3umRkkE0PuPT5tQFY234TZFg2+KHTOUdD2q5x5eVtVPteB4TpSOQRIkVMndGalp92AY6gXrcFCQxVSMXQZzOjw==", 3170 + "deprecated": "Superseded by abstract-level (https://github.com/Level/community#faq)", 3171 + "license": "MIT", 3172 + "dependencies": { 3173 + "deferred-leveldown": "~1.2.1", 3174 + "level-codec": "~6.1.0", 3175 + "level-errors": "~1.0.3", 3176 + "level-iterator-stream": "~1.3.0", 3177 + "prr": "~1.0.1", 3178 + "semver": "~5.1.0", 3179 + "xtend": "~4.0.0" 3180 + } 3181 + }, 3182 + "node_modules/levelup/node_modules/semver": { 3183 + "version": "5.1.1", 3184 + "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.1.tgz", 3185 + "integrity": "sha512-bNx9Zdbi1OUN62PbKeG4IgGG8YILX/nkHJ0NQEBwg5FmX8qTJfqhYd3reqkm0DxHCC8nkazb6UjNiBSHCBWVtA==", 3186 + "license": "ISC", 3187 + "bin": { 3188 + "semver": "bin/semver" 3189 + } 3190 + }, 3191 + "node_modules/lexical-scope": { 3192 + "version": "1.2.0", 3193 + "resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz", 3194 + "integrity": "sha512-ntJ8IcBCuKwudML7vAuT/L0aIMU0+9vO25K4CjLPYgzf1NZ0bAhJJBZrvkO+oUGgKcbdkH8UZdRsaEg+wULLRw==", 3195 + "dev": true, 3196 + "license": "MIT", 3197 + "dependencies": { 3198 + "astw": "^2.0.0" 3199 + } 3200 + }, 3201 + "node_modules/libnested": { 3202 + "version": "1.5.2", 3203 + "resolved": "https://registry.npmjs.org/libnested/-/libnested-1.5.2.tgz", 3204 + "integrity": "sha512-DbiwHL8454goYRp5Xn9vUA5XU6x8rNh8BmZ7ywSTUhVBIiDS7ev/FT6+AwU2/ZKW2jEOC7WKhpkJfExaQwosRA==", 3205 + "license": "MIT" 3206 + }, 3207 + "node_modules/libsodium": { 3208 + "version": "0.2.12", 3209 + "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.2.12.tgz", 3210 + "integrity": "sha512-Jk86VGDdn8lFVltGjHbNiXjlJAIqu37VmXmIh2B0D8IZWuWZhjXBM78TRFVz0oneJIYTfusJT+wWNJ30WG2RFw==", 3211 + "license": "ISC" 3212 + }, 3213 + "node_modules/libsodium-wrappers": { 3214 + "version": "0.2.12", 3215 + "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.2.12.tgz", 3216 + "integrity": "sha512-kv+7+E2Qmi3OlCeGjgXcINjGtrnUhkqQGBj43/feVpAYQ6fTqh6cxwVdPXzEXDHrzbc0IVH3wGiTPzPOvGvPPA==", 3217 + "license": "ISC", 3218 + "dependencies": { 3219 + "libsodium": "0.2.12" 3220 + } 3221 + }, 3222 + "node_modules/localhost.daplie.com-certificates": { 3223 + "version": "1.2.3", 3224 + "resolved": "https://registry.npmjs.org/localhost.daplie.com-certificates/-/localhost.daplie.com-certificates-1.2.3.tgz", 3225 + "integrity": "sha512-8kmWJPMMn9JwNWHHHlqbcZfYLwumazAabk21A9fTIhfanwJp9oTj44wXpmgada6BBZG8r3RO8zf3wxAlslj7HQ==", 3226 + "deprecated": "this package has been deprecated", 3227 + "license": "Apache-2.0", 3228 + "optional": true 3229 + }, 3230 + "node_modules/lodash.memoize": { 3231 + "version": "3.0.4", 3232 + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", 3233 + "integrity": "sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==", 3234 + "dev": true, 3235 + "license": "MIT" 3236 + }, 3237 + "node_modules/lodash.pad": { 3238 + "version": "4.5.1", 3239 + "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz", 3240 + "integrity": "sha512-mvUHifnLqM+03YNzeTBS1/Gr6JRFjd3rRx88FHWUvamVaT9k2O/kXha3yBSOwB9/DTQrSTLJNHvLBBt2FdX7Mg==", 3241 + "license": "MIT", 3242 + "optional": true 3243 + }, 3244 + "node_modules/lodash.padend": { 3245 + "version": "4.6.1", 3246 + "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", 3247 + "integrity": "sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw==", 3248 + "license": "MIT", 3249 + "optional": true 3250 + }, 3251 + "node_modules/lodash.padstart": { 3252 + "version": "4.6.1", 3253 + "resolved": "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz", 3254 + "integrity": "sha512-sW73O6S8+Tg66eY56DBk85aQzzUJDtpoXFBgELMd5P/SotAguo+1kYO6RuYgXxA4HJH3LFTFPASX6ET6bjfriw==", 3255 + "license": "MIT", 3256 + "optional": true 3257 + }, 3258 + "node_modules/looper": { 3259 + "version": "3.0.0", 3260 + "resolved": "https://registry.npmjs.org/looper/-/looper-3.0.0.tgz", 3261 + "integrity": "sha512-LJ9wplN/uSn72oJRsXTx+snxPet5c8XiZmOKCm906NVYu+ag6SB6vUcnJcWxgnl2NfbIyeobAn7Bwv6xRj2XJg==", 3262 + "license": "MIT" 3263 + }, 3264 + "node_modules/ltgt": { 3265 + "version": "2.2.1", 3266 + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", 3267 + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", 3268 + "license": "MIT" 3269 + }, 3270 + "node_modules/map-filter-reduce": { 3271 + "version": "3.0.2", 3272 + "resolved": "https://registry.npmjs.org/map-filter-reduce/-/map-filter-reduce-3.0.2.tgz", 3273 + "integrity": "sha512-UfkKV1zgBsNJ2PdUpf/fEdoUopKL+U1B+lpW3YQbl49hMW2ZLrzYdY6/99q79HmFnR22jXVkS4LIvaFqy+KYIA==", 3274 + "license": "MIT", 3275 + "dependencies": { 3276 + "binary-search": "^1.2.0", 3277 + "pull-sink-through": "0.0.0", 3278 + "pull-stream": "^3.4.3", 3279 + "typewiselite": "^1.0.0" 3280 + } 3281 + }, 3282 + "node_modules/math-intrinsics": { 3283 + "version": "1.1.0", 3284 + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", 3285 + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", 3286 + "dev": true, 3287 + "license": "MIT", 3288 + "engines": { 3289 + "node": ">= 0.4" 3290 + } 3291 + }, 3292 + "node_modules/miller-rabin": { 3293 + "version": "4.0.0", 3294 + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", 3295 + "integrity": "sha512-aaZr5VprJSt03eVBJEsG+LOI2ccb/j+DXrnme/z/2M2+K9TRM7IY0+Csko/8dYF3XlUHvgPhrcDZfOAHXYqiZg==", 3296 + "dev": true, 3297 + "license": "MIT", 3298 + "dependencies": { 3299 + "bn.js": "^4.0.0", 3300 + "brorand": "^1.0.1" 3301 + }, 3302 + "bin": { 3303 + "miller-rabin": "bin/miller-rabin" 3304 + } 3305 + }, 3306 + "node_modules/mime-db": { 3307 + "version": "1.24.0", 3308 + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.24.0.tgz", 3309 + "integrity": "sha512-0XGpuLCNPqkv3vYiRjh1w6h4RbIGWyCh8OnXejta9INkFX0M8ENYth8O0As8rSGDxzEO1PafhiaqQdtqhtA2lw==", 3310 + "license": "MIT", 3311 + "engines": { 3312 + "node": ">= 0.6" 3313 + } 3314 + }, 3315 + "node_modules/mime-types": { 3316 + "version": "2.1.12", 3317 + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.12.tgz", 3318 + "integrity": "sha512-irQD8Ww11AaU8vbCRjMuaq4huvb2ITxVg/VDBrvf8keFtbWZ3zbGO0tvsCMbD7JlR8mOYw0WbAqi4sL8KGUd5w==", 3319 + "license": "MIT", 3320 + "dependencies": { 3321 + "mime-db": "~1.24.0" 3322 + }, 3323 + "engines": { 3324 + "node": ">= 0.6" 3325 + } 3326 + }, 3327 + "node_modules/mimic-response": { 3328 + "version": "1.0.1", 3329 + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", 3330 + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", 3331 + "license": "MIT", 3332 + "engines": { 3333 + "node": ">=4" 3334 + } 3335 + }, 3336 + "node_modules/min-document": { 3337 + "version": "2.19.0", 3338 + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", 3339 + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", 3340 + "dependencies": { 3341 + "dom-walk": "^0.1.0" 3342 + } 3343 + }, 3344 + "node_modules/minimalistic-assert": { 3345 + "version": "1.0.0", 3346 + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", 3347 + "integrity": "sha512-0xPOgDvW9sfA9OrHHCuSRZhj/e+L82RGLFf0b9EsvagmQpGnRYtztTIuq1JR3biVE7u+Mu2jWZqSxvZ8CaMrBQ==", 3348 + "dev": true, 3349 + "license": "ISC" 3350 + }, 3351 + "node_modules/minimatch": { 3352 + "version": "3.1.2", 3353 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 3354 + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 3355 + "devOptional": true, 3356 + "license": "ISC", 3357 + "dependencies": { 3358 + "brace-expansion": "^1.1.7" 3359 + }, 3360 + "engines": { 3361 + "node": "*" 3362 + } 3363 + }, 3364 + "node_modules/minimist": { 3365 + "version": "1.2.8", 3366 + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", 3367 + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", 3368 + "license": "MIT", 3369 + "funding": { 3370 + "url": "https://github.com/sponsors/ljharb" 3371 + } 3372 + }, 3373 + "node_modules/mkdirp": { 3374 + "version": "0.5.1", 3375 + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 3376 + "integrity": "sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==", 3377 + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", 3378 + "license": "MIT", 3379 + "dependencies": { 3380 + "minimist": "0.0.8" 3381 + }, 3382 + "bin": { 3383 + "mkdirp": "bin/cmd.js" 3384 + } 3385 + }, 3386 + "node_modules/mkdirp-classic": { 3387 + "version": "0.5.3", 3388 + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 3389 + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", 3390 + "dev": true, 3391 + "license": "MIT" 3392 + }, 3393 + "node_modules/mkdirp/node_modules/minimist": { 3394 + "version": "0.0.8", 3395 + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 3396 + "integrity": "sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==", 3397 + "license": "MIT" 3398 + }, 3399 + "node_modules/module-deps": { 3400 + "version": "6.2.3", 3401 + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz", 3402 + "integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==", 3403 + "dev": true, 3404 + "license": "MIT", 3405 + "dependencies": { 3406 + "browser-resolve": "^2.0.0", 3407 + "cached-path-relative": "^1.0.2", 3408 + "concat-stream": "~1.6.0", 3409 + "defined": "^1.0.0", 3410 + "detective": "^5.2.0", 3411 + "duplexer2": "^0.1.2", 3412 + "inherits": "^2.0.1", 3413 + "JSONStream": "^1.0.3", 3414 + "parents": "^1.0.0", 3415 + "readable-stream": "^2.0.2", 3416 + "resolve": "^1.4.0", 3417 + "stream-combiner2": "^1.1.1", 3418 + "subarg": "^1.0.0", 3419 + "through2": "^2.0.0", 3420 + "xtend": "^4.0.0" 3421 + }, 3422 + "bin": { 3423 + "module-deps": "bin/cmd.js" 3424 + }, 3425 + "engines": { 3426 + "node": ">= 0.8.0" 3427 + } 3428 + }, 3429 + "node_modules/moment": { 3430 + "version": "2.15.1", 3431 + "resolved": "https://registry.npmjs.org/moment/-/moment-2.15.1.tgz", 3432 + "integrity": "sha512-VRuqlq9ET3eUjWkqgZtUegkYF664TRWaxmgwlHxboe653wv4stNaVKDufNfCDcGFu1EA2Bm26bD0NWLaFMHfvA==", 3433 + "license": "MIT", 3434 + "engines": { 3435 + "node": "*" 3436 + } 3437 + }, 3438 + "node_modules/monotonic-timestamp": { 3439 + "version": "0.0.9", 3440 + "resolved": "https://registry.npmjs.org/monotonic-timestamp/-/monotonic-timestamp-0.0.9.tgz", 3441 + "integrity": "sha512-PQcys7iTcXiMyW8cgK5B/fhKGteB/WLqWN1f+s7IJHyyRd80JnJYoNo03kTQcGZhVtsKz5kEWiS7W94gfY6qcQ==", 3442 + "license": "MIT" 3443 + }, 3444 + "node_modules/moo": { 3445 + "version": "0.5.2", 3446 + "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", 3447 + "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==", 3448 + "license": "BSD-3-Clause" 3449 + }, 3450 + "node_modules/ms": { 3451 + "version": "0.7.1", 3452 + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", 3453 + "integrity": "sha512-lRLiIR9fSNpnP6TC4v8+4OU7oStC01esuNowdQ34L+Gk8e5Puoc88IqJ+XAY/B3Mn2ZKis8l8HX90oU8ivzUHg==", 3454 + "optional": true 3455 + }, 3456 + "node_modules/multiblob-http": { 3457 + "version": "0.2.0", 3458 + "resolved": "https://registry.npmjs.org/multiblob-http/-/multiblob-http-0.2.0.tgz", 3459 + "integrity": "sha512-VdlUaHrYxW3d/DgpHC8aOnBO/rEH6fcbSM2qPAtco9a0wB7H+5qU+vAawQaHnuK+eltIGuslC3HZ+orKU/6JeQ==", 3460 + "license": "MIT", 3461 + "dependencies": { 3462 + "pull-stream": "^3.4.3", 3463 + "stream-to-pull-stream": "^1.7.0" 3464 + } 3465 + }, 3466 + "node_modules/multiserver": { 3467 + "version": "1.7.2", 3468 + "resolved": "https://registry.npmjs.org/multiserver/-/multiserver-1.7.2.tgz", 3469 + "integrity": "sha512-oGwzuh64wmyxF9/w8jdCyYbmPFFhbRuKgc+/SZGS7PgNWUk9ilYQ7vyzysSMytzv/IiurHS96/ymRWre2DvByw==", 3470 + "license": "MIT", 3471 + "dependencies": { 3472 + "pull-cat": "~1.1.5", 3473 + "pull-stream": "^3.4.3", 3474 + "pull-ws": "^3.2.2", 3475 + "secret-handshake": "^1.1.1", 3476 + "separator-escape": "0.0.0", 3477 + "socks": "1.1.9", 3478 + "stream-to-pull-stream": "^1.7.2" 3479 + } 3480 + }, 3481 + "node_modules/multiserver-address": { 3482 + "version": "1.0.1", 3483 + "resolved": "https://registry.npmjs.org/multiserver-address/-/multiserver-address-1.0.1.tgz", 3484 + "integrity": "sha512-IfZMAGs9onCLkYNSnNBri3JxuvhQYllMyh3W9ry86iEDcfW9uPVsHTHDsjDxQtL+dPq3byshmA+Y4LN2wLHwNw==", 3485 + "license": "MIT", 3486 + "dependencies": { 3487 + "nearley": "^2.15.1" 3488 + } 3489 + }, 3490 + "node_modules/muxrpc": { 3491 + "version": "6.3.3", 3492 + "resolved": "https://registry.npmjs.org/muxrpc/-/muxrpc-6.3.3.tgz", 3493 + "integrity": "sha512-h/qoJuzuWpWMPIbiYOT5nJXgmRUOIAg1ycAOTyOsupjXJETna5l2w7LFvmaJJ2vIDJha4M60l54QHrbqEcGlmA==", 3494 + "license": "MIT", 3495 + "dependencies": { 3496 + "explain-error": "^1.0.1", 3497 + "packet-stream": "~2.0.0", 3498 + "packet-stream-codec": "^1.1.1", 3499 + "pull-goodbye": "~0.0.1", 3500 + "pull-stream": "^3.2.3" 3501 + } 3502 + }, 3503 + "node_modules/nan": { 3504 + "version": "2.6.2", 3505 + "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", 3506 + "integrity": "sha512-K3AyXBwEX6HF3eV46B9YLyyJ66DiBI66v+pTQfz+AyMOdOtg2aH/3WNSDbb3cVDLfPEJmx70aDu60aDTG5x+sw==", 3507 + "license": "MIT" 3508 + }, 3509 + "node_modules/nearley": { 3510 + "version": "2.20.1", 3511 + "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", 3512 + "integrity": "sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==", 3513 + "license": "MIT", 3514 + "dependencies": { 3515 + "commander": "^2.19.0", 3516 + "moo": "^0.5.0", 3517 + "railroad-diagrams": "^1.0.0", 3518 + "randexp": "0.4.6" 3519 + }, 3520 + "bin": { 3521 + "nearley-railroad": "bin/nearley-railroad.js", 3522 + "nearley-test": "bin/nearley-test.js", 3523 + "nearley-unparse": "bin/nearley-unparse.js", 3524 + "nearleyc": "bin/nearleyc.js" 3525 + }, 3526 + "funding": { 3527 + "type": "individual", 3528 + "url": "https://nearley.js.org/#give-to-nearley" 3529 + } 3530 + }, 3531 + "node_modules/node-abi": { 3532 + "version": "2.30.1", 3533 + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz", 3534 + "integrity": "sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==", 3535 + "license": "MIT", 3536 + "dependencies": { 3537 + "semver": "^5.4.1" 3538 + } 3539 + }, 3540 + "node_modules/node-forge": { 3541 + "version": "0.6.43", 3542 + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.6.43.tgz", 3543 + "integrity": "sha512-m6rYQ6vzGNdZIYZCo4X5sm5iUiqpvp/He4vOXUdP0WzKJ9cHTC/Wz6nzBjZUYiSCLv+C3YGvtcAIxP1Mx1iqcw==", 3544 + "license": "(BSD-3-Clause OR GPL-2.0)", 3545 + "optional": true, 3546 + "engines": { 3547 + "node": "*" 3548 + } 3549 + }, 3550 + "node_modules/node-gyp": { 3551 + "version": "3.4.0", 3552 + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.4.0.tgz", 3553 + "integrity": "sha512-HtmskmW14d8KGUYYHKFx+W4k2oGeoDLHylGsgRXYh75yFsSrv7/Dw3sdAmuJ4AB/auxa4P5/NC70W4+jFrcofw==", 3554 + "license": "MIT", 3555 + "optional": true, 3556 + "dependencies": { 3557 + "fstream": "^1.0.0", 3558 + "glob": "^7.0.3", 3559 + "graceful-fs": "^4.1.2", 3560 + "minimatch": "^3.0.2", 3561 + "mkdirp": "^0.5.0", 3562 + "nopt": "2 || 3", 3563 + "npmlog": "0 || 1 || 2 || 3", 3564 + "osenv": "0", 3565 + "path-array": "^1.0.0", 3566 + "request": "2", 3567 + "rimraf": "2", 3568 + "semver": "2.x || 3.x || 4 || 5", 3569 + "tar": "^2.0.0", 3570 + "which": "1" 3571 + }, 3572 + "bin": { 3573 + "node-gyp": "bin/node-gyp.js" 3574 + }, 3575 + "engines": { 3576 + "node": ">= 0.8.0" 3577 + } 3578 + }, 3579 + "node_modules/node-ninja": { 3580 + "version": "1.0.2", 3581 + "resolved": "https://registry.npmjs.org/node-ninja/-/node-ninja-1.0.2.tgz", 3582 + "integrity": "sha512-wMtWsG2QZI1Z5V7GciX9OI2DVT0PuDRIDQfe3L3rJsQ1qN1Gm3QQhoNtb4PMRi7gq4ByvEIYtPwHC7YbEf5yxw==", 3583 + "license": "MPL-2.0", 3584 + "optional": true, 3585 + "dependencies": { 3586 + "fstream": "^1.0.0", 3587 + "glob": "3 || 4 || 5 || 6 || 7", 3588 + "graceful-fs": "^4.1.2", 3589 + "minimatch": "3", 3590 + "mkdirp": "^0.5.0", 3591 + "nopt": "2 || 3", 3592 + "npmlog": "0 || 1 || 2", 3593 + "osenv": "0", 3594 + "path-array": "^1.0.0", 3595 + "request": "2", 3596 + "rimraf": "2", 3597 + "semver": "2.x || 3.x || 4 || 5", 3598 + "tar": "^2.0.0", 3599 + "which": "1" 3600 + }, 3601 + "bin": { 3602 + "node-ninja": "bin/node-ninja.js" 3603 + }, 3604 + "engines": { 3605 + "node": ">= 0.8.0" 3606 + } 3607 + }, 3608 + "node_modules/node-uuid": { 3609 + "version": "1.4.7", 3610 + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz", 3611 + "integrity": "sha512-1ufwSb+P48JyWDskpICvUCAXNaIFcNeln/hhg6yViwOoJ6g26SfaFoYIuGu0grRUsxqeJkC2aq5wAxXo1bT/FA==", 3612 + "deprecated": "Use uuid module instead", 3613 + "optional": true, 3614 + "bin": { 3615 + "uuid": "bin/uuid" 3616 + } 3617 + }, 3618 + "node_modules/node.extend": { 3619 + "version": "1.1.6", 3620 + "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-1.1.6.tgz", 3621 + "integrity": "sha512-dkI3ZpV4lhARrqGS/zTJpOaypTvZ1AXdvUc86TjrxQbWyOGq5J/pfptiiThIzraKGmaDpnwGiDOIL+yACUSpGA==", 3622 + "license": "(MIT OR GPL-2.0)", 3623 + "optional": true, 3624 + "dependencies": { 3625 + "is": "^3.1.0" 3626 + }, 3627 + "engines": { 3628 + "node": ">=0.4.0" 3629 + } 3630 + }, 3631 + "node_modules/non-private-ip": { 3632 + "version": "1.4.1", 3633 + "resolved": "https://registry.npmjs.org/non-private-ip/-/non-private-ip-1.4.1.tgz", 3634 + "integrity": "sha512-Bpl5pRs6HPP8vL/b0yDzEy20HXKNVz6I6PR1rCxAIwjOBpC3T/BfFv036gUNstxtoAVxBKgFL14FfWzC7fxENA==", 3635 + "license": "MIT", 3636 + "dependencies": { 3637 + "ip": "~0.3.2" 3638 + }, 3639 + "bin": { 3640 + "non-private-ip": "index.js" 3641 + } 3642 + }, 3643 + "node_modules/non-private-ip/node_modules/ip": { 3644 + "version": "0.3.3", 3645 + "resolved": "https://registry.npmjs.org/ip/-/ip-0.3.3.tgz", 3646 + "integrity": "sha512-VXpBTSFo8wNvJVwCxlncVwd2hYbzX8egxidocX2oKt6H5tJzLjrzG6gTNoHSNsKtIyelb528n/7sa86kqlnNiA==", 3647 + "license": "MIT" 3648 + }, 3649 + "node_modules/noop-logger": { 3650 + "version": "0.1.1", 3651 + "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", 3652 + "integrity": "sha512-6kM8CLXvuW5crTxsAtva2YLrRrDaiTIkIePWs9moLHqbFWT94WpNFjwS/5dfLfECg5i/lkmw3aoqVidxt23TEQ==", 3653 + "license": "MIT" 3654 + }, 3655 + "node_modules/nopt": { 3656 + "version": "3.0.6", 3657 + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", 3658 + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", 3659 + "license": "ISC", 3660 + "optional": true, 3661 + "dependencies": { 3662 + "abbrev": "1" 3663 + }, 3664 + "bin": { 3665 + "nopt": "bin/nopt.js" 3666 + } 3667 + }, 3668 + "node_modules/npmlog": { 3669 + "version": "2.0.4", 3670 + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-2.0.4.tgz", 3671 + "integrity": "sha512-DaL6RTb8Qh4tMe2ttPT1qWccETy2Vi5/8p+htMpLBeXJTr2CAqnF5WQtSP2eFpvaNbhLZ5uilDb98mRm4Q+lZQ==", 3672 + "deprecated": "This package is no longer supported.", 3673 + "license": "ISC", 3674 + "optional": true, 3675 + "dependencies": { 3676 + "ansi": "~0.3.1", 3677 + "are-we-there-yet": "~1.1.2", 3678 + "gauge": "~1.2.5" 3679 + } 3680 + }, 3681 + "node_modules/number-is-nan": { 3682 + "version": "1.0.1", 3683 + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 3684 + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", 3685 + "license": "MIT", 3686 + "engines": { 3687 + "node": ">=0.10.0" 3688 + } 3689 + }, 3690 + "node_modules/oauth-sign": { 3691 + "version": "0.8.2", 3692 + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", 3693 + "integrity": "sha512-VlF07iu3VV3+BTXj43Nmp6Irt/G7j/NgEctUS6IweH1RGhURjjCc2NWtzXFPXXWWfc7hgbXQdtiQu2LGp6MxUg==", 3694 + "license": "Apache-2.0", 3695 + "optional": true, 3696 + "engines": { 3697 + "node": "*" 3698 + } 3699 + }, 3700 + "node_modules/object-assign": { 3701 + "version": "4.1.0", 3702 + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", 3703 + "integrity": "sha512-Lbc7GfN7XFaK30bzUN3cDYLOkT0dH05S0ax1QikylHUD9+Z9PRF3G1iYwX3kcz+6AlzTFGkUgMxz6l3aUwbwTA==", 3704 + "license": "MIT", 3705 + "engines": { 3706 + "node": ">=0.10.0" 3707 + } 3708 + }, 3709 + "node_modules/object-keys": { 3710 + "version": "1.1.1", 3711 + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 3712 + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 3713 + "dev": true, 3714 + "license": "MIT", 3715 + "engines": { 3716 + "node": ">= 0.4" 3717 + } 3718 + }, 3719 + "node_modules/object.assign": { 3720 + "version": "4.1.7", 3721 + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", 3722 + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", 3723 + "dev": true, 3724 + "license": "MIT", 3725 + "dependencies": { 3726 + "call-bind": "^1.0.8", 3727 + "call-bound": "^1.0.3", 3728 + "define-properties": "^1.2.1", 3729 + "es-object-atoms": "^1.0.0", 3730 + "has-symbols": "^1.1.0", 3731 + "object-keys": "^1.1.1" 3732 + }, 3733 + "engines": { 3734 + "node": ">= 0.4" 3735 + }, 3736 + "funding": { 3737 + "url": "https://github.com/sponsors/ljharb" 3738 + } 3739 + }, 3740 + "node_modules/observable": { 3741 + "version": "2.1.4", 3742 + "resolved": "https://registry.npmjs.org/observable/-/observable-2.1.4.tgz", 3743 + "integrity": "sha512-YP03BvfvWSu3IZgcByNp5d9mNJAMjJG8TI2z9rrAR0jQvVH6csE+3VPkAemR0n3hOlI5vJ7gWgg0YPGUFZaQBg==", 3744 + "license": "MIT" 3745 + }, 3746 + "node_modules/obv": { 3747 + "version": "0.0.0", 3748 + "resolved": "https://registry.npmjs.org/obv/-/obv-0.0.0.tgz", 3749 + "integrity": "sha512-bLAyq8rbd2+Kam6hckUvufIAqIKuYJxaSeVOpsdd+FIZsm14s9vn0rnplqlSaFq9XJFAFsZy+9UHyPuviHC9hA==", 3750 + "license": "MIT" 3751 + }, 3752 + "node_modules/once": { 3753 + "version": "1.4.0", 3754 + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 3755 + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 3756 + "license": "ISC", 3757 + "dependencies": { 3758 + "wrappy": "1" 3759 + } 3760 + }, 3761 + "node_modules/open-external": { 3762 + "version": "0.1.1", 3763 + "resolved": "https://registry.npmjs.org/open-external/-/open-external-0.1.1.tgz", 3764 + "integrity": "sha512-rSzSGztPVglGoM7nYpoDdP+tiC8kywl0qICGH7A7Dt0cXHYmCGy0y2Abo9fNU1zElFg9tWHQMo1bkJjWq7NQdQ==", 3765 + "license": "MIT" 3766 + }, 3767 + "node_modules/optimist": { 3768 + "version": "0.6.1", 3769 + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", 3770 + "integrity": "sha512-snN4O4TkigujZphWLN0E//nQmm7790RYaE53DdL7ZYwee2D8DDo9/EyYiKUfN3rneWUjhJnueija3G9I2i0h3g==", 3771 + "dev": true, 3772 + "license": "MIT/X11", 3773 + "dependencies": { 3774 + "minimist": "~0.0.1", 3775 + "wordwrap": "~0.0.2" 3776 + } 3777 + }, 3778 + "node_modules/optimist/node_modules/minimist": { 3779 + "version": "0.0.10", 3780 + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", 3781 + "integrity": "sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw==", 3782 + "dev": true, 3783 + "license": "MIT" 3784 + }, 3785 + "node_modules/options": { 3786 + "version": "0.0.6", 3787 + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", 3788 + "integrity": "sha512-bOj3L1ypm++N+n7CEbbe473A414AB7z+amKYshRb//iuL3MpdDCLhPnw6aVTdKB9g5ZRVHIEp8eUln6L2NUStg==", 3789 + "engines": { 3790 + "node": ">=0.4.0" 3791 + } 3792 + }, 3793 + "node_modules/os-browserify": { 3794 + "version": "0.3.0", 3795 + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", 3796 + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", 3797 + "dev": true, 3798 + "license": "MIT" 3799 + }, 3800 + "node_modules/os-homedir": { 3801 + "version": "1.0.2", 3802 + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 3803 + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", 3804 + "license": "MIT", 3805 + "engines": { 3806 + "node": ">=0.10.0" 3807 + } 3808 + }, 3809 + "node_modules/os-tmpdir": { 3810 + "version": "1.0.2", 3811 + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 3812 + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", 3813 + "license": "MIT", 3814 + "optional": true, 3815 + "engines": { 3816 + "node": ">=0.10.0" 3817 + } 3818 + }, 3819 + "node_modules/osenv": { 3820 + "version": "0.1.3", 3821 + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.3.tgz", 3822 + "integrity": "sha512-18fsEKxrUnXycnkcq1EE/i3tGFdhtugTycAlVM5PVazmrVTPA8XV/FCFA0482qJoR8OZa3WGzxxj3SNxJz5O7Q==", 3823 + "deprecated": "This package is no longer supported.", 3824 + "license": "ISC", 3825 + "optional": true, 3826 + "dependencies": { 3827 + "os-homedir": "^1.0.0", 3828 + "os-tmpdir": "^1.0.0" 3829 + } 3830 + }, 3831 + "node_modules/packet-stream": { 3832 + "version": "2.0.0", 3833 + "resolved": "https://registry.npmjs.org/packet-stream/-/packet-stream-2.0.0.tgz", 3834 + "integrity": "sha512-Gzhme5hOiqM/ZLMnZxHLLp794PDeOmmOAJtEF/MX1ApB8u36THuReuguYKVnNmyuZEcKqNZwFTM2BHorTpzDeg==", 3835 + "license": "MIT" 3836 + }, 3837 + "node_modules/packet-stream-codec": { 3838 + "version": "1.1.1", 3839 + "resolved": "https://registry.npmjs.org/packet-stream-codec/-/packet-stream-codec-1.1.1.tgz", 3840 + "integrity": "sha512-7LINz+eibmP6ifADErg5EJclqIUuKg1HxcxDEMoPPlPu9py8Dp5CVylYcMDulgluKWZzUy5MN+DnmqJWcVtlfg==", 3841 + "license": "MIT", 3842 + "dependencies": { 3843 + "pull-reader": "^1.2.4", 3844 + "pull-through": "^1.0.17" 3845 + } 3846 + }, 3847 + "node_modules/pako": { 3848 + "version": "1.0.11", 3849 + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", 3850 + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", 3851 + "dev": true, 3852 + "license": "(MIT AND Zlib)" 3853 + }, 3854 + "node_modules/parents": { 3855 + "version": "1.0.1", 3856 + "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", 3857 + "integrity": "sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==", 3858 + "dev": true, 3859 + "license": "MIT", 3860 + "dependencies": { 3861 + "path-platform": "~0.11.15" 3862 + } 3863 + }, 3864 + "node_modules/parse-asn1": { 3865 + "version": "5.0.0", 3866 + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.0.0.tgz", 3867 + "integrity": "sha512-5UdkCzM6fENVxG4S3D7ivyWNozyK5ExOb4xdqW6/ukged2cG1/eQPL+L9Dem719A1Wfi3VvJ/ssSwzp9asI+rg==", 3868 + "dev": true, 3869 + "license": "ISC", 3870 + "dependencies": { 3871 + "asn1.js": "^4.0.0", 3872 + "browserify-aes": "^1.0.0", 3873 + "create-hash": "^1.1.0", 3874 + "evp_bytestokey": "^1.0.0", 3875 + "pbkdf2": "^3.0.3" 3876 + } 3877 + }, 3878 + "node_modules/path-array": { 3879 + "version": "1.0.1", 3880 + "resolved": "https://registry.npmjs.org/path-array/-/path-array-1.0.1.tgz", 3881 + "integrity": "sha512-teWG2rJTJJZi2kINKOsHcdIuHP7jy3D7pAsVgdhxMq8kaL2RnS5sg7YTlrClMVCIItcVbPTPI6eMBEoNxYahLA==", 3882 + "license": "MIT", 3883 + "optional": true, 3884 + "dependencies": { 3885 + "array-index": "^1.0.0" 3886 + } 3887 + }, 3888 + "node_modules/path-browserify": { 3889 + "version": "0.0.0", 3890 + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", 3891 + "integrity": "sha512-WA3pxi1olUQcsl82W576vkqhUSGp0uBtr/381pxx5WXLp3NC+AB99hUG3aGW7H0Kg9PFr1D8wv1iJeICe+9Mhw==", 3892 + "dev": true, 3893 + "license": "MIT" 3894 + }, 3895 + "node_modules/path-is-absolute": { 3896 + "version": "1.0.1", 3897 + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 3898 + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 3899 + "devOptional": true, 3900 + "license": "MIT", 3901 + "engines": { 3902 + "node": ">=0.10.0" 3903 + } 3904 + }, 3905 + "node_modules/path-parse": { 3906 + "version": "1.0.7", 3907 + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 3908 + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 3909 + "dev": true, 3910 + "license": "MIT" 3911 + }, 3912 + "node_modules/path-platform": { 3913 + "version": "0.11.15", 3914 + "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", 3915 + "integrity": "sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==", 3916 + "dev": true, 3917 + "license": "MIT", 3918 + "engines": { 3919 + "node": ">= 0.8.0" 3920 + } 3921 + }, 3922 + "node_modules/pbkdf2": { 3923 + "version": "3.0.9", 3924 + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.9.tgz", 3925 + "integrity": "sha512-sga/my2defvIpHceQt0sJSQQ/L3Go0cwTEYp8iYBHOSwGIF2jNeila8OD/hRzrkC4bEZm6HIAaU17TEnWYrvgg==", 3926 + "dev": true, 3927 + "license": "MIT", 3928 + "dependencies": { 3929 + "create-hmac": "^1.1.2" 3930 + }, 3931 + "engines": { 3932 + "node": ">=0.12" 3933 + } 3934 + }, 3935 + "node_modules/peaks.js": { 3936 + "version": "0.4.9", 3937 + "resolved": "https://registry.npmjs.org/peaks.js/-/peaks.js-0.4.9.tgz", 3938 + "integrity": "sha512-oJpEMKzFue8jdvtEpBzpkZyF2xvCYscNMTL7viQSMS1M4hP1uAlpFYebU7vxwCdE8dHTaocsXCwLhQzqVU1hZw==", 3939 + "license": "LGPL-3.0", 3940 + "dependencies": { 3941 + "eventemitter2": "~1.0.0", 3942 + "konva": "~1.0.0", 3943 + "waveform-data": "^1.5.2" 3944 + } 3945 + }, 3946 + "node_modules/pinkie": { 3947 + "version": "2.0.4", 3948 + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 3949 + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", 3950 + "license": "MIT", 3951 + "optional": true, 3952 + "engines": { 3953 + "node": ">=0.10.0" 3954 + } 3955 + }, 3956 + "node_modules/pinkie-promise": { 3957 + "version": "2.0.1", 3958 + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 3959 + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", 3960 + "license": "MIT", 3961 + "optional": true, 3962 + "dependencies": { 3963 + "pinkie": "^2.0.0" 3964 + }, 3965 + "engines": { 3966 + "node": ">=0.10.0" 3967 + } 3968 + }, 3969 + "node_modules/pkijs": { 3970 + "version": "1.3.27", 3971 + "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-1.3.27.tgz", 3972 + "integrity": "sha512-iVLOmMksN/OdY/4q/Rt8zb65L2eGJDQouJHk0xfgLjMeQFbYf5PqVT5RHhiUjHSxkCbNNbXPgptU3BAKIOE/bQ==", 3973 + "optional": true 3974 + }, 3975 + "node_modules/prebuild": { 3976 + "version": "4.3.0", 3977 + "resolved": "https://registry.npmjs.org/prebuild/-/prebuild-4.3.0.tgz", 3978 + "integrity": "sha512-jNtGco6vFhdwT9sfnn3JIC3SwN+shFIUYkalDt1qqyQHrkmEertkaDr/2EhRVTzuFiqOCHibv50/8gumJR6Vrg==", 3979 + "license": "MIT", 3980 + "optional": true, 3981 + "dependencies": { 3982 + "async": "^1.4.0", 3983 + "execspawn": "^1.0.1", 3984 + "expand-template": "^1.0.0", 3985 + "ghreleases": "^1.0.2", 3986 + "github-from-package": "0.0.0", 3987 + "minimist": "^1.1.2", 3988 + "mkdirp": "^0.5.1", 3989 + "node-gyp": "^3.0.3", 3990 + "node-ninja": "^1.0.1", 3991 + "noop-logger": "^0.1.0", 3992 + "npmlog": "^2.0.0", 3993 + "os-homedir": "^1.0.1", 3994 + "pump": "^1.0.0", 3995 + "rc": "^1.0.3", 3996 + "simple-get": "^1.4.2", 3997 + "tar-fs": "^1.7.0", 3998 + "tar-stream": "^1.2.1", 3999 + "xtend": "^4.0.1" 4000 + }, 4001 + "bin": { 4002 + "prebuild": "bin.js" 4003 + } 4004 + }, 4005 + "node_modules/prebuild-install": { 4006 + "version": "2.5.3", 4007 + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-2.5.3.tgz", 4008 + "integrity": "sha512-/rI36cN2g7vDQnKWN8Uzupi++KjyqS9iS+/fpwG4Ea8d0Pip0PQ5bshUNzVwt+/D2MRfhVAplYMMvWLqWrCF/g==", 4009 + "license": "MIT", 4010 + "dependencies": { 4011 + "detect-libc": "^1.0.3", 4012 + "expand-template": "^1.0.2", 4013 + "github-from-package": "0.0.0", 4014 + "minimist": "^1.2.0", 4015 + "mkdirp": "^0.5.1", 4016 + "node-abi": "^2.2.0", 4017 + "noop-logger": "^0.1.1", 4018 + "npmlog": "^4.0.1", 4019 + "os-homedir": "^1.0.1", 4020 + "pump": "^2.0.1", 4021 + "rc": "^1.1.6", 4022 + "simple-get": "^2.7.0", 4023 + "tar-fs": "^1.13.0", 4024 + "tunnel-agent": "^0.6.0", 4025 + "which-pm-runs": "^1.0.0" 4026 + }, 4027 + "bin": { 4028 + "prebuild-install": "bin.js" 4029 + } 4030 + }, 4031 + "node_modules/prebuild-install/node_modules/gauge": { 4032 + "version": "2.7.4", 4033 + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", 4034 + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", 4035 + "deprecated": "This package is no longer supported.", 4036 + "license": "ISC", 4037 + "dependencies": { 4038 + "aproba": "^1.0.3", 4039 + "console-control-strings": "^1.0.0", 4040 + "has-unicode": "^2.0.0", 4041 + "object-assign": "^4.1.0", 4042 + "signal-exit": "^3.0.0", 4043 + "string-width": "^1.0.1", 4044 + "strip-ansi": "^3.0.1", 4045 + "wide-align": "^1.1.0" 4046 + } 4047 + }, 4048 + "node_modules/prebuild-install/node_modules/npmlog": { 4049 + "version": "4.1.2", 4050 + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", 4051 + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", 4052 + "deprecated": "This package is no longer supported.", 4053 + "license": "ISC", 4054 + "dependencies": { 4055 + "are-we-there-yet": "~1.1.2", 4056 + "console-control-strings": "~1.1.0", 4057 + "gauge": "~2.7.3", 4058 + "set-blocking": "~2.0.0" 4059 + } 4060 + }, 4061 + "node_modules/prebuild-install/node_modules/pump": { 4062 + "version": "2.0.1", 4063 + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", 4064 + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", 4065 + "license": "MIT", 4066 + "dependencies": { 4067 + "end-of-stream": "^1.1.0", 4068 + "once": "^1.3.1" 4069 + } 4070 + }, 4071 + "node_modules/prebuild-install/node_modules/simple-get": { 4072 + "version": "2.8.2", 4073 + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.2.tgz", 4074 + "integrity": "sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw==", 4075 + "license": "MIT", 4076 + "dependencies": { 4077 + "decompress-response": "^3.3.0", 4078 + "once": "^1.3.1", 4079 + "simple-concat": "^1.0.0" 4080 + } 4081 + }, 4082 + "node_modules/prebuild-install/node_modules/tunnel-agent": { 4083 + "version": "0.6.0", 4084 + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 4085 + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", 4086 + "license": "Apache-2.0", 4087 + "dependencies": { 4088 + "safe-buffer": "^5.0.1" 4089 + }, 4090 + "engines": { 4091 + "node": "*" 4092 + } 4093 + }, 4094 + "node_modules/private-box": { 4095 + "version": "0.2.1", 4096 + "resolved": "https://registry.npmjs.org/private-box/-/private-box-0.2.1.tgz", 4097 + "integrity": "sha512-+qsgNSa2uuGmFE1D++93+8oElktnLYaTAy3W7zay+Dcerw1NKHpfOBcvCz0z8+uOSJLhDHwH14ftBMMtSdRYIg==", 4098 + "license": "MIT", 4099 + "dependencies": { 4100 + "chloride": "^2.2.1" 4101 + } 4102 + }, 4103 + "node_modules/process": { 4104 + "version": "0.11.9", 4105 + "resolved": "https://registry.npmjs.org/process/-/process-0.11.9.tgz", 4106 + "integrity": "sha512-rBG9LeETmhkfw0lr4dB5y3p5NHQadv2gyr+yPgQ8OebVn9LS4CDL7JW6NCdyeE8lzGkQ+x+lyytd+nC26A1DtQ==", 4107 + "dev": true, 4108 + "license": "MIT", 4109 + "engines": { 4110 + "node": ">= 0.6.0" 4111 + } 4112 + }, 4113 + "node_modules/process-nextick-args": { 4114 + "version": "1.0.7", 4115 + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", 4116 + "integrity": "sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==", 4117 + "license": "MIT" 4118 + }, 4119 + "node_modules/prr": { 4120 + "version": "1.0.1", 4121 + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", 4122 + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", 4123 + "license": "MIT" 4124 + }, 4125 + "node_modules/public-encrypt": { 4126 + "version": "4.0.0", 4127 + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", 4128 + "integrity": "sha512-jypsKydIz+OGpL8/PLPlYtlOP8Sqx54lQa+46srROOvUj02byeX+7RoZH49emN9OZSFiKohPLDMTzWK4JNR5Zg==", 4129 + "dev": true, 4130 + "license": "MIT", 4131 + "dependencies": { 4132 + "bn.js": "^4.1.0", 4133 + "browserify-rsa": "^4.0.0", 4134 + "create-hash": "^1.1.0", 4135 + "parse-asn1": "^5.0.0", 4136 + "randombytes": "^2.0.1" 4137 + } 4138 + }, 4139 + "node_modules/pull-box-stream": { 4140 + "version": "1.0.11", 4141 + "resolved": "https://registry.npmjs.org/pull-box-stream/-/pull-box-stream-1.0.11.tgz", 4142 + "integrity": "sha512-VGok3ZIsHNbHqh2JOj7cIaDtL4ozNWCGKZl8aCH8oRN4b5GgI0b2Urc+tXDo8czM/qeC/4GDss/YZmz6E9k+hQ==", 4143 + "license": "MIT", 4144 + "dependencies": { 4145 + "chloride": "^2.1.1", 4146 + "increment-buffer": "~1.0.0", 4147 + "pull-reader": "^1.2.5", 4148 + "pull-stream": "^3.2.3", 4149 + "pull-through": "^1.0.18", 4150 + "split-buffer": "~1.0.0" 4151 + } 4152 + }, 4153 + "node_modules/pull-cat": { 4154 + "version": "1.1.11", 4155 + "resolved": "https://registry.npmjs.org/pull-cat/-/pull-cat-1.1.11.tgz", 4156 + "integrity": "sha512-i3w+xZ3DCtTVz8S62hBOuNLRHqVDsHMNZmgrZsjPnsxXUgbWtXEee84lo1XswE7W2a3WHyqsNuDJTjVLAQR8xg==", 4157 + "license": "MIT" 4158 + }, 4159 + "node_modules/pull-defer": { 4160 + "version": "0.2.2", 4161 + "resolved": "https://registry.npmjs.org/pull-defer/-/pull-defer-0.2.2.tgz", 4162 + "integrity": "sha512-NbaYHXu0dWKimEb8LdZmTJdte3tuIVWcoSf10v+OcyFx3Dh274xSzvZJYwD+IGRNfX9XEjyKczzEq76wQNV7Vw==", 4163 + "license": "MIT" 4164 + }, 4165 + "node_modules/pull-file": { 4166 + "version": "0.5.0", 4167 + "resolved": "https://registry.npmjs.org/pull-file/-/pull-file-0.5.0.tgz", 4168 + "integrity": "sha512-4s/IfBLebH/eWUlhp3F3M29mk+B1cryp3W99t/k9J/c033f+HyLLVB2EAMGoN02j8ff7ObkLF1tMaHok3nGS6Q==", 4169 + "dev": true, 4170 + "license": "MIT", 4171 + "dependencies": { 4172 + "pull-utf8-decoder": "^1.0.2" 4173 + } 4174 + }, 4175 + "node_modules/pull-flatmap": { 4176 + "version": "0.0.1", 4177 + "resolved": "https://registry.npmjs.org/pull-flatmap/-/pull-flatmap-0.0.1.tgz", 4178 + "integrity": "sha512-9BgwZPZ6J22kPf9ExoVI3m2yMHdCK8uPf58p6L63t36IgH7NrCX+p3QV8cQ4JmYjwvXDZzimVuJ7IW7iLxm7cA==", 4179 + "license": "MIT" 4180 + }, 4181 + "node_modules/pull-goodbye": { 4182 + "version": "0.0.1", 4183 + "resolved": "https://registry.npmjs.org/pull-goodbye/-/pull-goodbye-0.0.1.tgz", 4184 + "integrity": "sha512-np8g0M5/vP6eUX+JNam/k8VVZgZXYUwhXJoptJYLQAwa2rmlCsdITq5ZkMYhootjf2K2uA2jeEoPR2qsB0BkCw==", 4185 + "license": "MIT" 4186 + }, 4187 + "node_modules/pull-handshake": { 4188 + "version": "1.1.4", 4189 + "resolved": "https://registry.npmjs.org/pull-handshake/-/pull-handshake-1.1.4.tgz", 4190 + "integrity": "sha512-+dT8auWatbSNt1o43GKygECvOM2znXdyWwhEQaxztJSvxrNtEqo/wgZttknLfyxxbkbS6qUten6LsXTOwYj0yg==", 4191 + "license": "MIT", 4192 + "dependencies": { 4193 + "pull-cat": "^1.1.9", 4194 + "pull-pair": "~1.1.0", 4195 + "pull-pushable": "^2.0.0", 4196 + "pull-reader": "^1.2.3" 4197 + } 4198 + }, 4199 + "node_modules/pull-level": { 4200 + "version": "2.0.3", 4201 + "resolved": "https://registry.npmjs.org/pull-level/-/pull-level-2.0.3.tgz", 4202 + "integrity": "sha512-UpmLNqNirc+1LiS7htBweOcqpciqYLT0c/dJYue7IR0wHOr3s8jwqWhdSQa23TcN2hcqbxaYg9TWqe/sGgIqJA==", 4203 + "license": "MIT", 4204 + "dependencies": { 4205 + "level-post": "~1.0.3", 4206 + "pull-cat": "^1.1.9", 4207 + "pull-live": "^1.0.1", 4208 + "pull-pushable": "^2.0.0", 4209 + "pull-stream": "^3.4.0", 4210 + "pull-window": "^2.1.4", 4211 + "stream-to-pull-stream": "^1.7.1" 4212 + } 4213 + }, 4214 + "node_modules/pull-live": { 4215 + "version": "1.0.1", 4216 + "resolved": "https://registry.npmjs.org/pull-live/-/pull-live-1.0.1.tgz", 4217 + "integrity": "sha512-tkNz1QT5gId8aPhV5+dmwoIiA1nmfDOzJDlOOUpU5DNusj6neNd3EePybJ5+sITr2FwyCs/FVpx74YMCfc8YeA==", 4218 + "license": "MIT", 4219 + "dependencies": { 4220 + "pull-cat": "^1.1.9", 4221 + "pull-stream": "^3.4.0" 4222 + } 4223 + }, 4224 + "node_modules/pull-many": { 4225 + "version": "1.0.9", 4226 + "resolved": "https://registry.npmjs.org/pull-many/-/pull-many-1.0.9.tgz", 4227 + "integrity": "sha512-+jUydDVlj/HsvtDqxWMSsiRq3B0HVo7RhBV4C0p2nZRS3mFTUEu9SPEBN+B5PMaW8KTnblYhTIaKg7oXgGnj4Q==", 4228 + "license": "MIT", 4229 + "dependencies": { 4230 + "pull-stream": "^3.4.5" 4231 + } 4232 + }, 4233 + "node_modules/pull-next": { 4234 + "version": "0.0.1", 4235 + "resolved": "https://registry.npmjs.org/pull-next/-/pull-next-0.0.1.tgz", 4236 + "integrity": "sha512-vhJtt8LzrZKtNzc3h/JQ8ReC76U+dLAAZN2n5fyJB8GlVYy9c1QxpKUpMvvCUtJ4TuO5GBLQgRU6HqBi0sHfNA==", 4237 + "license": "MIT" 4238 + }, 4239 + "node_modules/pull-pair": { 4240 + "version": "1.1.0", 4241 + "resolved": "https://registry.npmjs.org/pull-pair/-/pull-pair-1.1.0.tgz", 4242 + "integrity": "sha512-7VEFLxWnj2AKaN3AvtyaM508d1+56/ulSjDLu4j6kcd9DnEM6LfG8b1R9gCLqzIjJo5stFrWynVc6e451OW4LQ==", 4243 + "license": "MIT" 4244 + }, 4245 + "node_modules/pull-paramap": { 4246 + "version": "1.2.2", 4247 + "resolved": "https://registry.npmjs.org/pull-paramap/-/pull-paramap-1.2.2.tgz", 4248 + "integrity": "sha512-0ALwLcASif3KmKCXO4liySCKsTfC/mGYhRFch+xLvfJJrYOIfXPthrykDUZpeZtbjEXglPySzfUmYcnBqzTj5w==", 4249 + "license": "MIT", 4250 + "dependencies": { 4251 + "looper": "^4.0.0" 4252 + } 4253 + }, 4254 + "node_modules/pull-paramap/node_modules/looper": { 4255 + "version": "4.0.0", 4256 + "resolved": "https://registry.npmjs.org/looper/-/looper-4.0.0.tgz", 4257 + "integrity": "sha512-NjGRcX4vCwyfbujv03omakGfAYh6St5kVsZFKfU23MFO1Z9/mZT8ypTZMEnvVC7nJeYtbqkRPFV4GoJBPdJgYw==", 4258 + "license": "MIT" 4259 + }, 4260 + "node_modules/pull-pause": { 4261 + "version": "0.0.0", 4262 + "resolved": "https://registry.npmjs.org/pull-pause/-/pull-pause-0.0.0.tgz", 4263 + "integrity": "sha512-bbnrVNBeQUO5Vj1ejvl/XHyNAbR3qyZHmOYeTGxCyt1+g7ZM33YeMO9OeebUMKiAstZB/Rc3qrxAMB8mETQ01Q==", 4264 + "license": "MIT" 4265 + }, 4266 + "node_modules/pull-pushable": { 4267 + "version": "2.0.1", 4268 + "resolved": "https://registry.npmjs.org/pull-pushable/-/pull-pushable-2.0.1.tgz", 4269 + "integrity": "sha512-hx9Dqgr2eQ6X/3n8EX7kBM9PiunMqlNCEgfxZtZMCKA+MKlWCWdVu7l4323+M4FMEYJfnzvkFYDnBN0CISGkZw==", 4270 + "license": "MIT" 4271 + }, 4272 + "node_modules/pull-reader": { 4273 + "version": "1.2.8", 4274 + "resolved": "https://registry.npmjs.org/pull-reader/-/pull-reader-1.2.8.tgz", 4275 + "integrity": "sha512-lOZqGGlAB4uNl6wWkRkt/HwM3EigPqHnJ+u1JRIx/8cXkeJxT+nNEnLdDFfYtK28YEhXW7e7PCoO8VsrQyqDZw==", 4276 + "license": "MIT" 4277 + }, 4278 + "node_modules/pull-reconnect": { 4279 + "version": "0.0.3", 4280 + "resolved": "https://registry.npmjs.org/pull-reconnect/-/pull-reconnect-0.0.3.tgz", 4281 + "integrity": "sha512-OrkKw8GzNmwEaHgXR62vEscIoWRAWgdMDwyUk4SVwEsf7gyBkoW1XgU1mQPJ+4vqwlxih4qAj1P7Weg26ox/Ng==", 4282 + "license": "MIT", 4283 + "dependencies": { 4284 + "pull-defer": "^0.2.2" 4285 + } 4286 + }, 4287 + "node_modules/pull-scroll": { 4288 + "version": "0.2.2", 4289 + "resolved": "https://registry.npmjs.org/pull-scroll/-/pull-scroll-0.2.2.tgz", 4290 + "integrity": "sha512-vlOBzb9DFERgVmmEpiP0E9zYI0ruB/Ke7k4+T5xTVfBbCeLF/ruFwR9PAch+LUfhWbYoZSH8PTS1AzJUKNkORw==", 4291 + "license": "MIT", 4292 + "dependencies": { 4293 + "hyperscript": "^1.4.7", 4294 + "is-visible": "^2.0.1", 4295 + "observable": "^2.1.4", 4296 + "pull-pause": "0.0.0", 4297 + "pull-stream": "^3.0.1", 4298 + "request-animation-loop": "^0.1.0" 4299 + } 4300 + }, 4301 + "node_modules/pull-sink-through": { 4302 + "version": "0.0.0", 4303 + "resolved": "https://registry.npmjs.org/pull-sink-through/-/pull-sink-through-0.0.0.tgz", 4304 + "integrity": "sha512-XjpF/3+WRsWfw+XhPgj3I/6WO15VYOKLsXAtWt1sRKOqA6N7bnarut5zuE2GcxbAzspaQxKmMcbUYZ8QorPxcQ==", 4305 + "license": "MIT" 4306 + }, 4307 + "node_modules/pull-stream": { 4308 + "version": "3.7.0", 4309 + "resolved": "https://registry.npmjs.org/pull-stream/-/pull-stream-3.7.0.tgz", 4310 + "integrity": "sha512-Eco+/R004UaCK2qEDE8vGklcTG2OeZSVm1kTUQNrykEjDwcFXDZhygFDsW49DbXyJMEhHeRL3z5cRVqPAhXlIw==", 4311 + "license": "MIT" 4312 + }, 4313 + "node_modules/pull-through": { 4314 + "version": "1.0.18", 4315 + "resolved": "https://registry.npmjs.org/pull-through/-/pull-through-1.0.18.tgz", 4316 + "integrity": "sha512-t8BBRdKstI/JoWS3FAXRnBvo1ahoLcKo8nm8ZUzr4OUgIf47RodD6HjnPIpw/d6HQZaMu+TotLAYCNwLTnvcNw==", 4317 + "license": "MIT", 4318 + "dependencies": { 4319 + "looper": "~3.0.0" 4320 + } 4321 + }, 4322 + "node_modules/pull-utf8-decoder": { 4323 + "version": "1.0.2", 4324 + "resolved": "https://registry.npmjs.org/pull-utf8-decoder/-/pull-utf8-decoder-1.0.2.tgz", 4325 + "integrity": "sha512-hpGheDlDMMEOkiBwXpiUqaFVR0SlGb23vZyJuHe1s8CWGJVcDEzhy9HHUEIuPjTEajYb90ikKsDmt6lkmTtk5g==", 4326 + "dev": true, 4327 + "license": "MIT" 4328 + }, 4329 + "node_modules/pull-window": { 4330 + "version": "2.1.4", 4331 + "resolved": "https://registry.npmjs.org/pull-window/-/pull-window-2.1.4.tgz", 4332 + "integrity": "sha512-cbDzN76BMlcGG46OImrgpkMf/VkCnupj8JhsrpBw3aWBM9ye345aYnqitmZCgauBkc0HbbRRn9hCnsa3k2FNUg==", 4333 + "license": "MIT", 4334 + "dependencies": { 4335 + "looper": "^2.0.0" 4336 + } 4337 + }, 4338 + "node_modules/pull-window/node_modules/looper": { 4339 + "version": "2.0.0", 4340 + "resolved": "https://registry.npmjs.org/looper/-/looper-2.0.0.tgz", 4341 + "integrity": "sha512-6DzMHJcjbQX/UPHc1rRCBfKlLwDkvuGZ715cIR36wSdYqWXFT35uLXq5P/2orl3tz+t+VOVPxw4yPinQlUDGDQ==", 4342 + "license": "MIT" 4343 + }, 4344 + "node_modules/pull-write": { 4345 + "version": "1.1.4", 4346 + "resolved": "https://registry.npmjs.org/pull-write/-/pull-write-1.1.4.tgz", 4347 + "integrity": "sha512-EkkwRg2EDfPQI1mzUxtSdx5kJAKpbSSoAwwP4+K3ENWUmWqehDQoSx/bM5VeYkl3Hrfkr3nsLyLL2TbfVO9HGw==", 4348 + "license": "MIT", 4349 + "dependencies": { 4350 + "looper": "^4.0.0", 4351 + "pull-cat": "^1.1.11", 4352 + "pull-stream": "^3.4.5" 4353 + } 4354 + }, 4355 + "node_modules/pull-write/node_modules/looper": { 4356 + "version": "4.0.0", 4357 + "resolved": "https://registry.npmjs.org/looper/-/looper-4.0.0.tgz", 4358 + "integrity": "sha512-NjGRcX4vCwyfbujv03omakGfAYh6St5kVsZFKfU23MFO1Z9/mZT8ypTZMEnvVC7nJeYtbqkRPFV4GoJBPdJgYw==", 4359 + "license": "MIT" 4360 + }, 4361 + "node_modules/pull-ws": { 4362 + "version": "3.2.8", 4363 + "resolved": "https://registry.npmjs.org/pull-ws/-/pull-ws-3.2.8.tgz", 4364 + "integrity": "sha512-DRvK+UDkoPEnAcsP1C3B7mbx3JgDk7NQrngxWLjunSZgoW6AaMApxLYq10eyrBRGVF4WC0spvOBc7BSF4ly9yg==", 4365 + "license": "ISC", 4366 + "dependencies": { 4367 + "relative-url": "^1.0.2", 4368 + "ws": "^1.1.0" 4369 + } 4370 + }, 4371 + "node_modules/pump": { 4372 + "version": "1.0.1", 4373 + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.1.tgz", 4374 + "integrity": "sha512-AQkT8yuCm6LmumsJ/Ery8afinLeXPvfdya3ODy8rsyYqvKRnHvDaKyAzrIX5V3VV+dOB+yQcjWUbEjWxg4l0WQ==", 4375 + "license": "MIT", 4376 + "dependencies": { 4377 + "end-of-stream": "^1.1.0", 4378 + "once": "^1.3.1" 4379 + } 4380 + }, 4381 + "node_modules/punycode": { 4382 + "version": "1.4.1", 4383 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 4384 + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", 4385 + "dev": true, 4386 + "license": "MIT" 4387 + }, 4388 + "node_modules/pyconf": { 4389 + "version": "1.1.2", 4390 + "resolved": "https://registry.npmjs.org/pyconf/-/pyconf-1.1.2.tgz", 4391 + "integrity": "sha512-axoR6k7p8dKYi6EjWYymuA1Xop/2fyMK0nrFwO9WVnGPGmdUeHHP3D+H6/QRNkhn0huRkEJqUcK9+K+Z2JToAg==", 4392 + "license": "(MIT OR Apache-2.0)", 4393 + "optional": true, 4394 + "dependencies": { 4395 + "safe-replace": "^1.0.2" 4396 + } 4397 + }, 4398 + "node_modules/qs": { 4399 + "version": "6.2.1", 4400 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz", 4401 + "integrity": "sha512-8yYCrxot1tgWocouWKNcewB8VdWuFe1Ab4GU38bg1gGNutR9bMMHaJgxDS5BGRVSLnyRrFhfJ8f04Er/kRmbLg==", 4402 + "license": "BSD-3-Clause", 4403 + "optional": true, 4404 + "engines": { 4405 + "node": ">=0.6" 4406 + } 4407 + }, 4408 + "node_modules/querystring": { 4409 + "version": "0.2.0", 4410 + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", 4411 + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", 4412 + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", 4413 + "dev": true, 4414 + "engines": { 4415 + "node": ">=0.4.x" 4416 + } 4417 + }, 4418 + "node_modules/querystring-es3": { 4419 + "version": "0.2.1", 4420 + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", 4421 + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", 4422 + "dev": true, 4423 + "engines": { 4424 + "node": ">=0.4.x" 4425 + } 4426 + }, 4427 + "node_modules/railroad-diagrams": { 4428 + "version": "1.0.0", 4429 + "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz", 4430 + "integrity": "sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==", 4431 + "license": "CC0-1.0" 4432 + }, 4433 + "node_modules/randexp": { 4434 + "version": "0.4.6", 4435 + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz", 4436 + "integrity": "sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==", 4437 + "license": "MIT", 4438 + "dependencies": { 4439 + "discontinuous-range": "1.0.0", 4440 + "ret": "~0.1.10" 4441 + }, 4442 + "engines": { 4443 + "node": ">=0.12" 4444 + } 4445 + }, 4446 + "node_modules/randombytes": { 4447 + "version": "2.0.3", 4448 + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz", 4449 + "integrity": "sha512-lDVjxQQFoCG1jcrP06LNo2lbWp4QTShEXnhActFBwYuHprllQV6VUpwreApsYqCgD+N1mHoqJ/BI/4eV4R2GYg==", 4450 + "dev": true, 4451 + "license": "MIT" 4452 + }, 4453 + "node_modules/rc": { 4454 + "version": "1.1.6", 4455 + "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz", 4456 + "integrity": "sha512-kKP2v/do9XlmKORXSHhVRnrsS0LVUhwfFhs/7fsLxQDYxuR+LA46Zivb3XBgomwRUwmf5W6QDqyQxQIhE850eA==", 4457 + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", 4458 + "dependencies": { 4459 + "deep-extend": "~0.4.0", 4460 + "ini": "~1.3.0", 4461 + "minimist": "^1.2.0", 4462 + "strip-json-comments": "~1.0.4" 4463 + }, 4464 + "bin": { 4465 + "rc": "index.js" 4466 + } 4467 + }, 4468 + "node_modules/read-only-stream": { 4469 + "version": "2.0.0", 4470 + "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", 4471 + "integrity": "sha512-3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w==", 4472 + "dev": true, 4473 + "license": "MIT", 4474 + "dependencies": { 4475 + "readable-stream": "^2.0.2" 4476 + } 4477 + }, 4478 + "node_modules/readable-stream": { 4479 + "version": "2.1.5", 4480 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz", 4481 + "integrity": "sha512-NkXT2AER7VKXeXtJNSaWLpWIhmtSE3K2PguaLEeWr4JILghcIKqoLt1A3wHrnpDC5+ekf8gfk1GKWkFXe4odMw==", 4482 + "license": "MIT", 4483 + "dependencies": { 4484 + "buffer-shims": "^1.0.0", 4485 + "core-util-is": "~1.0.0", 4486 + "inherits": "~2.0.1", 4487 + "isarray": "~1.0.0", 4488 + "process-nextick-args": "~1.0.6", 4489 + "string_decoder": "~0.10.x", 4490 + "util-deprecate": "~1.0.1" 4491 + } 4492 + }, 4493 + "node_modules/readable-stream/node_modules/isarray": { 4494 + "version": "1.0.0", 4495 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 4496 + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", 4497 + "license": "MIT" 4498 + }, 4499 + "node_modules/readable-stream/node_modules/string_decoder": { 4500 + "version": "0.10.31", 4501 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 4502 + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", 4503 + "license": "MIT" 4504 + }, 4505 + "node_modules/relative-url": { 4506 + "version": "1.0.2", 4507 + "resolved": "https://registry.npmjs.org/relative-url/-/relative-url-1.0.2.tgz", 4508 + "integrity": "sha512-jI1AmBVFFMXwQ3I6tIYVmVOjy8f+ogHbqkeb8/LL9tszEQiTV8I0l8XT4oEomUOoxfm698f92gYlNKeA/9LJVQ==", 4509 + "license": "MIT" 4510 + }, 4511 + "node_modules/request": { 4512 + "version": "2.75.0", 4513 + "resolved": "https://registry.npmjs.org/request/-/request-2.75.0.tgz", 4514 + "integrity": "sha512-uNXre8CefDRFBhfB1bL0CkKBD+5E1xmx69KMjl7p+bBc0vesXLQMS+iwsI2pKRlYZOOtLzkeBfz7jItKA3XlKQ==", 4515 + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", 4516 + "license": "Apache-2.0", 4517 + "optional": true, 4518 + "dependencies": { 4519 + "aws-sign2": "~0.6.0", 4520 + "aws4": "^1.2.1", 4521 + "bl": "~1.1.2", 4522 + "caseless": "~0.11.0", 4523 + "combined-stream": "~1.0.5", 4524 + "extend": "~3.0.0", 4525 + "forever-agent": "~0.6.1", 4526 + "form-data": "~2.0.0", 4527 + "har-validator": "~2.0.6", 4528 + "hawk": "~3.1.3", 4529 + "http-signature": "~1.1.0", 4530 + "is-typedarray": "~1.0.0", 4531 + "isstream": "~0.1.2", 4532 + "json-stringify-safe": "~5.0.1", 4533 + "mime-types": "~2.1.7", 4534 + "node-uuid": "~1.4.7", 4535 + "oauth-sign": "~0.8.1", 4536 + "qs": "~6.2.0", 4537 + "stringstream": "~0.0.4", 4538 + "tough-cookie": "~2.3.0", 4539 + "tunnel-agent": "~0.4.1" 4540 + }, 4541 + "engines": { 4542 + "node": ">=0.8.0" 4543 + } 4544 + }, 4545 + "node_modules/request-animation-loop": { 4546 + "version": "0.1.0", 4547 + "resolved": "https://registry.npmjs.org/request-animation-loop/-/request-animation-loop-0.1.0.tgz", 4548 + "integrity": "sha512-r8aDYOFn3l8AfGbzoKH7d9HIzpr1TVFVCX4wuuYem5WTOtC/zISedBWXP6fdxUjdvEJS+okn0ezq7uJvNmN2yg==", 4549 + "license": "ISC" 4550 + }, 4551 + "node_modules/request/node_modules/bl": { 4552 + "version": "1.1.2", 4553 + "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", 4554 + "integrity": "sha512-uVVYHEQk+OuWvCi5U+iquVXvvGCWXKawjwELIR2XMLsqfV/e2sGDClVBs8OlGIgGsStPRY/Es311YKYIlYCWAg==", 4555 + "license": "MIT", 4556 + "optional": true, 4557 + "dependencies": { 4558 + "readable-stream": "~2.0.5" 4559 + } 4560 + }, 4561 + "node_modules/request/node_modules/isarray": { 4562 + "version": "1.0.0", 4563 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 4564 + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", 4565 + "license": "MIT", 4566 + "optional": true 4567 + }, 4568 + "node_modules/request/node_modules/readable-stream": { 4569 + "version": "2.0.6", 4570 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", 4571 + "integrity": "sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==", 4572 + "license": "MIT", 4573 + "optional": true, 4574 + "dependencies": { 4575 + "core-util-is": "~1.0.0", 4576 + "inherits": "~2.0.1", 4577 + "isarray": "~1.0.0", 4578 + "process-nextick-args": "~1.0.6", 4579 + "string_decoder": "~0.10.x", 4580 + "util-deprecate": "~1.0.1" 4581 + } 4582 + }, 4583 + "node_modules/request/node_modules/string_decoder": { 4584 + "version": "0.10.31", 4585 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 4586 + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", 4587 + "license": "MIT", 4588 + "optional": true 4589 + }, 4590 + "node_modules/resolve": { 4591 + "version": "1.22.11", 4592 + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", 4593 + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", 4594 + "dev": true, 4595 + "license": "MIT", 4596 + "dependencies": { 4597 + "is-core-module": "^2.16.1", 4598 + "path-parse": "^1.0.7", 4599 + "supports-preserve-symlinks-flag": "^1.0.0" 4600 + }, 4601 + "bin": { 4602 + "resolve": "bin/resolve" 4603 + }, 4604 + "engines": { 4605 + "node": ">= 0.4" 4606 + }, 4607 + "funding": { 4608 + "url": "https://github.com/sponsors/ljharb" 4609 + } 4610 + }, 4611 + "node_modules/ret": { 4612 + "version": "0.1.15", 4613 + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", 4614 + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", 4615 + "license": "MIT", 4616 + "engines": { 4617 + "node": ">=0.12" 4618 + } 4619 + }, 4620 + "node_modules/rimraf": { 4621 + "version": "2.5.4", 4622 + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", 4623 + "integrity": "sha512-Lw7SHMjssciQb/rRz7JyPIy9+bbUshEucPoLRvWqy09vC5zQixl8Uet+Zl+SROBB/JMWHJRdCk1qdxNWHNMvlQ==", 4624 + "deprecated": "Rimraf versions prior to v4 are no longer supported", 4625 + "license": "ISC", 4626 + "optional": true, 4627 + "dependencies": { 4628 + "glob": "^7.0.5" 4629 + }, 4630 + "bin": { 4631 + "rimraf": "bin.js" 4632 + } 4633 + }, 4634 + "node_modules/ripemd160": { 4635 + "version": "1.0.1", 4636 + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-1.0.1.tgz", 4637 + "integrity": "sha512-J0YlH2ow/i7d5PJX9RC1XnjmZc7cNNYWe89PIlFszvHeiEtxzA1/VYePkjQ7l1SkUejAcHeDo3IVp2WIzstXXQ==", 4638 + "dev": true, 4639 + "license": "BSD-3-Clause" 4640 + }, 4641 + "node_modules/rsa-compat": { 4642 + "version": "1.2.7", 4643 + "resolved": "https://registry.npmjs.org/rsa-compat/-/rsa-compat-1.2.7.tgz", 4644 + "integrity": "sha512-k9l39pKnoQ257/Vu9mhbGiYvChc4BaiAtjJ/d6btyEi2+k46W94Xh+piof97ypzcD0pVdAnAMOXT6nb+2WxiaA==", 4645 + "license": "(MIT OR Apache-2.0)", 4646 + "optional": true, 4647 + "dependencies": { 4648 + "buffer-v6-polyfill": "^1.0.3", 4649 + "node-forge": "^0.6.41" 4650 + }, 4651 + "bin": { 4652 + "rsa-keygen-js": "bin/rsa-keygen.js" 4653 + }, 4654 + "optionalDependencies": { 4655 + "ursa": "^0.9.4" 4656 + } 4657 + }, 4658 + "node_modules/safe-buffer": { 4659 + "version": "5.2.1", 4660 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 4661 + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 4662 + "funding": [ 4663 + { 4664 + "type": "github", 4665 + "url": "https://github.com/sponsors/feross" 4666 + }, 4667 + { 4668 + "type": "patreon", 4669 + "url": "https://www.patreon.com/feross" 4670 + }, 4671 + { 4672 + "type": "consulting", 4673 + "url": "https://feross.org/support" 4674 + } 4675 + ], 4676 + "license": "MIT" 4677 + }, 4678 + "node_modules/safe-replace": { 4679 + "version": "1.0.2", 4680 + "resolved": "https://registry.npmjs.org/safe-replace/-/safe-replace-1.0.2.tgz", 4681 + "integrity": "sha512-MpcY3osIccSpsVtlCswRxt1qaWqcQoUCVtOD/4fap2BoJAE2b5jP32s2K6VTFHQBN03Gb9CGVwn77T0cTcW1nw==", 4682 + "license": "(MIT OR Apache-2.0)", 4683 + "optional": true 4684 + }, 4685 + "node_modules/secret-handshake": { 4686 + "version": "1.1.1", 4687 + "resolved": "https://registry.npmjs.org/secret-handshake/-/secret-handshake-1.1.1.tgz", 4688 + "integrity": "sha512-24n9/+iIVJ7VfdoY2qO1AfKg/CFEi1tPXV3+hUJLrbT9esH/W7mwvnMmD4Nbou7vOC6c+qIMOuxRlFCiVoa/eQ==", 4689 + "license": "MIT", 4690 + "dependencies": { 4691 + "chloride": "^2.0.1", 4692 + "deep-equal": "~1.0.0", 4693 + "pull-box-stream": "^1.0.9", 4694 + "pull-handshake": "^1.1.1", 4695 + "pull-stream": "^3.4.5" 4696 + } 4697 + }, 4698 + "node_modules/semver": { 4699 + "version": "5.7.2", 4700 + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", 4701 + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", 4702 + "license": "ISC", 4703 + "bin": { 4704 + "semver": "bin/semver" 4705 + } 4706 + }, 4707 + "node_modules/separator-escape": { 4708 + "version": "0.0.0", 4709 + "resolved": "https://registry.npmjs.org/separator-escape/-/separator-escape-0.0.0.tgz", 4710 + "integrity": "sha512-u5Na+20Qk6SEr/3MgAaw6JMddE5+nmhaI+a0PZ4AkfEwDc+zH/Qlm4pHwE2kquw2aZ39758YEkJaVOhFYiRzNQ==", 4711 + "license": "MIT" 4712 + }, 4713 + "node_modules/set-blocking": { 4714 + "version": "2.0.0", 4715 + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 4716 + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", 4717 + "license": "ISC" 4718 + }, 4719 + "node_modules/set-function-length": { 4720 + "version": "1.2.2", 4721 + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", 4722 + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", 4723 + "dev": true, 4724 + "license": "MIT", 4725 + "dependencies": { 4726 + "define-data-property": "^1.1.4", 4727 + "es-errors": "^1.3.0", 4728 + "function-bind": "^1.1.2", 4729 + "get-intrinsic": "^1.2.4", 4730 + "gopd": "^1.0.1", 4731 + "has-property-descriptors": "^1.0.2" 4732 + }, 4733 + "engines": { 4734 + "node": ">= 0.4" 4735 + } 4736 + }, 4737 + "node_modules/sha.js": { 4738 + "version": "2.4.5", 4739 + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.5.tgz", 4740 + "integrity": "sha512-459AP5kwdIhtMLLE1+h2q5a6E7hyY7Ri88GUIhFsyrQinKkm+7qj1ARHELow7GkFS7oimWmIwhXTSxBsuNuOsw==", 4741 + "license": "MIT", 4742 + "dependencies": { 4743 + "inherits": "^2.0.1" 4744 + }, 4745 + "bin": { 4746 + "sha.js": "bin.js" 4747 + } 4748 + }, 4749 + "node_modules/shasum": { 4750 + "version": "1.0.2", 4751 + "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", 4752 + "integrity": "sha512-UTzHm/+AzKfO9RgPgRpDIuMSNie1ubXRaljjlhFMNGYoG7z+rm9AHLPMf70R7887xboDH9Q+5YQbWKObFHEAtw==", 4753 + "dev": true, 4754 + "license": "MIT", 4755 + "dependencies": { 4756 + "json-stable-stringify": "~0.0.0", 4757 + "sha.js": "~2.4.4" 4758 + } 4759 + }, 4760 + "node_modules/shell-quote": { 4761 + "version": "1.8.3", 4762 + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", 4763 + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", 4764 + "dev": true, 4765 + "license": "MIT", 4766 + "engines": { 4767 + "node": ">= 0.4" 4768 + }, 4769 + "funding": { 4770 + "url": "https://github.com/sponsors/ljharb" 4771 + } 4772 + }, 4773 + "node_modules/signal-exit": { 4774 + "version": "3.0.1", 4775 + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.1.tgz", 4776 + "integrity": "sha512-jMxoxd0fzr1lrcP3NJqu4d+DG0R41ZvTsnO8HUYmtN0oFzi0WijhuYJfsofAT7NhWcqhJfqa4auDDTTb0I1rYw==", 4777 + "license": "ISC" 4778 + }, 4779 + "node_modules/simple-concat": { 4780 + "version": "1.0.1", 4781 + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", 4782 + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", 4783 + "funding": [ 4784 + { 4785 + "type": "github", 4786 + "url": "https://github.com/sponsors/feross" 4787 + }, 4788 + { 4789 + "type": "patreon", 4790 + "url": "https://www.patreon.com/feross" 4791 + }, 4792 + { 4793 + "type": "consulting", 4794 + "url": "https://feross.org/support" 4795 + } 4796 + ], 4797 + "license": "MIT" 4798 + }, 4799 + "node_modules/simple-get": { 4800 + "version": "1.4.3", 4801 + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-1.4.3.tgz", 4802 + "integrity": "sha512-ddVP3P/VdMhY0DFWh5oxKMThsGYjlEJBD/mXuyzfCHOqpaa56XpLDvtv4tzcQ1Z2CWgFGEu5zFwCCxpV1xV0fQ==", 4803 + "license": "MIT", 4804 + "optional": true, 4805 + "dependencies": { 4806 + "once": "^1.3.1", 4807 + "unzip-response": "^1.0.0", 4808 + "xtend": "^4.0.0" 4809 + } 4810 + }, 4811 + "node_modules/simple-mime": { 4812 + "version": "0.1.0", 4813 + "resolved": "https://registry.npmjs.org/simple-mime/-/simple-mime-0.1.0.tgz", 4814 + "integrity": "sha512-2EoTElzj77w0hV4lW6nWdA+MR+81hviMBhEc/ppUi0+Q311EFCvwKrGS7dcxqvGRKnUdbAyqPJtBQbRYgmtmvQ==", 4815 + "engines": [ 4816 + "node >= 0.2.0" 4817 + ] 4818 + }, 4819 + "node_modules/smart-buffer": { 4820 + "version": "1.0.11", 4821 + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-1.0.11.tgz", 4822 + "integrity": "sha512-D6zJTJiHCgEX+caCflF8FK6bbCm7rOrw7T5DExcP/9kyCKWySJM4No7IJhzcF6d4oGys8+MSAFrjfaudrI02eg==", 4823 + "license": "MIT", 4824 + "engines": { 4825 + "node": ">= 0.10.15", 4826 + "npm": ">= 1.3.5" 4827 + } 4828 + }, 4829 + "node_modules/sntp": { 4830 + "version": "1.0.9", 4831 + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", 4832 + "integrity": "sha512-7bgVOAnPj3XjrKY577S+puCKGCRlUrcrEdsMeRXlg9Ghf5df/xNi6sONUa43WrHUd3TjJBF7O04jYoiY0FVa0A==", 4833 + "deprecated": "This module moved to @hapi/sntp. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.", 4834 + "optional": true, 4835 + "dependencies": { 4836 + "hoek": "2.x.x" 4837 + }, 4838 + "engines": { 4839 + "node": ">=0.8.0" 4840 + } 4841 + }, 4842 + "node_modules/socks": { 4843 + "version": "1.1.9", 4844 + "resolved": "https://registry.npmjs.org/socks/-/socks-1.1.9.tgz", 4845 + "integrity": "sha512-EgVaUkNNlJ/Fi4USs0QV8JzTxOgRcBOszWQPwderdc27LhgF1VWOiB9D1VzLtenGuezlyVe9GhscFlnicFHvsA==", 4846 + "deprecated": "If using 2.x branch, please upgrade to at least 2.1.6 to avoid a serious bug with socket data flow and an import issue introduced in 2.1.0", 4847 + "license": "MIT", 4848 + "dependencies": { 4849 + "ip": "^1.1.2", 4850 + "smart-buffer": "^1.0.4" 4851 + }, 4852 + "engines": { 4853 + "node": ">= 0.10.0", 4854 + "npm": ">= 1.3.5" 4855 + } 4856 + }, 4857 + "node_modules/sodium-browserify": { 4858 + "version": "1.2.0", 4859 + "resolved": "https://registry.npmjs.org/sodium-browserify/-/sodium-browserify-1.2.0.tgz", 4860 + "integrity": "sha512-tblnZTeTr80l+FmPnybHyGWKmPYbrnuVyepI3TSaJYoWaGhjPeEwwCpODVSnhtOK6y+y/yrEsbKY1svQBx9RXQ==", 4861 + "license": "MIT", 4862 + "dependencies": { 4863 + "libsodium-wrappers": "^0.2.9", 4864 + "sha.js": "^2.4.4", 4865 + "tweetnacl": "^0.14.1" 4866 + } 4867 + }, 4868 + "node_modules/sodium-browserify-tweetnacl": { 4869 + "version": "0.2.1", 4870 + "resolved": "https://registry.npmjs.org/sodium-browserify-tweetnacl/-/sodium-browserify-tweetnacl-0.2.1.tgz", 4871 + "integrity": "sha512-Zp2I5qebwmT3Lc3GXkluLgLySlMu0t/rRGgzyMbbIy4I2Mh8hAMtvWHqDt1xINS8gZl5ENgQnaQY0kXqvX0pug==", 4872 + "license": "MIT", 4873 + "dependencies": { 4874 + "chloride-test": "^1.1.0", 4875 + "ed2curve": "^0.1.4", 4876 + "sha.js": "^2.4.5", 4877 + "tweetnacl": "^0.14.1", 4878 + "tweetnacl-auth": "^0.3.0" 4879 + } 4880 + }, 4881 + "node_modules/sodium-prebuilt": { 4882 + "version": "1.0.22", 4883 + "resolved": "https://registry.npmjs.org/sodium-prebuilt/-/sodium-prebuilt-1.0.22.tgz", 4884 + "integrity": "sha512-yG+3uIjXjdmOVkhsrnkgIEiwln8km2qUUOQcv9+YzdZYHr2gPw2D/Y2xOdflmFE+wdMbF+FRW+SSieP+jpTvmg==", 4885 + "hasInstallScript": true, 4886 + "license": "MIT", 4887 + "optional": true, 4888 + "dependencies": { 4889 + "nan": "^2.0.9", 4890 + "prebuild": "^4.1.0" 4891 + } 4892 + }, 4893 + "node_modules/source-map": { 4894 + "version": "0.5.6", 4895 + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", 4896 + "integrity": "sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==", 4897 + "dev": true, 4898 + "license": "BSD-3-Clause", 4899 + "engines": { 4900 + "node": ">=0.10.0" 4901 + } 4902 + }, 4903 + "node_modules/split-buffer": { 4904 + "version": "1.0.0", 4905 + "resolved": "https://registry.npmjs.org/split-buffer/-/split-buffer-1.0.0.tgz", 4906 + "integrity": "sha512-cbHOF413jAsBL7JLpU1RWX07Xs+dPb25DbeCvwDzSN3+4bNmRPJa2QHpDdtREgGKgIfx6Tzj/jiqyOS3kNLPnQ==", 4907 + "license": "MIT" 4908 + }, 4909 + "node_modules/ssb-avatar": { 4910 + "version": "0.2.0", 4911 + "resolved": "https://registry.npmjs.org/ssb-avatar/-/ssb-avatar-0.2.0.tgz", 4912 + "integrity": "sha512-rv1SwQDE7OhavLWIbTxvWf2R2Qq3svp7OLT+49OECr8kSrQN1XGQqeI1bVdzFSr0DBwjxHES56+2FLkhk6Qmvw==", 4913 + "license": "MIT", 4914 + "dependencies": { 4915 + "pull-cat": "^1.1.9", 4916 + "pull-stream": "^3.4.3", 4917 + "ssb-msgs": "^5.2.0", 4918 + "ssb-ref": "^2.3.2" 4919 + } 4920 + }, 4921 + "node_modules/ssb-client": { 4922 + "version": "4.3.0", 4923 + "resolved": "https://registry.npmjs.org/ssb-client/-/ssb-client-4.3.0.tgz", 4924 + "integrity": "sha512-nYQYWa2KhzmkVsKqtngoeMY20CQHY/rClfz4RbvtjJUkUJgowoNxOEC7WGp+1EWh/hjrl2+LyAKJMs/OPiuRbg==", 4925 + "license": "MIT", 4926 + "dependencies": { 4927 + "explain-error": "^1.0.1", 4928 + "multiserver": "^1.7.0", 4929 + "muxrpc": "^6.3.3", 4930 + "ssb-config": "^2.0.0", 4931 + "ssb-keys": "^6.0.0" 4932 + } 4933 + }, 4934 + "node_modules/ssb-config": { 4935 + "version": "2.2.0", 4936 + "resolved": "https://registry.npmjs.org/ssb-config/-/ssb-config-2.2.0.tgz", 4937 + "integrity": "sha512-+ib7Xfw+6y4mlNNPv79FQhbVXGkzs147lScSjzy6mLXSfdOvQ+FCK1IkfH9rQwYqYBzvzqwpWiaWx0Uvl+vDHg==", 4938 + "license": "MIT", 4939 + "dependencies": { 4940 + "deep-extend": "^0.4.0", 4941 + "non-private-ip": "^1.2.1", 4942 + "os-homedir": "^1.0.1", 4943 + "rc": "^1.1.6" 4944 + } 4945 + }, 4946 + "node_modules/ssb-feed": { 4947 + "version": "2.2.1", 4948 + "resolved": "https://registry.npmjs.org/ssb-feed/-/ssb-feed-2.2.1.tgz", 4949 + "integrity": "sha512-1V9KvBU3BHafWy6+090LJdpFg51qKCrvP27GqBje38KO2exIS1TlPq3Bfu17p7ME5jv3s7DRABx5vIhuQcV+XQ==", 4950 + "license": "MIT", 4951 + "dependencies": { 4952 + "cont": "~1.0.3", 4953 + "monotonic-timestamp": "~0.0.9", 4954 + "pull-stream": "^3.4.2", 4955 + "ssb-keys": "^6.0.0", 4956 + "ssb-ref": "^2.0.0" 4957 + } 4958 + }, 4959 + "node_modules/ssb-git": { 4960 + "version": "0.4.1", 4961 + "resolved": "https://registry.npmjs.org/ssb-git/-/ssb-git-0.4.1.tgz", 4962 + "integrity": "sha512-ynvSboLrJsOn3rW/kxM3IvmdFug5Tp/dj//K2D8tlT9ZxddYEmlOHKtYYafkcTCwy2H8HtnsTtyGie1hiLke3g==", 4963 + "license": "Fair" 4964 + }, 4965 + "node_modules/ssb-keys": { 4966 + "version": "6.1.2", 4967 + "resolved": "https://registry.npmjs.org/ssb-keys/-/ssb-keys-6.1.2.tgz", 4968 + "integrity": "sha512-qOfeRDVcfPZ+SmZjfcOxC1eF8r5V5BNF4SPyGQeX4dq5/9D6t1LdAIesQnd7My8H6OK2uuF848NCqhf0qQHpMw==", 4969 + "license": "MIT", 4970 + "dependencies": { 4971 + "blake2s": "~1.0.0", 4972 + "chloride": "^2.2.0", 4973 + "deep-equal": "~0.2.1", 4974 + "hmac": "~1.0.1", 4975 + "mkdirp": "~0.5.0", 4976 + "private-box": "^0.2.1", 4977 + "ssb-ref": "^2.0.0" 4978 + } 4979 + }, 4980 + "node_modules/ssb-keys/node_modules/deep-equal": { 4981 + "version": "0.2.2", 4982 + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.2.2.tgz", 4983 + "integrity": "sha512-FXgye2Jr6oEk01S7gmSrHrPEQ1ontR7wwl+nYiZ8h4SXlHVm0DYda74BIPcHz2s2qPz4+375IcAz1vsWLwddgQ==", 4984 + "license": "MIT" 4985 + }, 4986 + "node_modules/ssb-links": { 4987 + "version": "2.0.1", 4988 + "resolved": "https://registry.npmjs.org/ssb-links/-/ssb-links-2.0.1.tgz", 4989 + "integrity": "sha512-Kv6hmrhHQctlz/91Hct9fqheCuoTyagmR7/b73bco27TCaJGwUAenutauCEY+9YHnYkDSTKPT2vcVr7OJLXaVg==", 4990 + "license": "MIT", 4991 + "dependencies": { 4992 + "flumeview-query": "^4.0.0", 4993 + "pull-stream": "^3.1.0", 4994 + "ssb-msgs": "^5.2.0", 4995 + "streamview-links": "^2.0.0" 4996 + } 4997 + }, 4998 + "node_modules/ssb-markdown": { 4999 + "version": "3.0.0", 5000 + "resolved": "https://registry.npmjs.org/ssb-markdown/-/ssb-markdown-3.0.0.tgz", 5001 + "integrity": "sha512-pHtIpsC4Nt30PyyK2fMVNC0w5Cy/jpHfp8xK03k5wyu4Vv4PtGovKK3g6UL2O/+8aw7ue3B+JiLpGDVUKL5suQ==", 5002 + "license": "MIT", 5003 + "dependencies": { 5004 + "emoji-named-characters": "^1.0.2", 5005 + "ssb-marked": "^0.5.4", 5006 + "ssb-msgs": "^5.2.0", 5007 + "ssb-ref": "^2.3.0" 5008 + } 5009 + }, 5010 + "node_modules/ssb-marked": { 5011 + "version": "0.5.4", 5012 + "resolved": "https://registry.npmjs.org/ssb-marked/-/ssb-marked-0.5.4.tgz", 5013 + "integrity": "sha512-0iFQjakjxW7hxlai+GHE7T+xnJUsWA+cpPpr4Y7aEJGZXjgwMp80S8ZR7uRhqV1JG1z33LJRC7jgw23LilSJGA==", 5014 + "license": "MIT", 5015 + "bin": { 5016 + "ssb-marked": "bin/marked" 5017 + } 5018 + }, 5019 + "node_modules/ssb-mentions": { 5020 + "version": "0.1.0", 5021 + "resolved": "https://registry.npmjs.org/ssb-mentions/-/ssb-mentions-0.1.0.tgz", 5022 + "integrity": "sha512-L51ec1iGKNMz70ulzDB8UCWbIzMo/tge7VorqunOi/KV1XDtiWd/NdTIpcRdxGOR9Srf8T9K9DRYzHPU9sxDug==", 5023 + "license": "MIT", 5024 + "dependencies": { 5025 + "ssb-marked": "^0.5.4", 5026 + "ssb-ref": "^2.3.0" 5027 + } 5028 + }, 5029 + "node_modules/ssb-msgs": { 5030 + "version": "5.2.0", 5031 + "resolved": "https://registry.npmjs.org/ssb-msgs/-/ssb-msgs-5.2.0.tgz", 5032 + "integrity": "sha512-a5SF3fnXhXhcEIT406QNPftf+9YbPWFYFABNudreB19RrE0N3JsJL7bm/eKWgVd0fXNpARZJF3f5BYYMUv6lFw==", 5033 + "license": "MIT", 5034 + "dependencies": { 5035 + "ssb-ref": "^2.0.0" 5036 + } 5037 + }, 5038 + "node_modules/ssb-query": { 5039 + "version": "0.1.2", 5040 + "resolved": "https://registry.npmjs.org/ssb-query/-/ssb-query-0.1.2.tgz", 5041 + "integrity": "sha512-cv4W/0a4rW/7YlrH7m7fKokORUdx+9DezorYQoIy8IMvFeYIoBpCFj230VsZ9/K0eCnvbE+eMK09NcVuCO2yvw==", 5042 + "license": "MIT", 5043 + "dependencies": { 5044 + "explain-error": "^1.0.1", 5045 + "pull-stream": "^3.4.2", 5046 + "streamview-links": "^2.0.0" 5047 + } 5048 + }, 5049 + "node_modules/ssb-ref": { 5050 + "version": "2.16.0", 5051 + "resolved": "https://registry.npmjs.org/ssb-ref/-/ssb-ref-2.16.0.tgz", 5052 + "integrity": "sha512-ylyrfz9NLxwTCbeDDAdLo++O3elhNs6/gUqMhZ22F+gSOIjwXy2X7dpg5Q1YTH7uALOSu307Rpo1UfK9sj7Sjw==", 5053 + "license": "MIT", 5054 + "dependencies": { 5055 + "ip": "^1.1.3", 5056 + "is-canonical-base64": "^1.1.1", 5057 + "is-valid-domain": "~0.0.1", 5058 + "multiserver-address": "^1.0.1" 5059 + } 5060 + }, 5061 + "node_modules/ssb-sort": { 5062 + "version": "1.0.0", 5063 + "resolved": "https://registry.npmjs.org/ssb-sort/-/ssb-sort-1.0.0.tgz", 5064 + "integrity": "sha512-qahpQ/wnxoaSlK0QnQEwilANmuD9MhzTH9FNhwzhdyqs0ZXp2r0eOXPiwY7B/U5RJAQ0G8TBLUTrrhwWfh0T5w==", 5065 + "license": "MIT", 5066 + "dependencies": { 5067 + "ssb-ref": "^2.3.0" 5068 + } 5069 + }, 5070 + "node_modules/ssb-ws": { 5071 + "version": "0.6.2", 5072 + "resolved": "https://registry.npmjs.org/ssb-ws/-/ssb-ws-0.6.2.tgz", 5073 + "integrity": "sha512-RRtXWmGrnNFfZlE7pl3yAashMGmGI51NOOpIO00kjQwNIzoryUEIZRrtc5l9rqXRh5nlNIrcNLP/PEOAEpEPWQ==", 5074 + "license": "MIT", 5075 + "dependencies": { 5076 + "multiblob-http": "^0.2.0", 5077 + "multiserver": "^1.2.0", 5078 + "muxrpc": "^6.3.3", 5079 + "pull-stream": "^3.4.3", 5080 + "ssb-ref": "^2.3.0", 5081 + "ssb-sort": "0.0.0", 5082 + "stack": "^0.1.0", 5083 + "web-bootloader": "^0.1.0" 5084 + }, 5085 + "optionalDependencies": { 5086 + "letsencrypt-express": "^1.1.5" 5087 + } 5088 + }, 5089 + "node_modules/ssb-ws/node_modules/ssb-sort": { 5090 + "version": "0.0.0", 5091 + "resolved": "https://registry.npmjs.org/ssb-sort/-/ssb-sort-0.0.0.tgz", 5092 + "integrity": "sha512-wd6WoIaQ+6UHXa5YYpTJtnMXIHgyQa1N9Pi43/DAgaaUX2w4RzmJIgW4x5EnQAH+8XRLB4XjNyRLqwsa/nKohA==", 5093 + "license": "MIT", 5094 + "dependencies": { 5095 + "ssb-ref": "^2.3.0" 5096 + } 5097 + }, 5098 + "node_modules/sshpk": { 5099 + "version": "1.10.1", 5100 + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.10.1.tgz", 5101 + "integrity": "sha512-ywhcxCSLw4u+wfJM4XDCtuyXmGEiJ3kHZcnaiehYztqaRf3hj9RE8yamh77ToBD59GxfrQZawktGV+vm8cFdPw==", 5102 + "license": "MIT", 5103 + "optional": true, 5104 + "dependencies": { 5105 + "asn1": "~0.2.3", 5106 + "assert-plus": "^1.0.0", 5107 + "dashdash": "^1.12.0", 5108 + "getpass": "^0.1.1" 5109 + }, 5110 + "bin": { 5111 + "sshpk-conv": "bin/sshpk-conv", 5112 + "sshpk-sign": "bin/sshpk-sign", 5113 + "sshpk-verify": "bin/sshpk-verify" 5114 + }, 5115 + "engines": { 5116 + "node": ">=0.10.0" 5117 + }, 5118 + "optionalDependencies": { 5119 + "bcrypt-pbkdf": "^1.0.0", 5120 + "ecc-jsbn": "~0.1.1", 5121 + "jodid25519": "^1.0.0", 5122 + "jsbn": "~0.1.0", 5123 + "tweetnacl": "~0.14.0" 5124 + } 5125 + }, 5126 + "node_modules/sshpk/node_modules/assert-plus": { 5127 + "version": "1.0.0", 5128 + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 5129 + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", 5130 + "license": "MIT", 5131 + "optional": true, 5132 + "engines": { 5133 + "node": ">=0.8" 5134 + } 5135 + }, 5136 + "node_modules/stack": { 5137 + "version": "0.1.0", 5138 + "resolved": "https://registry.npmjs.org/stack/-/stack-0.1.0.tgz", 5139 + "integrity": "sha512-MCDcCsqemsYpCg/eeR48p6RqA18We4AaXcYmiZyppx27AA58oleDMZpG+ewRA61vG5iUeAGPHinkFQg/REZMfA==", 5140 + "engines": [ 5141 + "node >= 0.2.0" 5142 + ] 5143 + }, 5144 + "node_modules/stream-browserify": { 5145 + "version": "2.0.1", 5146 + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", 5147 + "integrity": "sha512-nmQnY9D9TlnfQIkYJCCWxvCcQODilFRZIw14gCMYQVXOiY4E1Ze1VMxB+6y3qdXHpTordULo2qWloHmNcNAQYw==", 5148 + "dev": true, 5149 + "license": "MIT", 5150 + "dependencies": { 5151 + "inherits": "~2.0.1", 5152 + "readable-stream": "^2.0.2" 5153 + } 5154 + }, 5155 + "node_modules/stream-combiner2": { 5156 + "version": "1.1.1", 5157 + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", 5158 + "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", 5159 + "dev": true, 5160 + "license": "MIT", 5161 + "dependencies": { 5162 + "duplexer2": "~0.1.0", 5163 + "readable-stream": "^2.0.2" 5164 + } 5165 + }, 5166 + "node_modules/stream-http": { 5167 + "version": "3.2.0", 5168 + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", 5169 + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", 5170 + "dev": true, 5171 + "license": "MIT", 5172 + "dependencies": { 5173 + "builtin-status-codes": "^3.0.0", 5174 + "inherits": "^2.0.4", 5175 + "readable-stream": "^3.6.0", 5176 + "xtend": "^4.0.2" 5177 + } 5178 + }, 5179 + "node_modules/stream-http/node_modules/inherits": { 5180 + "version": "2.0.4", 5181 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 5182 + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 5183 + "dev": true, 5184 + "license": "ISC" 5185 + }, 5186 + "node_modules/stream-http/node_modules/readable-stream": { 5187 + "version": "3.6.2", 5188 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", 5189 + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", 5190 + "dev": true, 5191 + "license": "MIT", 5192 + "dependencies": { 5193 + "inherits": "^2.0.3", 5194 + "string_decoder": "^1.1.1", 5195 + "util-deprecate": "^1.0.1" 5196 + }, 5197 + "engines": { 5198 + "node": ">= 6" 5199 + } 5200 + }, 5201 + "node_modules/stream-http/node_modules/xtend": { 5202 + "version": "4.0.2", 5203 + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 5204 + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 5205 + "dev": true, 5206 + "license": "MIT", 5207 + "engines": { 5208 + "node": ">=0.4" 5209 + } 5210 + }, 5211 + "node_modules/stream-splicer": { 5212 + "version": "2.0.0", 5213 + "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz", 5214 + "integrity": "sha512-lrpyV50Z1AGT5PC4KMKaZX0+4H9V/Dh/6q8NpGqHbNeuraq8etHPRYlUvca2yRemGVkUBBcdIuyhqKDdgkKzkQ==", 5215 + "dev": true, 5216 + "license": "MIT", 5217 + "dependencies": { 5218 + "inherits": "^2.0.1", 5219 + "readable-stream": "^2.0.2" 5220 + } 5221 + }, 5222 + "node_modules/stream-to-pull-stream": { 5223 + "version": "1.7.2", 5224 + "resolved": "https://registry.npmjs.org/stream-to-pull-stream/-/stream-to-pull-stream-1.7.2.tgz", 5225 + "integrity": "sha512-KSa5iA3hxM33WYgeKY5CITZdArSw+GFjbTRb/NjSMLz+4o1ijkiub5A8HeD11cbcHMPnkBUNWDJaRmINSWgk8A==", 5226 + "license": "MIT", 5227 + "dependencies": { 5228 + "looper": "^3.0.0", 5229 + "pull-stream": "^3.2.3" 5230 + } 5231 + }, 5232 + "node_modules/streamview-links": { 5233 + "version": "2.1.1", 5234 + "resolved": "https://registry.npmjs.org/streamview-links/-/streamview-links-2.1.1.tgz", 5235 + "integrity": "sha512-tmv/Afk/7X20B5LDULZ4gNNZuMR9tZPPSgNoZhLAlpZ9rCg/b0Gs0KFS9KweIJ96U+EU54SiOWjetzQynTPw/g==", 5236 + "license": "MIT", 5237 + "dependencies": { 5238 + "bytewise": "^1.1.0", 5239 + "explain-error": "^1.0.1", 5240 + "level": "^1.4.0", 5241 + "ltgt": "^2.1.2", 5242 + "map-filter-reduce": "^3.0.2", 5243 + "pull-level": "^2.0.2", 5244 + "pull-live": "^1.0.1", 5245 + "pull-paramap": "^1.1.3", 5246 + "pull-sink-through": "0.0.0", 5247 + "pull-stream": "^3.4.0", 5248 + "pull-write": "^1.0.2" 5249 + } 5250 + }, 5251 + "node_modules/string_decoder": { 5252 + "version": "1.3.0", 5253 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 5254 + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 5255 + "dev": true, 5256 + "license": "MIT", 5257 + "dependencies": { 5258 + "safe-buffer": "~5.2.0" 5259 + } 5260 + }, 5261 + "node_modules/string-width": { 5262 + "version": "1.0.2", 5263 + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 5264 + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", 5265 + "license": "MIT", 5266 + "dependencies": { 5267 + "code-point-at": "^1.0.0", 5268 + "is-fullwidth-code-point": "^1.0.0", 5269 + "strip-ansi": "^3.0.0" 5270 + }, 5271 + "engines": { 5272 + "node": ">=0.10.0" 5273 + } 5274 + }, 5275 + "node_modules/stringstream": { 5276 + "version": "0.0.5", 5277 + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", 5278 + "integrity": "sha512-QUQ1kThMjLRt4jA8lsn9lyIkE9bKafE7LDOL/nBBUY9Tfv2i3x1NAsVHG0uMCusFOWeeI6COhY/F20+avxRWSw==", 5279 + "license": "MIT", 5280 + "optional": true 5281 + }, 5282 + "node_modules/strip-ansi": { 5283 + "version": "3.0.1", 5284 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 5285 + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", 5286 + "license": "MIT", 5287 + "dependencies": { 5288 + "ansi-regex": "^2.0.0" 5289 + }, 5290 + "engines": { 5291 + "node": ">=0.10.0" 5292 + } 5293 + }, 5294 + "node_modules/strip-json-comments": { 5295 + "version": "1.0.4", 5296 + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", 5297 + "integrity": "sha512-AOPG8EBc5wAikaG1/7uFCNFJwnKOuQwFTpYBdTW6OvWHeZBQBrAA/amefHGrEiOnCPcLFZK6FUPtWVKpQVIRgg==", 5298 + "license": "MIT", 5299 + "bin": { 5300 + "strip-json-comments": "cli.js" 5301 + }, 5302 + "engines": { 5303 + "node": ">=0.8.0" 5304 + } 5305 + }, 5306 + "node_modules/style-properties": { 5307 + "version": "1.3.1", 5308 + "resolved": "https://registry.npmjs.org/style-properties/-/style-properties-1.3.1.tgz", 5309 + "integrity": "sha512-n+uc4rCIzXUZ6197c98Lq63f8G0SpRj9kzIZT4QNQ0PYUR+D0kdXyZiBUyjE1KO2RtAc0ETRDPUxTImRFjvHig==", 5310 + "license": "MIT" 5311 + }, 5312 + "node_modules/subarg": { 5313 + "version": "1.0.0", 5314 + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", 5315 + "integrity": "sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==", 5316 + "dev": true, 5317 + "license": "MIT", 5318 + "dependencies": { 5319 + "minimist": "^1.1.0" 5320 + } 5321 + }, 5322 + "node_modules/suggest-box": { 5323 + "version": "2.2.2", 5324 + "resolved": "https://registry.npmjs.org/suggest-box/-/suggest-box-2.2.2.tgz", 5325 + "integrity": "sha512-c9oZ8KJHY5IKz4T2JkQWkwggjIptjn9Io4AMvjneNxu0kIdqeSL5lS+NhBKrEbrES/lNDex5rwZLZPSGELmT1g==", 5326 + "license": "MIT", 5327 + "dependencies": { 5328 + "hyperscript": "~1.4.2", 5329 + "textarea-caret-position": "^0.1.1" 5330 + } 5331 + }, 5332 + "node_modules/supports-color": { 5333 + "version": "2.0.0", 5334 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 5335 + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", 5336 + "license": "MIT", 5337 + "optional": true, 5338 + "engines": { 5339 + "node": ">=0.8.0" 5340 + } 5341 + }, 5342 + "node_modules/supports-preserve-symlinks-flag": { 5343 + "version": "1.0.0", 5344 + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 5345 + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 5346 + "dev": true, 5347 + "license": "MIT", 5348 + "engines": { 5349 + "node": ">= 0.4" 5350 + }, 5351 + "funding": { 5352 + "url": "https://github.com/sponsors/ljharb" 5353 + } 5354 + }, 5355 + "node_modules/syntax-error": { 5356 + "version": "1.1.6", 5357 + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.1.6.tgz", 5358 + "integrity": "sha512-PR60b6QEsF95amTCi4TwqwH+FRTLjg90DOHiHBgvtauFafhnc8sDT4fXnNEXAbke1cCqrrJGDbFRlwSmo50mOQ==", 5359 + "dev": true, 5360 + "license": "MIT", 5361 + "dependencies": { 5362 + "acorn": "^2.7.0" 5363 + } 5364 + }, 5365 + "node_modules/syntax-error/node_modules/acorn": { 5366 + "version": "2.7.0", 5367 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", 5368 + "integrity": "sha512-pXK8ez/pVjqFdAgBkF1YPVRacuLQ9EXBKaKWaeh58WNfMkCmZhOZzu+NtKSPD5PHmCCHheQ5cD29qM1K4QTxIg==", 5369 + "dev": true, 5370 + "license": "MIT", 5371 + "bin": { 5372 + "acorn": "bin/acorn" 5373 + }, 5374 + "engines": { 5375 + "node": ">=0.4.0" 5376 + } 5377 + }, 5378 + "node_modules/tar": { 5379 + "version": "2.2.1", 5380 + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", 5381 + "integrity": "sha512-2Tw2uNtZqQTSHTIMbKHKFeAPmKcljrNKqKiIN7pu3V/CxYqRgS8DLXvMkFRrbtXlg6mTOQcuTX7DMj18Xi0dtg==", 5382 + "deprecated": "This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.", 5383 + "license": "ISC", 5384 + "optional": true, 5385 + "dependencies": { 5386 + "block-stream": "*", 5387 + "fstream": "^1.0.2", 5388 + "inherits": "2" 5389 + } 5390 + }, 5391 + "node_modules/tar-fs": { 5392 + "version": "1.13.2", 5393 + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.13.2.tgz", 5394 + "integrity": "sha512-2Aa6KmxE0o1aqYC/kfIEWsaAYkZUlm8S9kcwD3y5gG4v+mw8XtrhbgRwFPDYZSg+nvk1QsBUmKKOuNzhNSyb3w==", 5395 + "license": "MIT", 5396 + "dependencies": { 5397 + "mkdirp": "^0.5.0", 5398 + "pump": "^1.0.0", 5399 + "tar-stream": "^1.1.2" 5400 + } 5401 + }, 5402 + "node_modules/tar-stream": { 5403 + "version": "1.5.2", 5404 + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.2.tgz", 5405 + "integrity": "sha512-X2iZpARyDjlkj6Tz3nlI1lY4a4k+xEatPgQg7O2WiUMTXIrjVp8R86K3AdWfHp+Q3jsaLE2FLlHES+PA5zwAhA==", 5406 + "license": "MIT", 5407 + "dependencies": { 5408 + "bl": "^1.0.0", 5409 + "end-of-stream": "^1.0.0", 5410 + "readable-stream": "^2.0.0", 5411 + "xtend": "^4.0.0" 5412 + }, 5413 + "engines": { 5414 + "node": ">= 0.8.0" 5415 + } 5416 + }, 5417 + "node_modules/text-node-searcher": { 5418 + "version": "1.1.1", 5419 + "resolved": "https://registry.npmjs.org/text-node-searcher/-/text-node-searcher-1.1.1.tgz", 5420 + "integrity": "sha512-kQdQ9INlnxygZY9OPXE9LpSF4n2x2Cz7RXKGMiK7dIy717xYE3DLu25zOzK3o7ZKhy3f8yfcLsVzq//sc2aVvQ==", 5421 + "license": "Fair" 5422 + }, 5423 + "node_modules/textarea-caret-position": { 5424 + "version": "0.1.1", 5425 + "resolved": "https://registry.npmjs.org/textarea-caret-position/-/textarea-caret-position-0.1.1.tgz", 5426 + "integrity": "sha512-Dns++qU6E9eh/IweI8fiFrkARbKUfuUoSSbf9mwJaSziJ5DBGkM2SJ0tKjLotqhj58vfh0bBQDPPmi1AgDS+lg==", 5427 + "license": "ISC" 5428 + }, 5429 + "node_modules/through": { 5430 + "version": "2.3.8", 5431 + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 5432 + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", 5433 + "dev": true, 5434 + "license": "MIT" 5435 + }, 5436 + "node_modules/through2": { 5437 + "version": "2.0.1", 5438 + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz", 5439 + "integrity": "sha512-/vp02SIbpmVHapNMjox4hDBzykPdAOmH5y3INcKaxGfpEPSCMqzdWXyGfqPYyxoBLo1JpxBrlh3Z9esv0vWUYw==", 5440 + "dev": true, 5441 + "license": "MIT", 5442 + "dependencies": { 5443 + "readable-stream": "~2.0.0", 5444 + "xtend": "~4.0.0" 5445 + } 5446 + }, 5447 + "node_modules/through2/node_modules/isarray": { 5448 + "version": "1.0.0", 5449 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 5450 + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", 5451 + "dev": true, 5452 + "license": "MIT" 5453 + }, 5454 + "node_modules/through2/node_modules/readable-stream": { 5455 + "version": "2.0.6", 5456 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", 5457 + "integrity": "sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==", 5458 + "dev": true, 5459 + "license": "MIT", 5460 + "dependencies": { 5461 + "core-util-is": "~1.0.0", 5462 + "inherits": "~2.0.1", 5463 + "isarray": "~1.0.0", 5464 + "process-nextick-args": "~1.0.6", 5465 + "string_decoder": "~0.10.x", 5466 + "util-deprecate": "~1.0.1" 5467 + } 5468 + }, 5469 + "node_modules/through2/node_modules/string_decoder": { 5470 + "version": "0.10.31", 5471 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 5472 + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", 5473 + "dev": true, 5474 + "license": "MIT" 5475 + }, 5476 + "node_modules/timers-browserify": { 5477 + "version": "1.4.2", 5478 + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", 5479 + "integrity": "sha512-PIxwAupJZiYU4JmVZYwXp9FKsHMXb5h0ZEFyuXTAn8WLHOlcij+FEcbrvDsom1o5dr1YggEtFbECvGCW2sT53Q==", 5480 + "dev": true, 5481 + "dependencies": { 5482 + "process": "~0.11.0" 5483 + }, 5484 + "engines": { 5485 + "node": ">=0.6.0" 5486 + } 5487 + }, 5488 + "node_modules/to-arraybuffer": { 5489 + "version": "1.0.1", 5490 + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", 5491 + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", 5492 + "dev": true, 5493 + "license": "MIT" 5494 + }, 5495 + "node_modules/tough-cookie": { 5496 + "version": "2.3.1", 5497 + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.1.tgz", 5498 + "integrity": "sha512-3C8DIrKkBO8q3BIqcUB6zPuqua6wCso6ddmRmHjbJ5/OfJ6rrw6zTf1DFDsBSZbKNKC1XzfVJRxZrdcxyjEOjA==", 5499 + "license": "BSD-3-Clause", 5500 + "optional": true, 5501 + "engines": { 5502 + "node": ">=0.8" 5503 + } 5504 + }, 5505 + "node_modules/tty-browserify": { 5506 + "version": "0.0.1", 5507 + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", 5508 + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", 5509 + "dev": true, 5510 + "license": "MIT" 5511 + }, 5512 + "node_modules/tunnel-agent": { 5513 + "version": "0.4.3", 5514 + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", 5515 + "integrity": "sha512-e0IoVDWx8SDHc/hwFTqJDQ7CCDTEeGhmcT9jkWJjoGQSpgBz20nAMr80E3Tpk7PatJ1b37DQDgJR3CNSzcMOZQ==", 5516 + "license": "Apache-2.0", 5517 + "optional": true, 5518 + "engines": { 5519 + "node": "*" 5520 + } 5521 + }, 5522 + "node_modules/tweetnacl": { 5523 + "version": "0.14.3", 5524 + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.3.tgz", 5525 + "integrity": "sha512-wv+W579MMQ7iwO2XcHk72RPnBwAyRFMjizSdncxpyCHgA3jzbe8VQ5yGY5HEejR3AyywFaGIo5cJRR6ENdzFIA==", 5526 + "license": "SEE LICENSE IN COPYING.txt" 5527 + }, 5528 + "node_modules/tweetnacl-auth": { 5529 + "version": "0.3.0", 5530 + "resolved": "https://registry.npmjs.org/tweetnacl-auth/-/tweetnacl-auth-0.3.0.tgz", 5531 + "integrity": "sha512-yUBiLzJAva46d0zc6HixMid3ELzbdeDNkR87ycu0/MLsv7CIEYw+j2fJ2+7K5gvdmmeHzwluHA6nu5lxBzA3xg==", 5532 + "license": "Public domain", 5533 + "dependencies": { 5534 + "tweetnacl": "0.x.x" 5535 + } 5536 + }, 5537 + "node_modules/typedarray": { 5538 + "version": "0.0.6", 5539 + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 5540 + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", 5541 + "dev": true, 5542 + "license": "MIT" 5543 + }, 5544 + "node_modules/typewise": { 5545 + "version": "1.0.3", 5546 + "resolved": "https://registry.npmjs.org/typewise/-/typewise-1.0.3.tgz", 5547 + "integrity": "sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ==", 5548 + "license": "MIT", 5549 + "dependencies": { 5550 + "typewise-core": "^1.2.0" 5551 + } 5552 + }, 5553 + "node_modules/typewise-core": { 5554 + "version": "1.2.0", 5555 + "resolved": "https://registry.npmjs.org/typewise-core/-/typewise-core-1.2.0.tgz", 5556 + "integrity": "sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg==", 5557 + "license": "MIT" 5558 + }, 5559 + "node_modules/typewiselite": { 5560 + "version": "1.0.0", 5561 + "resolved": "https://registry.npmjs.org/typewiselite/-/typewiselite-1.0.0.tgz", 5562 + "integrity": "sha512-J9alhjVHupW3Wfz6qFRGgQw0N3gr8hOkw6zm7FZ6UR1Cse/oD9/JVok7DNE9TT9IbciDHX2Ex9+ksE6cRmtymw==", 5563 + "license": "MIT" 5564 + }, 5565 + "node_modules/ultron": { 5566 + "version": "1.0.2", 5567 + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", 5568 + "integrity": "sha512-QMpnpVtYaWEeY+MwKDN/UdKlE/LsFZXM5lO1u7GaZzNgmIbGixHEmVMIKT+vqYOALu3m5GYQy9kz4Xu4IVn7Ow==", 5569 + "license": "MIT" 5570 + }, 5571 + "node_modules/umd": { 5572 + "version": "3.0.1", 5573 + "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.1.tgz", 5574 + "integrity": "sha512-3npD+zDXGkXrLuoWfeeawVCNcRUnjcqLHWGifik86s+Md/YEoUqBt4yHsDNtwNLR6GY4hEw9eA/O13rD6/0skQ==", 5575 + "dev": true, 5576 + "license": "MIT", 5577 + "bin": { 5578 + "umd": "bin/cli.js" 5579 + } 5580 + }, 5581 + "node_modules/unzip-response": { 5582 + "version": "1.0.1", 5583 + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.1.tgz", 5584 + "integrity": "sha512-Gr4B7j6vDPqv2LKzC+5tC+j+vjV/PHNNQfNvuoRBzypaVkHwSwwcXIMG5B6KnKRup0oZFhwpjKcRZGKpI2EI1w==", 5585 + "license": "MIT", 5586 + "optional": true, 5587 + "engines": { 5588 + "node": ">=0.10.0" 5589 + } 5590 + }, 5591 + "node_modules/url": { 5592 + "version": "0.11.0", 5593 + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", 5594 + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", 5595 + "dev": true, 5596 + "license": "MIT", 5597 + "dependencies": { 5598 + "punycode": "1.3.2", 5599 + "querystring": "0.2.0" 5600 + } 5601 + }, 5602 + "node_modules/url-template": { 5603 + "version": "2.0.8", 5604 + "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", 5605 + "integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==", 5606 + "license": "BSD", 5607 + "optional": true 5608 + }, 5609 + "node_modules/url/node_modules/punycode": { 5610 + "version": "1.3.2", 5611 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", 5612 + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", 5613 + "dev": true, 5614 + "license": "MIT" 5615 + }, 5616 + "node_modules/ursa": { 5617 + "version": "0.9.4", 5618 + "resolved": "https://registry.npmjs.org/ursa/-/ursa-0.9.4.tgz", 5619 + "integrity": "sha512-bkSIu0TDNFrpKki28yXMCKB9sbxJBd2aSalXcY4qyzGLR3zw/Ln1vcU1RyGN1fjuGLFDbZ9AWN4rcAiKVMGkpQ==", 5620 + "hasInstallScript": true, 5621 + "license": "Apache-2.0", 5622 + "optional": true, 5623 + "dependencies": { 5624 + "bindings": "^1.2.1", 5625 + "nan": "^2.3.3" 5626 + }, 5627 + "engines": { 5628 + "node": ">=0.10.0" 5629 + } 5630 + }, 5631 + "node_modules/util": { 5632 + "version": "0.10.4", 5633 + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", 5634 + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", 5635 + "dev": true, 5636 + "license": "MIT", 5637 + "dependencies": { 5638 + "inherits": "2.0.3" 5639 + } 5640 + }, 5641 + "node_modules/util-deprecate": { 5642 + "version": "1.0.2", 5643 + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 5644 + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 5645 + "license": "MIT" 5646 + }, 5647 + "node_modules/util-extend": { 5648 + "version": "1.0.3", 5649 + "resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz", 5650 + "integrity": "sha512-mLs5zAK+ctllYBj+iAQvlDCwoxU/WDOUaJkcFudeiAX6OajC6BKXJUa9a+tbtkC11dz2Ufb7h0lyvIOVn4LADA==", 5651 + "license": "MIT", 5652 + "optional": true 5653 + }, 5654 + "node_modules/verror": { 5655 + "version": "1.3.6", 5656 + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", 5657 + "integrity": "sha512-i8GFYwImt5D5B8CPpi2jrDTy/faq4OEW+NkOTLSKcIdPfdYJvWv3VZddDKl0ByvBe6cJ2s5Mm2XDtv5c2pj/Eg==", 5658 + "engines": [ 5659 + "node >=0.6.0" 5660 + ], 5661 + "optional": true, 5662 + "dependencies": { 5663 + "extsprintf": "1.0.2" 5664 + } 5665 + }, 5666 + "node_modules/visualize-buffer": { 5667 + "version": "0.0.0", 5668 + "resolved": "https://registry.npmjs.org/visualize-buffer/-/visualize-buffer-0.0.0.tgz", 5669 + "integrity": "sha512-Op/yhLNL8K+eb2LAlt/uiS9OBicVG9rtKuoe4H3yqi42Z95vQerlGkRr+MOKCdjBeucdeRiYDGQruNjUdw3KNw==", 5670 + "license": "MIT" 5671 + }, 5672 + "node_modules/vm-browserify": { 5673 + "version": "1.1.2", 5674 + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", 5675 + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", 5676 + "dev": true, 5677 + "license": "MIT" 5678 + }, 5679 + "node_modules/waveform-data": { 5680 + "version": "1.5.3", 5681 + "resolved": "https://registry.npmjs.org/waveform-data/-/waveform-data-1.5.3.tgz", 5682 + "integrity": "sha512-4A9+iMBZ1KUkkkte6IYWA0dyBocp1K81ODBZ7iWGJig4PryfYZTKWLeb/MK+YGSzIVi7g2QfoXW6tOxbyMCvug==", 5683 + "license": "LGPL-3.0", 5684 + "dependencies": { 5685 + "audio-context": "^0.1.0" 5686 + } 5687 + }, 5688 + "node_modules/web-bootloader": { 5689 + "version": "0.1.2", 5690 + "resolved": "https://registry.npmjs.org/web-bootloader/-/web-bootloader-0.1.2.tgz", 5691 + "integrity": "sha512-qpD4MkUEPggBPUhiiVHssjTJKrlDMFT4DNuPkwpVv9bhhEP9LA/+LobCor4mUzuCJG+Yq/omQMVIHA9sM9o85w==", 5692 + "license": "MIT", 5693 + "dependencies": { 5694 + "arraybuffer-base64": "^1.0.0", 5695 + "binary-xhr": "0.0.2", 5696 + "hyperfile": "^1.1.1", 5697 + "hyperprogress": "^0.1.0" 5698 + } 5699 + }, 5700 + "node_modules/which": { 5701 + "version": "1.2.11", 5702 + "resolved": "https://registry.npmjs.org/which/-/which-1.2.11.tgz", 5703 + "integrity": "sha512-8kWuAZrtPpcfj0UM1rpIJopAawk+Uz+KxNSxk0U0j9fmekidFSRDhyrHOEbD5qePWF6YicG1wSUuFA6BfsE3ig==", 5704 + "license": "ISC", 5705 + "optional": true, 5706 + "dependencies": { 5707 + "isexe": "^1.1.1" 5708 + }, 5709 + "bin": { 5710 + "which": "bin/which" 5711 + } 5712 + }, 5713 + "node_modules/which-pm-runs": { 5714 + "version": "1.1.0", 5715 + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", 5716 + "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", 5717 + "license": "MIT", 5718 + "engines": { 5719 + "node": ">=4" 5720 + } 5721 + }, 5722 + "node_modules/wide-align": { 5723 + "version": "1.1.0", 5724 + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz", 5725 + "integrity": "sha512-rlD2ELOb94L+t1gMHCObqlC3QvrHVF1V5ipWEGm4vb9OK2C6ZTvluPg1Mfp2O9POtGb/3aZNxBpKOmx0JNVHSQ==", 5726 + "license": "ISC", 5727 + "dependencies": { 5728 + "string-width": "^1.0.1" 5729 + } 5730 + }, 5731 + "node_modules/wordwrap": { 5732 + "version": "0.0.3", 5733 + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", 5734 + "integrity": "sha512-1tMA907+V4QmxV7dbRvb4/8MaRALK6q9Abid3ndMYnbyo8piisCmeONVqVSXqQA3KaP4SLt5b7ud6E2sqP8TFw==", 5735 + "dev": true, 5736 + "license": "MIT", 5737 + "engines": { 5738 + "node": ">=0.4.0" 5739 + } 5740 + }, 5741 + "node_modules/wrappy": { 5742 + "version": "1.0.2", 5743 + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 5744 + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 5745 + "license": "ISC" 5746 + }, 5747 + "node_modules/ws": { 5748 + "version": "1.1.1", 5749 + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.1.tgz", 5750 + "integrity": "sha512-TRtCup+Fxoy1sW9funE4kPxA0KfaMc7g68DoKN+Uu9Ej+zr9We3DWVJ2XgiGtXlibqA7IWOV+Xe6xlUxPputfg==", 5751 + "license": "MIT", 5752 + "dependencies": { 5753 + "options": ">=0.0.5", 5754 + "ultron": "1.0.x" 5755 + } 5756 + }, 5757 + "node_modules/xtend": { 5758 + "version": "4.0.1", 5759 + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", 5760 + "integrity": "sha512-iTwvhNBRetXWe81+VcIw5YeadVSWyze7uA7nVnpP13ulrpnJ3UfQm5ApGnrkmxDJFdrblRdZs0EvaTCIfei5oQ==", 5761 + "license": "MIT", 5762 + "engines": { 5763 + "node": ">=0.4" 5764 + } 5765 + } 5766 + } 5767 + }
+72
patchbay/package.json
··· 1 + { 2 + "name": "patchbay", 3 + "description": "a pluggable patchwork", 4 + "version": "6.1.3", 5 + "homepage": "https://github.com/dominictarr/patchbay", 6 + "repository": { 7 + "type": "git", 8 + "url": "git://github.com/dominictarr/patchbay.git" 9 + }, 10 + "browser": { 11 + "electron": "./electron-shim.js" 12 + }, 13 + "dependencies": { 14 + "cont": "^1.0.3", 15 + "dataurl-": "^0.1.0", 16 + "depject": "^3.0.0", 17 + "hjson": "^2.0.3", 18 + "human-time": "0.0.1", 19 + "hypercombo": "0.1.0", 20 + "hypercrop": "^1.0.1", 21 + "hyperfile": "^1.1.0", 22 + "hyperlightbox": "^0.1.3", 23 + "hyperprogress": "0.1.0", 24 + "hyperscript": "^1.4.7", 25 + "hypertabs": "^3.0.0", 26 + "is-visible": "^2.0.4", 27 + "kvgraph": "^0.1.0", 28 + "map-filter-reduce": "^3.0.1", 29 + "mime-types": "^2.1.11", 30 + "moment": "^2.13.0", 31 + "open-external": "^0.1.1", 32 + "peaks.js": "^0.4.7", 33 + "pull-cat": "^1.1.9", 34 + "pull-many": "^1.0.7", 35 + "pull-next": "^0.0.1", 36 + "pull-paramap": "^1.1.6", 37 + "pull-reconnect": "^0.0.3", 38 + "pull-scroll": "^0.2.0", 39 + "pull-stream": "^3.4.5", 40 + "simple-mime": "^0.1.0", 41 + "split-buffer": "^1.0.0", 42 + "ssb-avatar": "^0.2.0", 43 + "ssb-client": "^4.0.3", 44 + "ssb-config": "^2.1.1", 45 + "ssb-feed": "^2.2.1", 46 + "ssb-git": "^0.4.1", 47 + "ssb-keys": "^6.1.0", 48 + "ssb-links": "^2.0.0", 49 + "ssb-markdown": "^3.0.0", 50 + "ssb-mentions": "^0.1.0", 51 + "ssb-query": "^0.1.1", 52 + "ssb-ref": "^2.6.2", 53 + "ssb-sort": "^1.0.0", 54 + "ssb-ws": "^0.6.2", 55 + "suggest-box": "^2.2.1", 56 + "text-node-searcher": "^1.1.0", 57 + "visualize-buffer": "0.0.0" 58 + }, 59 + "devDependencies": { 60 + "browselectrify": "^1.0.1", 61 + "browserify": "^16.5.2", 62 + "indexhtmlify": "^1.3.1" 63 + }, 64 + "scripts": { 65 + "lite": "node scripts/style.js && mkdir -p build && browserify index.js | indexhtmlify > build/index.html", 66 + "bundle": "node scripts/style.js && mkdir -p build && browselectrify index.js > build/bundle.js", 67 + "graph": "node index.js | dot -Tsvg > graph.svg", 68 + "test": "set -e; for t in test/*.js; do node $t; done" 69 + }, 70 + "author": "Dominic Tarr <dominic.tarr@gmail.com> (http://dominictarr.com)", 71 + "license": "MIT" 72 + }
+40
patchbay/plugs.js
··· 1 + exports.first = function first(plug) { 2 + return function () { 3 + var args = [].slice.call(arguments) 4 + for(var i = 0; i < plug.length; i++) { 5 + var val = plug[i].apply(null, args) 6 + if(val) return val 7 + } 8 + } 9 + } 10 + 11 + exports.map = function (plug) { 12 + return function () { 13 + var args = [].slice.call(arguments) 14 + return plug.map(function (fn) { 15 + if(fn) return fn.apply(null, args) 16 + }).filter(Boolean) 17 + } 18 + } 19 + 20 + exports.asyncConcat = function (plug) { 21 + return function () { 22 + var args = [].slice.call(arguments) 23 + var cb = args.pop() 24 + var allResults = [] 25 + var waiting = plug.length 26 + plug.forEach(function (fn) { 27 + if (!fn) return next() 28 + fn.apply(null, args.concat(next)) 29 + }) 30 + function next(err, results) { 31 + if (err) { 32 + waiting = 0 33 + return cb(err) 34 + } 35 + if (results) allResults = allResults.concat(results) 36 + if (--waiting === 0) cb(null, allResults) 37 + } 38 + } 39 + } 40 +
+18
patchbay/scripts/build.js
··· 1 + var fs = require('fs') 2 + var path = require('path') 3 + 4 + console.log( 5 + 'module.exports = {\n' 6 + + 7 + fs.readdirSync(path.join(__dirname, process.argv[2])) 8 + // .filter(function (file) { 9 + // return file !== '_index.js' && /\.js$/.test(file) 10 + // }) 11 + .map(function (file) { 12 + return ' '+JSON.stringify(file) + ": require('./"+file+"')" 13 + }).join(',\n') 14 + + 15 + '\n}' 16 + ) 17 + 18 +
+8
patchbay/scripts/create-index.js
··· 1 + var fs = require('fs') 2 + var path = require('path') 3 + 4 + fs.writeFileSync( 5 + path.join(__dirname, '..', 'style.css.json'), 6 + JSON.stringify(fs.readFileSync(path.join(__dirname, '..', 'style.css'), 'utf8')) 7 + ) 8 +
+18
patchbay/scripts/dir.js
··· 1 + var fs = require('fs') 2 + var path = require('path') 3 + 4 + console.log( 5 + 'module.exports = {\n' 6 + + 7 + fs.readdirSync(path.join(process.cwd(), process.argv[2])) 8 + .filter(function (file) { 9 + return file !== 'index.js' && /\.js$/.test(file) 10 + }) 11 + .map(function (file) { 12 + return ' '+JSON.stringify(file) + ": require('./"+file+"')" 13 + }).join(',\n') 14 + + 15 + '\n}' 16 + ) 17 + 18 +
+8
patchbay/scripts/style.js
··· 1 + var fs = require('fs') 2 + var path = require('path') 3 + 4 + fs.writeFileSync( 5 + path.join(__dirname, '..', 'style.css.json'), 6 + JSON.stringify(fs.readFileSync(path.join(__dirname, '..', 'style.css'), 'utf8')) 7 + ) 8 +
+483
patchbay/style.css
··· 1 + body { 2 + font-family: sans-serif; 3 + } 4 + 5 + h1, h2, h3, h4, h5, h6, p, ul, ol { 6 + margin-top: .35em; 7 + } 8 + 9 + h1 { font-size: 1.2em; } 10 + h2 { font-size: 1.18em; } 11 + h3 { font-size: 1.15em; } 12 + h4 { font-size: 1.12em; } 13 + h5 { font-size: 1.1em; } 14 + h6 { font-size: 1em; } 15 + 16 + * { 17 + word-break: break-word; 18 + } 19 + 20 + a:link, a:visited, a:active { 21 + color: #0088cc; 22 + text-decoration: none; 23 + } 24 + 25 + a:hover, 26 + a:focus { 27 + color: #005580; 28 + text-decoration: underline; 29 + } 30 + 31 + .screen { 32 + position: absolute; 33 + top: 0; bottom: 0; 34 + left: 0; right: 0; 35 + overflow-y: hidden; 36 + } 37 + 38 + .column { 39 + display: flex; 40 + flex-direction: column; 41 + min-height:0px; 42 + } 43 + 44 + .row { 45 + display: flex; 46 + flex-direction: row; 47 + min-height:0px; 48 + } 49 + 50 + .end { 51 + justify-content: flex-end; 52 + } 53 + 54 + .wrap { 55 + display: flex; 56 + flex-direction: row; 57 + flex-wrap: wrap; 58 + } 59 + 60 + .no-shrink { 61 + flex-shrink: 0; 62 + } 63 + 64 + .expand { 65 + justify-content: space-between; 66 + } 67 + 68 + .scroll-y { 69 + overflow-y: auto; 70 + min-height: 0px; 71 + } 72 + 73 + .scroll-x { 74 + overflow-x: auto; 75 + min-width: 0px; 76 + } 77 + 78 + pre { 79 + white-space: pre-wrap; 80 + word-wrap: break-word; 81 + } 82 + 83 + .wide { 84 + width: 100%; 85 + } 86 + 87 + p { 88 + margin-top: .35ex; 89 + } 90 + 91 + hr { 92 + border: solid #eee; 93 + clear: both; 94 + border-width: 1px 0 0; 95 + height: 0; 96 + margin-bottom: .9em; 97 + } 98 + 99 + input, textarea { 100 + border: none; 101 + border-radius: .2em; 102 + font-family: sans-serif; 103 + } 104 + 105 + input:focus, .compose:focus, .message:focus, button:focus { 106 + outline: none; 107 + border-color: #0088cc; 108 + box-shadow: 0 0 4px #0088cc; 109 + } 110 + 111 + textarea { 112 + padding: .5em; 113 + font-size: 1em; 114 + } 115 + 116 + textarea:focus { 117 + outline: none; 118 + border-color: none; 119 + } 120 + 121 + button { 122 + background: #fff; 123 + color: #666; 124 + border: 1px solid #bbb; 125 + border-radius: .5em; 126 + padding: .7em; 127 + margin: .5em; 128 + cursor: pointer; 129 + text-transform: uppercase; 130 + font-weight: bold; 131 + font-size: .7em; 132 + } 133 + 134 + button:hover { 135 + background: #ccc; 136 + border: 1px solid #bbb; 137 + } 138 + 139 + .menu { 140 + position: absolute; 141 + top: .5em; 142 + right: .5em; 143 + padding-top: .5em; 144 + padding-bottom: .5em; 145 + padding-right: 1em; 146 + padding-left: 1em; 147 + background: #f5f5f5; 148 + border: 1px solid #eee; 149 + border-radius: .2em; 150 + z-index: 5; 151 + } 152 + 153 + /* scrolling feeds, threads */ 154 + 155 + .scroller { 156 + width: 100%; 157 + } 158 + 159 + .scroller__wrapper { 160 + flex: 1; 161 + max-width: 600px; 162 + margin-left: auto; 163 + margin-right: auto; 164 + } 165 + 166 + /* compose */ 167 + 168 + .compose { 169 + width: 100%; 170 + margin-top: .5em; 171 + margin-bottom: .5em; 172 + border: 1px solid #f5f5f5; 173 + } 174 + 175 + .compose button { 176 + float: right; 177 + } 178 + 179 + /* messages */ 180 + 181 + .message { 182 + position: relative; 183 + flex-basis: 0; 184 + margin-top: .25em; 185 + margin-bottom: .25em; 186 + padding: .2em; 187 + border-top: 1px solid #f5f5f5; 188 + // border-bottom: 1px solid #f5f5f5; 189 + background: white; 190 + } 191 + 192 + .message:hover { 193 + background: #f9f9f9; 194 + } 195 + 196 + .message--mini { 197 + font-size: 1em; 198 + margin: 0; 199 + padding: .2em; 200 + border: none; 201 + background: inherit; 202 + } 203 + 204 + .message_content div > span { 205 + font-size: 0.9em; 206 + margin-bottom: 0.7em; 207 + display: block; 208 + color: #888; 209 + } 210 + 211 + .message_content--mini div > span { 212 + display: inline-block; 213 + } 214 + 215 + .message_content div > span a { 216 + color: #005d8c; 217 + } 218 + 219 + .message_meta input { 220 + font-size: .8em; 221 + } 222 + 223 + .message_meta { 224 + margin-left: auto; 225 + } 226 + 227 + .message_meta > * { 228 + margin-left: .5ex; 229 + } 230 + 231 + .message_actions { 232 + position: absolute; 233 + bottom: 0; right: 0; 234 + margin-right: .5ex; 235 + margin-bottom: .5ex; 236 + } 237 + 238 + .title { 239 + padding: .5ex; 240 + } 241 + 242 + .message img { 243 + max-width: 100%; 244 + } 245 + 246 + .message > .title > .avatar { 247 + margin-left: 0; 248 + } 249 + 250 + .message_content { 251 + padding: .5ex; 252 + } 253 + 254 + .actions > * { 255 + padding-left: 5px; 256 + margin-left: 1px; 257 + } 258 + 259 + .actions > :not(:last-child) { 260 + border-right: 2px solid #eee; 261 + padding-right: 5px; 262 + } 263 + 264 + .emoji { 265 + height: 1em; 266 + width: 1em; 267 + vertical-align: top; 268 + } 269 + 270 + 271 + /* -- suggest box */ 272 + 273 + .suggest-box > * { 274 + display: block; 275 + } 276 + 277 + .suggest-box ul { 278 + padding: 0; 279 + list-style-type: none; 280 + padding-left: 0; 281 + background: #eee; 282 + border: 1px solid #eee; 283 + border-radius: 2px; 284 + } 285 + 286 + .suggest-box .selected { 287 + background: white; 288 + } 289 + 290 + .suggest-box { 291 + width: max-content; 292 + background: #white; 293 + border-radius: 1em; 294 + } 295 + 296 + /* emoji */ 297 + .suggest-box img { 298 + height: 20px; 299 + width: 20px; 300 + } 301 + 302 + /* avatar */ 303 + 304 + .avatar--large, 305 + .avatar--thumbnail, 306 + .avatar--fullsize { 307 + border: 1px solid #eee; 308 + } 309 + 310 + .avatar--large { 311 + width: 10em; 312 + height: 10em; 313 + } 314 + 315 + .avatar--thumbnail { 316 + width: 2.5em; 317 + height: 2.5em; 318 + float: left; 319 + margin-right: .5ex; 320 + } 321 + 322 + .avatar--fullsize { 323 + width: 50%; 324 + } 325 + 326 + .profile { 327 + padding: .5ex; 328 + overflow: auto; 329 + } 330 + 331 + .profile input { 332 + width: 100%; 333 + } 334 + 335 + .profile__info { 336 + margin-left: .5em; 337 + } 338 + 339 + /* lightbox - used in message-confirm */ 340 + 341 + .lightbox { 342 + overflow: auto; 343 + padding: 1.5em; 344 + margin-top: 3em; 345 + margin-bottom: 3em; 346 + width: 600px; 347 + background: #f5f5f5; 348 + margin-left: auto; 349 + margin-right: auto; 350 + border: 1px solid #eee; 351 + border-radius: .2em; 352 + z-index: 2; 353 + } 354 + 355 + /* searchprompt */ 356 + 357 + .searchprompt { 358 + float: left; 359 + width: 85%; 360 + height: 2em; 361 + margin-top: .3em; 362 + border-radius: 1em; 363 + padding-left: .2em; 364 + margin-left: 1em; 365 + margin-right: 1em; 366 + } 367 + 368 + /* TextNodeSearcher highlights */ 369 + 370 + .highlight { 371 + background: #f5f5f5; 372 + } 373 + 374 + /* avatar editor */ 375 + 376 + .hypercrop__canvas { 377 + width: 100%; 378 + } 379 + 380 + /* gitssb */ 381 + 382 + .git-table-wrapper { 383 + max-height: 12em; 384 + overflow: auto; 385 + word-break: break-all; 386 + margin: 1em 0; 387 + } 388 + 389 + .git-table-wrapper table { 390 + width: 100%; 391 + } 392 + 393 + /* --- network status --- */ 394 + 395 + .status { 396 + width: .7em; 397 + height: .7em; 398 + margin: .7em; 399 + border-radius: 100%; 400 + background: #08c; 401 + } 402 + 403 + .error { 404 + background: red; 405 + } 406 + 407 + /* tabs */ 408 + 409 + .header { 410 + background: #f5f5f5; 411 + border-bottom: 1px inset; 412 + flex-shrink: 0; 413 + } 414 + 415 + .header__tabs { 416 + width: 100%; 417 + min-width: 0px; 418 + } 419 + 420 + /* --- hypertabs ------- */ 421 + 422 + .hypertabs__tabs { 423 + min-width: 0px; 424 + width: 100%; 425 + } 426 + 427 + .hypertabs__tab { 428 + overflow-x: hidden; 429 + min-width: 0px; 430 + width: 100%; 431 + } 432 + 433 + .hypertabs__button { 434 + overflow-x: hidden; 435 + min-width: 0px; 436 + width: 100%; 437 + } 438 + 439 + .hypertabs__tab { 440 + color: black; 441 + background: #f5f5f5; 442 + border-top-left-radius: 5px; 443 + margin-left: -3px; 444 + border-bottom: none; 445 + padding-top: .56em; 446 + padding-left: 1em; 447 + border-left: 1px solid #ddd; 448 + width: 100%; 449 + } 450 + 451 + .hypertabs__tab > a { 452 + color: #666; 453 + text-decoration: none; 454 + white-space: nowrap; 455 + font-size: .9em; 456 + } 457 + 458 + .hypertabs--selected { 459 + font-weight: bold; 460 + background: #eee; 461 + border-top-right-radius: 5px; 462 + z-index: 1; 463 + } 464 + 465 + .hypertabs__x { 466 + display: none; 467 + transform: translate(-4px, -3px); 468 + } 469 + 470 + .hypertabs--selected .hypertabs__x { 471 + display: block; 472 + } 473 + 474 + /* progress bar */ 475 + 476 + .hyperprogress__bar { 477 + background: darkgrey; 478 + } 479 + .hyperprogress__liquid { 480 + background: lightblue; 481 + } 482 + 483 +
+51
patchbay/util.js
··· 1 + var pull = require('pull-stream') 2 + var Next = require('pull-next') 3 + 4 + function get (obj, path) { 5 + if(!obj) return undefined 6 + if('string' === typeof path) return obj[path] 7 + if(Array.isArray(path)) { 8 + for(var i = 0; obj && i < path.length; i++) 9 + obj = obj[path[i]] 10 + return obj 11 + } 12 + } 13 + 14 + function clone (obj) { 15 + var _obj = {} 16 + for(var k in obj) _obj[k] = obj[k] 17 + return _obj 18 + } 19 + 20 + exports.next = function (createStream, opts, property, range) { 21 + 22 + range = range || (opts.reverse ? 'lt' : 'gt') 23 + property = property || 'timestamp' 24 + 25 + var last = null, count = -1 26 + return Next(function () { 27 + if(last) { 28 + if(count === 0) return 29 + var value = opts[range] = get(last, property) 30 + if(value == null) return 31 + last = null 32 + } 33 + return pull( 34 + createStream(clone(opts)), 35 + pull.through(function (msg) { 36 + count ++ 37 + if(!msg.sync) { 38 + last = msg 39 + } 40 + }, function (err) { 41 + //retry on errors... 42 + if(err) return count = -1 43 + //end stream if there were no results 44 + if(last == null) last = {} 45 + }) 46 + ) 47 + }) 48 + } 49 + 50 + 51 +
+3795
patchbay/yarn.lock
··· 1 + # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 + # yarn lockfile v1 3 + 4 + 5 + abbrev@1: 6 + version "1.0.9" 7 + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz" 8 + integrity sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q== 9 + 10 + abstract-leveldown@~2.4.0: 11 + version "2.4.1" 12 + resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.4.1.tgz" 13 + integrity sha512-sW2ic/lpOHcEhqCrUNgjN0EMhzsqNF8WO8YE5q3n/v3eVUBX24O/gAUMwwFj2BtC/DibKFXn/vA4WYhYt+NNnw== 14 + dependencies: 15 + xtend "~4.0.0" 16 + 17 + abstract-leveldown@~2.6.1: 18 + version "2.6.3" 19 + resolved "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz" 20 + integrity sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA== 21 + dependencies: 22 + xtend "~4.0.0" 23 + 24 + acorn-node@^1.8.2: 25 + version "1.8.2" 26 + resolved "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz" 27 + integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== 28 + dependencies: 29 + acorn "^7.0.0" 30 + acorn-walk "^7.0.0" 31 + xtend "^4.0.2" 32 + 33 + acorn-walk@^7.0.0: 34 + version "7.2.0" 35 + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" 36 + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== 37 + 38 + acorn@^1.0.3: 39 + version "1.2.2" 40 + resolved "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz" 41 + integrity sha512-FsqWmApWGMGLKKNpHt12PMc5AK7BaZee0WRh04fCysmTzHe+rrKOa2MKjORhnzfpe4r0JnfdqHn02iDA9Dqj2A== 42 + 43 + acorn@^2.7.0: 44 + version "2.7.0" 45 + resolved "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz" 46 + integrity sha512-pXK8ez/pVjqFdAgBkF1YPVRacuLQ9EXBKaKWaeh58WNfMkCmZhOZzu+NtKSPD5PHmCCHheQ5cD29qM1K4QTxIg== 47 + 48 + acorn@^7.0.0: 49 + version "7.4.1" 50 + resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" 51 + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 52 + 53 + after@~0.8.1: 54 + version "0.8.2" 55 + resolved "https://registry.npmjs.org/after/-/after-0.8.2.tgz" 56 + integrity sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA== 57 + 58 + ansi-regex@^2.0.0: 59 + version "2.0.0" 60 + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" 61 + integrity sha512-jCcLjwL2jOaTcRIaJkoRteMwNXg8nfJvwT/9K91kwZhH7bf4lsprqZ2+Qa7tSp8BYtejobOCBkDreC07q0KmZw== 62 + 63 + ansi-styles@^2.2.1: 64 + version "2.2.1" 65 + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" 66 + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== 67 + 68 + ansi@^0.3.0, ansi@~0.3.1: 69 + version "0.3.1" 70 + resolved "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz" 71 + integrity sha512-iFY7JCgHbepc0b82yLaw4IMortylNb6wG4kL+4R0C3iv6i+RHGHux/yUX5BTiRvSX/shMnngjR1YyNMnXEFh5A== 72 + 73 + aproba@^1.0.3: 74 + version "1.0.4" 75 + resolved "https://registry.npmjs.org/aproba/-/aproba-1.0.4.tgz" 76 + integrity sha512-g4T1BR2vAjWV6GrBYeM7DmHUBe0WB45xRKKpNKxh4zHkUsjdGfANjdHY//9RzHi1XkWTLc1k58ddAUZ81yC8Cw== 77 + 78 + are-we-there-yet@~1.1.2: 79 + version "1.1.2" 80 + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz" 81 + integrity sha512-Ph/5XGGWoEy6z2VsZmELQW3qZtrITchV1zMNt1OonqoSoYo9acY23weZ67fLKTaRdMEGBYDx/jDJBGS8YlwPvg== 82 + dependencies: 83 + delegates "^1.0.0" 84 + readable-stream "^2.0.0 || ^1.1.13" 85 + 86 + array-index@^1.0.0: 87 + version "1.0.0" 88 + resolved "https://registry.npmjs.org/array-index/-/array-index-1.0.0.tgz" 89 + integrity sha512-jesyNbBkLQgGZMSwA1FanaFjalb1mZUGxGeUEkSDidzgrbjBGhvizJkaItdhkt8eIHFOJC7nDsrXk+BaehTdRw== 90 + dependencies: 91 + debug "^2.2.0" 92 + es6-symbol "^3.0.2" 93 + 94 + arraybuffer-base64@^1.0.0: 95 + version "1.0.0" 96 + resolved "https://registry.npmjs.org/arraybuffer-base64/-/arraybuffer-base64-1.0.0.tgz" 97 + integrity sha512-ObvQgZtJuUGEhaesM14KFwnqh4UbyUPwWdGvtDzQiQiZizxWL66X4H3jqmzV+KqrgtTUMRBV7YvXsmHyhPbIrA== 98 + 99 + asn1.js@^4.0.0: 100 + version "4.8.1" 101 + resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-4.8.1.tgz" 102 + integrity sha512-OSr5ZUGzhiOdp8RQEYLJmkFEb6tRKX11+m7mr7+8/U70T4B0GAQdyx1+ND7rfxv/qRR4LoVmE7ajkpJbGnd7nQ== 103 + dependencies: 104 + bn.js "^4.0.0" 105 + inherits "^2.0.1" 106 + minimalistic-assert "^1.0.0" 107 + 108 + asn1@~0.2.3: 109 + version "0.2.3" 110 + resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz" 111 + integrity sha512-6i37w/+EhlWlGUJff3T/Q8u1RGmP5wgbiwYnOnbOqvtrPxT63/sYFyP9RcpxtxGymtfA075IvmOnL7ycNOWl3w== 112 + 113 + asn1js@^1.2.12: 114 + version "1.2.12" 115 + resolved "https://registry.npmjs.org/asn1js/-/asn1js-1.2.12.tgz" 116 + integrity sha512-eCMbXmmQ/9HMLNJkWRjF8TdX2stMrmK4WiWMZFhhmiMOcmi9dO3XDCuWDAyYn7qb0Oq4PmA0TgnqmzOObmrjpw== 117 + 118 + assert-plus@^0.2.0: 119 + version "0.2.0" 120 + resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz" 121 + integrity sha512-u1L0ZLywRziOVjUhRxI0Qg9G+4RnFB9H/Rq40YWn0dieDgO7vAYeJz6jKAO6t/aruzlDFLAPkQTT87e+f8Imaw== 122 + 123 + assert-plus@^1.0.0: 124 + version "1.0.0" 125 + resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" 126 + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== 127 + 128 + assert@^1.4.0: 129 + version "1.5.1" 130 + resolved "https://registry.npmjs.org/assert/-/assert-1.5.1.tgz" 131 + integrity sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A== 132 + dependencies: 133 + object.assign "^4.1.4" 134 + util "^0.10.4" 135 + 136 + assert@~1.3.0: 137 + version "1.3.0" 138 + resolved "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz" 139 + integrity sha512-5aKcpD+XnHpZ7EGxsuo6uoILNh0rvm0Ypa17GlkrF2CNSPhvdgi3ft9XsL2ajdVOI2I3xuGZnHvlXAeqTZYvXg== 140 + dependencies: 141 + util "0.10.3" 142 + 143 + astw@^2.0.0: 144 + version "2.0.0" 145 + resolved "https://registry.npmjs.org/astw/-/astw-2.0.0.tgz" 146 + integrity sha512-W7zhYzCMisx5WQ9R99ZeTYoHk6wqwmCl55PzslcrI6ON6R3aayFxSaRY7Xzi7couwlC8Gsm2A1BGfKoqMMu4uA== 147 + dependencies: 148 + acorn "^1.0.3" 149 + 150 + async@^1.4.0: 151 + version "1.5.2" 152 + resolved "https://registry.npmjs.org/async/-/async-1.5.2.tgz" 153 + integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== 154 + 155 + asynckit@^0.4.0: 156 + version "0.4.0" 157 + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" 158 + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== 159 + 160 + audio-context@^0.1.0: 161 + version "0.1.0" 162 + resolved "https://registry.npmjs.org/audio-context/-/audio-context-0.1.0.tgz" 163 + integrity sha512-PkXXfY2f96sZf/w8JWCQZn4hHgRK3lqXNRgIPO9JgdwLOyOecH7PAuYFjWdUEDbJ7BuXudTf0WJek7A+XAFyAA== 164 + dependencies: 165 + global "~4.2.1" 166 + 167 + aws-sign2@~0.6.0: 168 + version "0.6.0" 169 + resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz" 170 + integrity sha512-JnJpAS0p9RmixkOvW2XwDxxzs1bd4/VAGIl6Q0EC5YOo+p+hqIhtDhn/nmFnB/xUNXbLkpE2mOjgVIBRKD4xYw== 171 + 172 + aws4@^1.2.1: 173 + version "1.5.0" 174 + resolved "https://registry.npmjs.org/aws4/-/aws4-1.5.0.tgz" 175 + integrity sha512-msbruB31mspZNtdkAMGIpHwGe3salMf4Bu53YJXsO/AmoxrgaVi3DLyP46XKYFKvKJ7Eh/BrLZGS0TMtyzbHlA== 176 + 177 + balanced-match@^1.0.0: 178 + version "1.0.2" 179 + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" 180 + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 181 + 182 + base64-js@^1.0.2: 183 + version "1.2.0" 184 + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz" 185 + integrity sha512-hURVuTTGLOppKhjSe9lZy4NCjnvaIAF/juwazv4WtHwsk5rxKrU1WbxN+XtwKDSvkrNbIIaTBQd9wUsSwruZUg== 186 + 187 + bcrypt-pbkdf@^1.0.0: 188 + version "1.0.0" 189 + resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz" 190 + integrity sha512-1d7nPZyCV4TvkiRd3dZEqDrcj88tAe3ZxwkKeAJJ9eEoDIHyVPxGbmV1HMFVGa2XH4JHRrwUja36rLzR5BA60g== 191 + dependencies: 192 + tweetnacl "^0.14.3" 193 + 194 + binary-search@^1.2.0: 195 + version "1.3.2" 196 + resolved "https://registry.npmjs.org/binary-search/-/binary-search-1.3.2.tgz" 197 + integrity sha512-ldmlaGfbPu0LfRtPTdCG4oqHj56JYcZDR3xu0GqeXh3LsBXBt0utwBoILSJQIlxcS+GFn5jraOKlR0mGGaRPYw== 198 + 199 + binary-xhr@0.0.2: 200 + version "0.0.2" 201 + resolved "https://registry.npmjs.org/binary-xhr/-/binary-xhr-0.0.2.tgz" 202 + integrity sha512-KZ4RhQJRIIXimMnY9fbtwsa6x4kVMfusLdu1MWu87VJU6qBiG1nMr4lNPJHCGRCm2rSwH+gbqppLQ05ZQTTa/A== 203 + dependencies: 204 + inherits "1.0.0" 205 + 206 + bindings@^1.2.1, bindings@~1.2.1: 207 + version "1.2.1" 208 + resolved "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz" 209 + integrity sha512-u4cBQNepWxYA55FunZSM7wMi55yQaN0otnhhilNoWHq0MfOfJeQx0v0mRRpolGOExPjZcl6FtB0BB8Xkb88F0g== 210 + 211 + bl@^1.0.0, bl@~1.0.0: 212 + version "1.0.3" 213 + resolved "https://registry.npmjs.org/bl/-/bl-1.0.3.tgz" 214 + integrity sha512-phbvN+yOk05EGoFcV/0S8N8ShnJqf6VCWRAw5he2gvRwBubFt/OzmcTNGqBt5b7Y4RK3YCgf6jrgGSR0Cwtsgw== 215 + dependencies: 216 + readable-stream "~2.0.5" 217 + 218 + bl@~1.1.2: 219 + version "1.1.2" 220 + resolved "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz" 221 + integrity sha512-uVVYHEQk+OuWvCi5U+iquVXvvGCWXKawjwELIR2XMLsqfV/e2sGDClVBs8OlGIgGsStPRY/Es311YKYIlYCWAg== 222 + dependencies: 223 + readable-stream "~2.0.5" 224 + 225 + blake2s@~1.0.0: 226 + version "1.0.1" 227 + resolved "https://registry.npmjs.org/blake2s/-/blake2s-1.0.1.tgz" 228 + integrity sha512-KAkhueDkhTqQTxcHQ0uue9RNCkDbUr4dPLORhp2McvAYsIewMt2YxVwnO0DJnYJoe63kA5qYe+iK26NzSPfJzA== 229 + 230 + block-stream@*: 231 + version "0.0.9" 232 + resolved "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz" 233 + integrity sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ== 234 + dependencies: 235 + inherits "~2.0.0" 236 + 237 + bluebird@^3.0.6: 238 + version "3.4.6" 239 + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.4.6.tgz" 240 + integrity sha512-YvvhuCEE6vHQVlxe+ZTuZyXiA9RIXLz1X8YamApVDYf410Y/K0tBTpZ2bTVNsnPVSRviN/mfu2W42BnRfSXA2A== 241 + 242 + bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: 243 + version "4.11.6" 244 + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz" 245 + integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== 246 + 247 + boom@2.x.x: 248 + version "2.10.1" 249 + resolved "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" 250 + integrity sha512-KbiZEa9/vofNcVJXGwdWWn25reQ3V3dHBWbS07FTF3/TOehLnm9GEhJV4T6ZvGPkShRpmUqYwnaCrkj0mRnP6Q== 251 + dependencies: 252 + hoek "2.x.x" 253 + 254 + brace-expansion@^1.1.7: 255 + version "1.1.12" 256 + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz" 257 + integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== 258 + dependencies: 259 + balanced-match "^1.0.0" 260 + concat-map "0.0.1" 261 + 262 + brorand@^1.0.1: 263 + version "1.0.6" 264 + resolved "https://registry.npmjs.org/brorand/-/brorand-1.0.6.tgz" 265 + integrity sha512-aCTTKVBjiqRQjfe1FEmvqxVkX9C3F8XCEPyU3mT/UF/58tZZMJxmno7HySXqxNCPeysUAMgS1YcICxQc6f+O4w== 266 + 267 + browselectrify@^1.0.1: 268 + version "1.0.1" 269 + resolved "https://registry.npmjs.org/browselectrify/-/browselectrify-1.0.1.tgz" 270 + integrity sha512-ETOPHKq7XrP9+92lOe5p9IFzXfojPcXz6+wcQOZMZ0Hh2jYz8H4lyvh+qnljYFo5fqzc5VzyEKEzQ2tFVDrwJg== 271 + dependencies: 272 + browserify "^13.0.1" 273 + pull-cat "^1.1.10" 274 + pull-file "^0.5.0" 275 + pull-stream "^3.4.3" 276 + stream-to-pull-stream "^1.7.0" 277 + 278 + browser-pack@^6.0.1: 279 + version "6.0.1" 280 + resolved "https://registry.npmjs.org/browser-pack/-/browser-pack-6.0.1.tgz" 281 + integrity sha512-NbySCoD9oUtZHaR5fSo2PWtno1WeipoTUUFHJSCD4kB7tKXI1J2A+0sdBPTZgab7KLyz54TDBXIkOaB1kNuwjQ== 282 + dependencies: 283 + combine-source-map "~0.7.1" 284 + defined "^1.0.0" 285 + JSONStream "^1.0.3" 286 + through2 "^2.0.0" 287 + umd "^3.0.0" 288 + 289 + browser-resolve@^1.11.0, browser-resolve@^1.7.0: 290 + version "1.11.2" 291 + resolved "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz" 292 + integrity sha512-IBmTH6PPKm10Mnf/ja+YKXZEyH7pyrxBUbbyr0ZEDBGhNOIWVHo41gTWWU4DhYPKt6JIx2YwTsyrULjTsx7/+A== 293 + dependencies: 294 + resolve "1.1.7" 295 + 296 + browser-resolve@^2.0.0: 297 + version "2.0.0" 298 + resolved "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz" 299 + integrity sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ== 300 + dependencies: 301 + resolve "^1.17.0" 302 + 303 + browser-split@0.0.0: 304 + version "0.0.0" 305 + resolved "https://registry.npmjs.org/browser-split/-/browser-split-0.0.0.tgz" 306 + integrity sha512-CNXO3AXAS1H/kOGQkPjucm1161/XoF3aVkMfujqwk85XN/D/MkQMvoB81lXyX/2rerZS+hPAYYRR3mAW05awjQ== 307 + 308 + browserify-aes@^1.0.0, browserify-aes@^1.0.4: 309 + version "1.0.6" 310 + resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz" 311 + integrity sha512-MMvWM6jpfsiuzY2Y+pRJvHRac3x3rHWQisWoz1dJaF9qDFsD8HdVxB7MyZKeLKeEt0fEjrXXZ0mxgTHSoJusug== 312 + dependencies: 313 + buffer-xor "^1.0.2" 314 + cipher-base "^1.0.0" 315 + create-hash "^1.1.0" 316 + evp_bytestokey "^1.0.0" 317 + inherits "^2.0.1" 318 + 319 + browserify-cipher@^1.0.0: 320 + version "1.0.0" 321 + resolved "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz" 322 + integrity sha512-eR/Xnl6GNhMILoylgYn0CXdb5rbDRp3awDF0KXd/S96E+l49E9EWjSmbJPPM03Gj0nX6Ihydv/3wmtml5hnGrw== 323 + dependencies: 324 + browserify-aes "^1.0.4" 325 + browserify-des "^1.0.0" 326 + evp_bytestokey "^1.0.0" 327 + 328 + browserify-des@^1.0.0: 329 + version "1.0.0" 330 + resolved "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz" 331 + integrity sha512-8ryPIDvl6sFWCs8M8XOLjysP3BmwTUldIuX5yWHu76zazZpMguxHYFJI+kQ99a0lpuPF5jt+qzkFuMtjgo2xBg== 332 + dependencies: 333 + cipher-base "^1.0.1" 334 + des.js "^1.0.0" 335 + inherits "^2.0.1" 336 + 337 + browserify-rsa@^4.0.0: 338 + version "4.0.1" 339 + resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz" 340 + integrity sha512-+YpEyaLDDvvdzIxQ+cCx73r5YEhS3ANGOkiHdyWqW4t3gdeoNEYjSiQwntbU4Uo2/9yRkpYX3SRFeH+7jc2Duw== 341 + dependencies: 342 + bn.js "^4.1.0" 343 + randombytes "^2.0.1" 344 + 345 + browserify-sign@^4.0.0: 346 + version "4.0.0" 347 + resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.0.tgz" 348 + integrity sha512-jD8i7sSI7TXGxUzTS8JvpiXbyt6S4S56n+uiQ2ycWKB3aKEHN4IpuAowIjGBsPVkhk6LA2S2aQzi0J5eiagQcA== 349 + dependencies: 350 + bn.js "^4.1.1" 351 + browserify-rsa "^4.0.0" 352 + create-hash "^1.1.0" 353 + create-hmac "^1.1.2" 354 + elliptic "^6.0.0" 355 + inherits "^2.0.1" 356 + parse-asn1 "^5.0.0" 357 + 358 + browserify-zlib@~0.1.2: 359 + version "0.1.4" 360 + resolved "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz" 361 + integrity sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ== 362 + dependencies: 363 + pako "~0.2.0" 364 + 365 + browserify-zlib@~0.2.0: 366 + version "0.2.0" 367 + resolved "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz" 368 + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== 369 + dependencies: 370 + pako "~1.0.5" 371 + 372 + browserify@^13.0.1: 373 + version "13.1.0" 374 + resolved "https://registry.npmjs.org/browserify/-/browserify-13.1.0.tgz" 375 + integrity sha512-i5iASp425UxqX6nhOfsxJVLmm+GKvPcapI8RsPixFSNQQbSbrZsYYLzPK1amobpeOuDF7nJDq/upZYkmw/C59w== 376 + dependencies: 377 + assert "~1.3.0" 378 + browser-pack "^6.0.1" 379 + browser-resolve "^1.11.0" 380 + browserify-zlib "~0.1.2" 381 + buffer "^4.1.0" 382 + concat-stream "~1.5.1" 383 + console-browserify "^1.1.0" 384 + constants-browserify "~1.0.0" 385 + crypto-browserify "^3.0.0" 386 + defined "^1.0.0" 387 + deps-sort "^2.0.0" 388 + domain-browser "~1.1.0" 389 + duplexer2 "~0.1.2" 390 + events "~1.1.0" 391 + glob "^5.0.15" 392 + has "^1.0.0" 393 + htmlescape "^1.1.0" 394 + https-browserify "~0.0.0" 395 + inherits "~2.0.1" 396 + insert-module-globals "^7.0.0" 397 + JSONStream "^1.0.3" 398 + labeled-stream-splicer "^2.0.0" 399 + module-deps "^4.0.2" 400 + os-browserify "~0.1.1" 401 + parents "^1.0.1" 402 + path-browserify "~0.0.0" 403 + process "~0.11.0" 404 + punycode "^1.3.2" 405 + querystring-es3 "~0.2.0" 406 + read-only-stream "^2.0.0" 407 + readable-stream "^2.0.2" 408 + resolve "^1.1.4" 409 + shasum "^1.0.0" 410 + shell-quote "^1.4.3" 411 + stream-browserify "^2.0.0" 412 + stream-http "^2.0.0" 413 + string_decoder "~0.10.0" 414 + subarg "^1.0.0" 415 + syntax-error "^1.1.1" 416 + through2 "^2.0.0" 417 + timers-browserify "^1.0.1" 418 + tty-browserify "~0.0.0" 419 + url "~0.11.0" 420 + util "~0.10.1" 421 + vm-browserify "~0.0.1" 422 + xtend "^4.0.0" 423 + 424 + browserify@^16.5.2: 425 + version "16.5.2" 426 + resolved "https://registry.npmjs.org/browserify/-/browserify-16.5.2.tgz" 427 + integrity sha512-TkOR1cQGdmXU9zW4YukWzWVSJwrxmNdADFbqbE3HFgQWe5wqZmOawqZ7J/8MPCwk/W8yY7Y0h+7mOtcZxLP23g== 428 + dependencies: 429 + assert "^1.4.0" 430 + browser-pack "^6.0.1" 431 + browser-resolve "^2.0.0" 432 + browserify-zlib "~0.2.0" 433 + buffer "~5.2.1" 434 + cached-path-relative "^1.0.0" 435 + concat-stream "^1.6.0" 436 + console-browserify "^1.1.0" 437 + constants-browserify "~1.0.0" 438 + crypto-browserify "^3.0.0" 439 + defined "^1.0.0" 440 + deps-sort "^2.0.0" 441 + domain-browser "^1.2.0" 442 + duplexer2 "~0.1.2" 443 + events "^2.0.0" 444 + glob "^7.1.0" 445 + has "^1.0.0" 446 + htmlescape "^1.1.0" 447 + https-browserify "^1.0.0" 448 + inherits "~2.0.1" 449 + insert-module-globals "^7.0.0" 450 + JSONStream "^1.0.3" 451 + labeled-stream-splicer "^2.0.0" 452 + mkdirp-classic "^0.5.2" 453 + module-deps "^6.2.3" 454 + os-browserify "~0.3.0" 455 + parents "^1.0.1" 456 + path-browserify "~0.0.0" 457 + process "~0.11.0" 458 + punycode "^1.3.2" 459 + querystring-es3 "~0.2.0" 460 + read-only-stream "^2.0.0" 461 + readable-stream "^2.0.2" 462 + resolve "^1.1.4" 463 + shasum "^1.0.0" 464 + shell-quote "^1.6.1" 465 + stream-browserify "^2.0.0" 466 + stream-http "^3.0.0" 467 + string_decoder "^1.1.1" 468 + subarg "^1.0.0" 469 + syntax-error "^1.1.1" 470 + through2 "^2.0.0" 471 + timers-browserify "^1.0.1" 472 + tty-browserify "0.0.1" 473 + url "~0.11.0" 474 + util "~0.10.1" 475 + vm-browserify "^1.0.0" 476 + xtend "^4.0.0" 477 + 478 + buffer-from@^1.0.0: 479 + version "1.1.2" 480 + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" 481 + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 482 + 483 + buffer-shims@^1.0.0: 484 + version "1.0.0" 485 + resolved "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz" 486 + integrity sha512-Zy8ZXMyxIT6RMTeY7OP/bDndfj6bwCan7SS98CEndS6deHwWPpseeHlwarNcBim+etXnF9HBc1non5JgDaJU1g== 487 + 488 + buffer-v6-polyfill@^1.0.3: 489 + version "1.0.3" 490 + resolved "https://registry.npmjs.org/buffer-v6-polyfill/-/buffer-v6-polyfill-1.0.3.tgz" 491 + integrity sha512-8erfTDCuA8sRrDomLB81Swwq04euTvxyqRMbg4NrCdIDDne95fwOkKfZCRvfXhlhukofq0qYOYzdPDYitEew+g== 492 + 493 + buffer-xor@^1.0.2: 494 + version "1.0.3" 495 + resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" 496 + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== 497 + 498 + buffer@^4.1.0: 499 + version "4.9.1" 500 + resolved "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz" 501 + integrity sha512-DNK4ruAqtyHaN8Zne7PkBTO+dD1Lr0YfTduMqlIyjvQIoztBkUxrvL+hKeLW8NXFKHOq/2upkxuoS9znQ9bW9A== 502 + dependencies: 503 + base64-js "^1.0.2" 504 + ieee754 "^1.1.4" 505 + isarray "^1.0.0" 506 + 507 + buffer@~5.2.1: 508 + version "5.2.1" 509 + resolved "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz" 510 + integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg== 511 + dependencies: 512 + base64-js "^1.0.2" 513 + ieee754 "^1.1.4" 514 + 515 + builtin-status-codes@^2.0.0: 516 + version "2.0.0" 517 + resolved "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-2.0.0.tgz" 518 + integrity sha512-8KPx+JfZWi0K8L5sycIOA6/ZFZbaFKXDeUIXaqwUnhed1Ge1cB0wyq+bNDjKnL9AR2Uj3m/khkF6CDolsyMitA== 519 + 520 + builtin-status-codes@^3.0.0: 521 + version "3.0.0" 522 + resolved "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz" 523 + integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== 524 + 525 + bytewise-core@^1.2.2: 526 + version "1.2.3" 527 + resolved "https://registry.npmjs.org/bytewise-core/-/bytewise-core-1.2.3.tgz" 528 + integrity sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA== 529 + dependencies: 530 + typewise-core "^1.2" 531 + 532 + bytewise@^1.1.0: 533 + version "1.1.0" 534 + resolved "https://registry.npmjs.org/bytewise/-/bytewise-1.1.0.tgz" 535 + integrity sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ== 536 + dependencies: 537 + bytewise-core "^1.2.2" 538 + typewise "^1.0.3" 539 + 540 + cached-path-relative@^1.0.0, cached-path-relative@^1.0.2: 541 + version "1.1.0" 542 + resolved "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz" 543 + integrity sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA== 544 + 545 + call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: 546 + version "1.0.2" 547 + resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz" 548 + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== 549 + dependencies: 550 + es-errors "^1.3.0" 551 + function-bind "^1.1.2" 552 + 553 + call-bind@^1.0.8: 554 + version "1.0.8" 555 + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz" 556 + integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== 557 + dependencies: 558 + call-bind-apply-helpers "^1.0.0" 559 + es-define-property "^1.0.0" 560 + get-intrinsic "^1.2.4" 561 + set-function-length "^1.2.2" 562 + 563 + call-bound@^1.0.3: 564 + version "1.0.4" 565 + resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz" 566 + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== 567 + dependencies: 568 + call-bind-apply-helpers "^1.0.2" 569 + get-intrinsic "^1.3.0" 570 + 571 + caseless@~0.11.0: 572 + version "0.11.0" 573 + resolved "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz" 574 + integrity sha512-ODLXH644w9C2fMPAm7bMDQ3GRvipZWZfKc+8As6hIadRIelE0n0xZuN38NS6kiK3KPEVrpymmQD8bvncAHWQkQ== 575 + 576 + chalk@^1.1.1: 577 + version "1.1.3" 578 + resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" 579 + integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== 580 + dependencies: 581 + ansi-styles "^2.2.1" 582 + escape-string-regexp "^1.0.2" 583 + has-ansi "^2.0.0" 584 + strip-ansi "^3.0.0" 585 + supports-color "^2.0.0" 586 + 587 + chloride-test@^1.1.0: 588 + version "1.1.1" 589 + resolved "https://registry.npmjs.org/chloride-test/-/chloride-test-1.1.1.tgz" 590 + integrity sha512-zD9TVM771/NQCyzrfBRDo2WkS8oGOStSpRi86iP//hsqijm/cejf+BwiIldtv1Ujix4DQctmr1HrXXIbLa/M5g== 591 + dependencies: 592 + json-buffer "^2.0.11" 593 + 594 + chloride@^2.0.1, chloride@^2.1.1, chloride@^2.2.0, chloride@^2.2.1: 595 + version "2.2.4" 596 + resolved "https://registry.npmjs.org/chloride/-/chloride-2.2.4.tgz" 597 + integrity sha512-BqkVXAJnLjseg96sMBDuViGjHFi8cjBjs6c7M47hwwjiRgowkKL+ZOVE1ibiKdH/i7mTOAAaSQXR9goCSIHxuQ== 598 + dependencies: 599 + is-electron "^2.0.0" 600 + sodium-browserify "^1.0.3" 601 + sodium-browserify-tweetnacl "^0.2.0" 602 + optionalDependencies: 603 + sodium-prebuilt "1.0.22" 604 + 605 + cipher-base@^1.0.0, cipher-base@^1.0.1: 606 + version "1.0.3" 607 + resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.3.tgz" 608 + integrity sha512-Ci/6dw5oG7K7Eqvpo3xbK3WYpZdT8RjSUn87DZHkKShDVbB9iIxCBKNXdm7IlpV+gwt7uDwZDhV0mmrRSkcOsA== 609 + dependencies: 610 + inherits "^2.0.1" 611 + 612 + class-list@~0.1.0, class-list@~0.1.1: 613 + version "0.1.1" 614 + resolved "https://registry.npmjs.org/class-list/-/class-list-0.1.1.tgz" 615 + integrity sha512-zqR0uW+VsLtyQhixBhkdQ+z6B8+Y8HTh28kdSVjJ4zTTKM7Xz2asAQSya9VI6m/34F6N6Ktm0mrchKB+E5a8Xw== 616 + dependencies: 617 + indexof "0.0.1" 618 + 619 + code-point-at@^1.0.0: 620 + version "1.0.1" 621 + resolved "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.1.tgz" 622 + integrity sha512-EkgYXIIg8KktHWJo0nRM6NpAmoIg6tXxW91YX337LY06hUijIostM9dWfBt9O/4zue4ONqRvEQwo8diSEHrYvA== 623 + dependencies: 624 + number-is-nan "^1.0.0" 625 + 626 + combine-source-map@~0.7.1: 627 + version "0.7.2" 628 + resolved "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.7.2.tgz" 629 + integrity sha512-MwoXgyZ+d44+GhTg4Vi0V9QcMSrH378vuBwR9riv7sv1r7mslA05tV1dT3+8KHLeoHe4mtM1r2K9xkbhJ451bA== 630 + dependencies: 631 + convert-source-map "~1.1.0" 632 + inline-source-map "~0.6.0" 633 + lodash.memoize "~3.0.3" 634 + source-map "~0.5.3" 635 + 636 + combined-stream@^1.0.5, combined-stream@~1.0.5: 637 + version "1.0.5" 638 + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz" 639 + integrity sha512-JgSRe4l4UzPwpJuxfcPWEK1SCrL4dxNjp1uqrQLMop3QZUVo+hDU8w9BJKA4JPbulTWI+UzrI2UA3tK12yQ6bg== 640 + dependencies: 641 + delayed-stream "~1.0.0" 642 + 643 + commander@^2.19.0, commander@^2.9.0: 644 + version "2.20.3" 645 + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" 646 + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 647 + 648 + concat-map@0.0.1: 649 + version "0.0.1" 650 + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" 651 + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 652 + 653 + concat-stream@^1.6.0, concat-stream@~1.6.0: 654 + version "1.6.2" 655 + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" 656 + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== 657 + dependencies: 658 + buffer-from "^1.0.0" 659 + inherits "^2.0.3" 660 + readable-stream "^2.2.2" 661 + typedarray "^0.0.6" 662 + 663 + concat-stream@~1.5.0, concat-stream@~1.5.1: 664 + version "1.5.2" 665 + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz" 666 + integrity sha512-H6xsIBfQ94aESBG8jGHXQ7i5AEpy5ZeVaLDOisDICiTCKpqEfr34/KmTrspKQNoLKNu9gTkovlpQcUi630AKiQ== 667 + dependencies: 668 + inherits "~2.0.1" 669 + readable-stream "~2.0.0" 670 + typedarray "~0.0.5" 671 + 672 + console-browserify@^1.1.0: 673 + version "1.1.0" 674 + resolved "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz" 675 + integrity sha512-duS7VP5pvfsNLDvL1O4VOEbw37AI3A4ZUQYemvDlnpGrNu9tprR7BYWpDYwC0Xia0Zxz5ZupdiIrUp0GH1aXfg== 676 + dependencies: 677 + date-now "^0.1.4" 678 + 679 + console-control-strings@^1.0.0, console-control-strings@~1.1.0: 680 + version "1.1.0" 681 + resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" 682 + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== 683 + 684 + constants-browserify@~1.0.0: 685 + version "1.0.0" 686 + resolved "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz" 687 + integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== 688 + 689 + cont@^1.0.3, cont@~1.0.3: 690 + version "1.0.3" 691 + resolved "https://registry.npmjs.org/cont/-/cont-1.0.3.tgz" 692 + integrity sha512-lZzUsnNnzBW4EN+Mll8J54cdHn6JzKyHpa9ftxxsPwkWfhdYRIHph9dFdmi0ibfqhnvR103tQ61eAF57FF87IA== 693 + dependencies: 694 + continuable "~1.2.0" 695 + continuable-para "~1.2.0" 696 + continuable-series "~1.2.0" 697 + 698 + continuable-hash@~0.1.4: 699 + version "0.1.4" 700 + resolved "https://registry.npmjs.org/continuable-hash/-/continuable-hash-0.1.4.tgz" 701 + integrity sha512-Gu5kdDzwmCymZ2tROViH0VYSd0iXDDaOjn8iG51FyZreS6OuqEJAE+a3sJ6/Ky6roKOHYHDYD8Ttxj+a1tyYrg== 702 + dependencies: 703 + continuable "~1.1.6" 704 + 705 + continuable-list@~0.1.5: 706 + version "0.1.6" 707 + resolved "https://registry.npmjs.org/continuable-list/-/continuable-list-0.1.6.tgz" 708 + integrity sha512-dqfYFtC/YRR4fUuZyJ8A+VKX/oV8E+atSCCcOvkuHsB6MFkiyI9LrDlUXCnHYowuuDu5vYqcAiRU2hiGXtcb7w== 709 + dependencies: 710 + continuable "~1.1.6" 711 + 712 + continuable-para@~1.2.0: 713 + version "1.2.0" 714 + resolved "https://registry.npmjs.org/continuable-para/-/continuable-para-1.2.0.tgz" 715 + integrity sha512-XjPo974RGEJqnvFVT9PWxG97d/NCg58mwmWDbKXqTZBZuUnMIjkx0vde+xerkUuymk8DR+YUAcllK8J5/O4Leg== 716 + dependencies: 717 + continuable-hash "~0.1.4" 718 + continuable-list "~0.1.5" 719 + 720 + continuable-series@~1.2.0: 721 + version "1.2.0" 722 + resolved "https://registry.npmjs.org/continuable-series/-/continuable-series-1.2.0.tgz" 723 + integrity sha512-xMAlREs3m/IM0VCzuh0TRBXpjd6tl6zi3cMgiwcywIPFcCmNlcFNA6XCtA2cEx6Kq7EE6c1JVDVl3WGepp6a5g== 724 + 725 + continuable@~1.1.6: 726 + version "1.1.8" 727 + resolved "https://registry.npmjs.org/continuable/-/continuable-1.1.8.tgz" 728 + integrity sha512-DrVON8s+uwIH+OJa/HdbLE7ViLKpDeF0+flOhLf7hKtffIvyI2l38i7jq6G5i2GFqodpkz7RJPq60VkmwxfVnA== 729 + 730 + continuable@~1.2.0: 731 + version "1.2.0" 732 + resolved "https://registry.npmjs.org/continuable/-/continuable-1.2.0.tgz" 733 + integrity sha512-DMksZyrS34yEX+DTGyt9h8/6ONHRBH+PpQ5ev3YdCy5J41r0nMNv+psAujoeoT1mJf+fzKhzacR9o1M1ys2tBQ== 734 + 735 + convert-source-map@~1.1.0: 736 + version "1.1.3" 737 + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz" 738 + integrity sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg== 739 + 740 + core-util-is@~1.0.0: 741 + version "1.0.2" 742 + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" 743 + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== 744 + 745 + create-ecdh@^4.0.0: 746 + version "4.0.0" 747 + resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz" 748 + integrity sha512-7rYnhx2rzljQb/UszJC+KvDO8muh2kJm0meQ+VxlDoEHQ3vnZcaHRLCdIReCasEt3s5gJUy4FkkOw2L7HomsQQ== 749 + dependencies: 750 + bn.js "^4.1.0" 751 + elliptic "^6.0.0" 752 + 753 + create-hash@^1.1.0, create-hash@^1.1.1: 754 + version "1.1.2" 755 + resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.1.2.tgz" 756 + integrity sha512-pGMQxzwaMm3+Bsw36lktDMRB6q50KdoLxBY1hvB4jf/wB7bgmSACscKCVnJQpDwo7VoLKTMomEuaeNHKtNT/rw== 757 + dependencies: 758 + cipher-base "^1.0.1" 759 + inherits "^2.0.1" 760 + ripemd160 "^1.0.0" 761 + sha.js "^2.3.6" 762 + 763 + create-hmac@^1.1.0, create-hmac@^1.1.2: 764 + version "1.1.4" 765 + resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.4.tgz" 766 + integrity sha512-USPrJgMKn+vsZuEcvwmrZV7D2UWLhWlQJ9HHGrS84fxX6tSxfO6MAacnD6alDA3a0LAVtC1N3BU1Wb/6H/yUVQ== 767 + dependencies: 768 + create-hash "^1.1.0" 769 + inherits "^2.0.1" 770 + 771 + cryptiles@2.x.x: 772 + version "2.0.5" 773 + resolved "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" 774 + integrity sha512-FFN5KwpvvQTTS5hWPxrU8/QE4kQUc6uwZcrnlMBN82t1MgAtq8mnoDwINBly9Tdr02seeIIhtdF+UH1feBYGog== 775 + dependencies: 776 + boom "2.x.x" 777 + 778 + crypto-browserify@^3.0.0: 779 + version "3.11.0" 780 + resolved "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.0.tgz" 781 + integrity sha512-P9qJXODwW1V0tNZ71FhQEViD3EEfFhojQMOiN1P8C7DrbMJSvU6l3cLnVN0G7ujoNpaQwvFYUPNuEYRyQcwMfA== 782 + dependencies: 783 + browserify-cipher "^1.0.0" 784 + browserify-sign "^4.0.0" 785 + create-ecdh "^4.0.0" 786 + create-hash "^1.1.0" 787 + create-hmac "^1.1.0" 788 + diffie-hellman "^5.0.0" 789 + inherits "^2.0.1" 790 + pbkdf2 "^3.0.3" 791 + public-encrypt "^4.0.0" 792 + randombytes "^2.0.0" 793 + 794 + d@^0.1.1, d@~0.1.1: 795 + version "0.1.1" 796 + resolved "https://registry.npmjs.org/d/-/d-0.1.1.tgz" 797 + integrity sha512-0SdM9V9pd/OXJHoWmTfNPTAeD+lw6ZqHg+isPyBFuJsZLSE0Ygg1cYZ/0l6DrKQXMOqGOu1oWupMoOfoRfMZrQ== 798 + dependencies: 799 + es5-ext "~0.10.2" 800 + 801 + dashdash@^1.12.0: 802 + version "1.14.0" 803 + resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz" 804 + integrity sha512-yQoNs2JYflS72nKEufCisG/IytQVVtsIRGVUKPsxI0QZs/Q8gZVBR3YUxHYbW1mLT2Q41HQU4seotPHlEHw36Q== 805 + dependencies: 806 + assert-plus "^1.0.0" 807 + 808 + dataurl-@^0.1.0: 809 + version "0.1.0" 810 + resolved "https://registry.npmjs.org/dataurl-/-/dataurl--0.1.0.tgz" 811 + integrity sha512-J1Veu9JMYJIEl+jEiwhNzY+NoWFFsvEpv79YctEXquXr3PRB0xuAr4SZnGpm0MDJHiLIbOhu1VDPVQFOvlrwYw== 812 + 813 + date-now@^0.1.4: 814 + version "0.1.4" 815 + resolved "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz" 816 + integrity sha512-AsElvov3LoNB7tf5k37H2jYSB+ZZPMT5sG2QjJCcdlV5chIv6htBUBUui2IKRjgtKAKtCBN7Zbwa+MtwLjSeNw== 817 + 818 + debug@^2.2.0: 819 + version "2.2.0" 820 + resolved "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz" 821 + integrity sha512-X0rGvJcskG1c3TgSCPqHJ0XJgwlcvOC7elJ5Y0hYuKBZoVqWpAMfLOeIh2UI/DCQ5ruodIjvsugZtjUYUw2pUw== 822 + dependencies: 823 + ms "0.7.1" 824 + 825 + decompress-response@^3.3.0: 826 + version "3.3.0" 827 + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" 828 + integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== 829 + dependencies: 830 + mimic-response "^1.0.0" 831 + 832 + deep-equal@~0.2.1: 833 + version "0.2.2" 834 + resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-0.2.2.tgz" 835 + integrity sha512-FXgye2Jr6oEk01S7gmSrHrPEQ1ontR7wwl+nYiZ8h4SXlHVm0DYda74BIPcHz2s2qPz4+375IcAz1vsWLwddgQ== 836 + 837 + deep-equal@~1.0.0: 838 + version "1.0.1" 839 + resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz" 840 + integrity sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw== 841 + 842 + deep-extend@^0.4.0, deep-extend@~0.4.0: 843 + version "0.4.1" 844 + resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz" 845 + integrity sha512-td/IpUMQ7E0yjmU8s3orgl5+Fvv41C8p0zzf+IRYVuE3bM5Fc0G3hyln0mz9VOPt5T7KahPU3hMdR0B6t9cdhQ== 846 + 847 + deferred-leveldown@~1.2.1: 848 + version "1.2.1" 849 + resolved "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.1.tgz" 850 + integrity sha512-g3fM2CbrCd7pfSUHsVlZoJ/VGM1Rk19Fq5BEyvZrrIptHuFn/pp+1o1LdGP87erNdYb59Wt2ePhfDjm+Go8/0A== 851 + dependencies: 852 + abstract-leveldown "~2.4.0" 853 + 854 + define-data-property@^1.0.1, define-data-property@^1.1.4: 855 + version "1.1.4" 856 + resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz" 857 + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== 858 + dependencies: 859 + es-define-property "^1.0.0" 860 + es-errors "^1.3.0" 861 + gopd "^1.0.1" 862 + 863 + define-properties@^1.2.1: 864 + version "1.2.1" 865 + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz" 866 + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== 867 + dependencies: 868 + define-data-property "^1.0.1" 869 + has-property-descriptors "^1.0.0" 870 + object-keys "^1.1.1" 871 + 872 + defined@^1.0.0: 873 + version "1.0.0" 874 + resolved "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz" 875 + integrity sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ== 876 + 877 + delayed-stream@~1.0.0: 878 + version "1.0.0" 879 + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" 880 + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== 881 + 882 + delegates@^1.0.0: 883 + version "1.0.0" 884 + resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" 885 + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== 886 + 887 + depject@^3.0.0: 888 + version "3.2.0" 889 + resolved "https://registry.npmjs.org/depject/-/depject-3.2.0.tgz" 890 + integrity sha512-dGRQTJo5BNdF2c/NUPj5xBDOrSh/ZtJ6kbPphLI9crr6xkP4xIbTzN49ORMCaOACT+tM7YGWZy4EpmqVnd9apQ== 891 + dependencies: 892 + libnested "^1.1.0" 893 + 894 + deps-sort@^2.0.0: 895 + version "2.0.0" 896 + resolved "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz" 897 + integrity sha512-SdbEF/hgr/EyZ2PfW1DzRT5jKUC7ilCmIMxH3WIqPAm9EGvpcudeS/eW7FbM3M7mYMsdopvkQhM5rVGAIW4wlg== 898 + dependencies: 899 + JSONStream "^1.0.3" 900 + shasum "^1.0.0" 901 + subarg "^1.0.0" 902 + through2 "^2.0.0" 903 + 904 + des.js@^1.0.0: 905 + version "1.0.0" 906 + resolved "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz" 907 + integrity sha512-QlJHGiTiOmW4z3EO0qKwjM2Mb+EmOlBHbpC6QgTiXB913NxMKttEuV2SJ+eLA12sMKDg1N8HnncfAtYaNnU+cg== 908 + dependencies: 909 + inherits "^2.0.1" 910 + minimalistic-assert "^1.0.0" 911 + 912 + detect-libc@^1.0.3: 913 + version "1.0.3" 914 + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz" 915 + integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== 916 + 917 + detective@^4.0.0: 918 + version "4.3.1" 919 + resolved "https://registry.npmjs.org/detective/-/detective-4.3.1.tgz" 920 + integrity sha512-/9qiE/5MI6RVAJhb6XTrYocC6MF2DixqvnFfsSq9iOGSwmEXIv8eNmOijOrsHpM1L5Cq1I/cKOCClzC9CmqJaQ== 921 + dependencies: 922 + acorn "^1.0.3" 923 + defined "^1.0.0" 924 + 925 + detective@^5.2.0: 926 + version "5.2.1" 927 + resolved "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz" 928 + integrity sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw== 929 + dependencies: 930 + acorn-node "^1.8.2" 931 + defined "^1.0.0" 932 + minimist "^1.2.6" 933 + 934 + diffie-hellman@^5.0.0: 935 + version "5.0.2" 936 + resolved "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz" 937 + integrity sha512-6bFNThpXO1MSkYrHm2SPXvfJQ3h4gChXxj5RToODJGCs7Df79q+KNJAiB71Nut2n50ZLc35NTOPVc7jYPPWwtg== 938 + dependencies: 939 + bn.js "^4.1.0" 940 + miller-rabin "^4.0.0" 941 + randombytes "^2.0.0" 942 + 943 + discontinuous-range@1.0.0: 944 + version "1.0.0" 945 + resolved "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz" 946 + integrity sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ== 947 + 948 + dom-walk@^0.1.0: 949 + version "0.1.1" 950 + resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz" 951 + integrity sha512-8CGZnLAdYN/o0SHjlP3nLvliHpi2f/prVU63/Hc4DTDpBgsNVAJekegjFtxfZ7NTUEDzHUByjX1gT3eYakIKqg== 952 + 953 + domain-browser@^1.2.0: 954 + version "1.2.0" 955 + resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz" 956 + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== 957 + 958 + domain-browser@~1.1.0: 959 + version "1.1.7" 960 + resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz" 961 + integrity sha512-fJ5MoHxe69h3E4/lJtFRhcWwLb04bhIBSfvCEMS1YDH+/9yEZTqBHTSTgch8nCP5tE5k2gdQEjodUqJzy7qJ9Q== 962 + 963 + dunder-proto@^1.0.1: 964 + version "1.0.1" 965 + resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz" 966 + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== 967 + dependencies: 968 + call-bind-apply-helpers "^1.0.1" 969 + es-errors "^1.3.0" 970 + gopd "^1.2.0" 971 + 972 + duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2: 973 + version "0.1.4" 974 + resolved "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz" 975 + integrity sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA== 976 + dependencies: 977 + readable-stream "^2.0.2" 978 + 979 + duplexer2@~0.0.2: 980 + version "0.0.2" 981 + resolved "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz" 982 + integrity sha512-+AWBwjGadtksxjOQSFDhPNQbed7icNXApT4+2BNpsXzcCBiInq2H9XW0O8sfHFaPmnQRs7cg/P0fAr2IWQSW0g== 983 + dependencies: 984 + readable-stream "~1.1.9" 985 + 986 + ecc-jsbn@~0.1.1: 987 + version "0.1.1" 988 + resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz" 989 + integrity sha512-8Pvg9QY16SYajEL9W1Lk+9yM7XCK/MOq2wibslLZYAAEEkbAIO6mLkW+GFYbvvw8qTuDFzFMg40rS9IxkNCWPg== 990 + dependencies: 991 + jsbn "~0.1.0" 992 + 993 + ed2curve@^0.1.4: 994 + version "0.1.4" 995 + resolved "https://registry.npmjs.org/ed2curve/-/ed2curve-0.1.4.tgz" 996 + integrity sha512-hDZWhCHZ1wu4P2g2RVsM2MjDmmJzhvcsXr5qHUSBJZXvuhJSunhbVsWoBXdIe0/yTa3RV4UaWpOmFmrVsKr0wA== 997 + dependencies: 998 + tweetnacl "0.x.x" 999 + 1000 + elliptic@^6.0.0: 1001 + version "6.3.2" 1002 + resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.3.2.tgz" 1003 + integrity sha512-fWMXUkG+piyCogoOd+bUbMYBSO6y2W9BAo28CEZ6wJ06+ZQCgQ2ASgIIlKw/zj0Dny2pa+FN/Do5xMAF4NvUzg== 1004 + dependencies: 1005 + bn.js "^4.4.0" 1006 + brorand "^1.0.1" 1007 + hash.js "^1.0.0" 1008 + inherits "^2.0.1" 1009 + 1010 + emoji-named-characters@^1.0.2: 1011 + version "1.0.2" 1012 + resolved "https://registry.npmjs.org/emoji-named-characters/-/emoji-named-characters-1.0.2.tgz" 1013 + integrity sha512-F9uKjyRsj7qjqZh7yjgHYa7XCgJgGI+nHTUqxkq/TDGuq0wLFbUX0wNes3XC6OA2j2Uu8PaeZD6hvCu5eO3lTA== 1014 + 1015 + end-of-stream@^1.0.0, end-of-stream@^1.1.0: 1016 + version "1.1.0" 1017 + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz" 1018 + integrity sha512-EoulkdKF/1xa92q25PbjuDcgJ9RDHYU2Rs3SCIvs2/dSQ3BpmxneNHmA/M7fe60M3PrV7nNGTTNbkK62l6vXiQ== 1019 + dependencies: 1020 + once "~1.3.0" 1021 + 1022 + errno@~0.1.1: 1023 + version "0.1.4" 1024 + resolved "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz" 1025 + integrity sha512-B6ww/BgkeBIfyIaOKPMW2zteXdAeXSfOTPv6kGhl3luYw4BOTopQ0EjdGFePGdajvBjLQZq12axGLtHnrp+/Pg== 1026 + dependencies: 1027 + prr "~0.0.0" 1028 + 1029 + es-define-property@^1.0.0, es-define-property@^1.0.1: 1030 + version "1.0.1" 1031 + resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz" 1032 + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== 1033 + 1034 + es-errors@^1.3.0: 1035 + version "1.3.0" 1036 + resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" 1037 + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== 1038 + 1039 + es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: 1040 + version "1.1.1" 1041 + resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz" 1042 + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== 1043 + dependencies: 1044 + es-errors "^1.3.0" 1045 + 1046 + es5-ext@^0.10.7, es5-ext@~0.10.11, es5-ext@~0.10.2: 1047 + version "0.10.12" 1048 + resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.12.tgz" 1049 + integrity sha512-uHlaijZsSZkv+oudKIgdjiC0FtOhHP2oHbcc8kw7i9NQSwazocxfyv2RXOGpHnrUZ+CrrhpjdO+bt+Q9jFYG9g== 1050 + dependencies: 1051 + es6-iterator "2" 1052 + es6-symbol "~3.1" 1053 + 1054 + es6-iterator@2: 1055 + version "2.0.0" 1056 + resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz" 1057 + integrity sha512-xaFGj2hKo5Np4lJZ3kF0x86zIHuW7qX4ppVhSNx4ya0H9fRYP2V7zBMNiMiw9qR4hKJDSrsDmf/Gq58mnu0tCg== 1058 + dependencies: 1059 + d "^0.1.1" 1060 + es5-ext "^0.10.7" 1061 + es6-symbol "3" 1062 + 1063 + es6-symbol@^3.0.2, es6-symbol@~3.1, es6-symbol@3: 1064 + version "3.1.0" 1065 + resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.0.tgz" 1066 + integrity sha512-mcdWe5FToZm6UsH9ncf1KHfPnUJrdqQZh/or6ESLdg+c8ZnQqDyDuQAfxhf9z+QUC/bN8eLStlmPZHd+cMJONQ== 1067 + dependencies: 1068 + d "~0.1.1" 1069 + es5-ext "~0.10.11" 1070 + 1071 + escape-string-regexp@^1.0.2: 1072 + version "1.0.5" 1073 + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" 1074 + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 1075 + 1076 + eventemitter2@~1.0.0: 1077 + version "1.0.5" 1078 + resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-1.0.5.tgz" 1079 + integrity sha512-EUFhWUYzqqBZlzBMI+dPU8rnKXfQZEUnitnccQuEIAnvWFHCpt3+4fts2+4dpxLtlsiseVXCMFg37KjYChSxpg== 1080 + 1081 + events@^2.0.0: 1082 + version "2.1.0" 1083 + resolved "https://registry.npmjs.org/events/-/events-2.1.0.tgz" 1084 + integrity sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg== 1085 + 1086 + events@~1.1.0: 1087 + version "1.1.1" 1088 + resolved "https://registry.npmjs.org/events/-/events-1.1.1.tgz" 1089 + integrity sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw== 1090 + 1091 + evp_bytestokey@^1.0.0: 1092 + version "1.0.0" 1093 + resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz" 1094 + integrity sha512-ALeH0LCygUuJllS9VdUF1JLBxD37VHyxlFonQixBbQQLcO50OV2vIqPb1fRSz5WDv8aqTAnK9EMGGiF4fE6ToA== 1095 + dependencies: 1096 + create-hash "^1.1.1" 1097 + 1098 + execspawn@^1.0.1: 1099 + version "1.0.1" 1100 + resolved "https://registry.npmjs.org/execspawn/-/execspawn-1.0.1.tgz" 1101 + integrity sha512-s2k06Jy9i8CUkYe0+DxRlvtkZoOkwwfhB+Xxo5HGUtrISVW2m98jO2tr67DGRFxZwkjQqloA3v/tNtjhBRBieg== 1102 + dependencies: 1103 + util-extend "^1.0.1" 1104 + 1105 + expand-template@^1.0.0, expand-template@^1.0.2: 1106 + version "1.0.3" 1107 + resolved "https://registry.npmjs.org/expand-template/-/expand-template-1.0.3.tgz" 1108 + integrity sha512-Di+5Idl9j2FdaeXqrHdXTN9bv32nXHBMoNCzzqlwNWpHUXwcMegCbyO/m2kQQ4MTvaA1gKtmHnJHJTB+9TI1yg== 1109 + 1110 + explain-error@^1.0.1, explain-error@^1.0.4: 1111 + version "1.0.4" 1112 + resolved "https://registry.npmjs.org/explain-error/-/explain-error-1.0.4.tgz" 1113 + integrity sha512-/wSgNMxFusiYRy1rd19LT2SQlIXDppHpumpWo06wxjflD1OYxDLbl6rMVw+U3bxD5Nuhex4TKqv9Aem4D0lVzQ== 1114 + 1115 + extend@~3.0.0: 1116 + version "3.0.0" 1117 + resolved "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" 1118 + integrity sha512-5mYyg57hpD+sFaJmgNL9BidQ5C7dmJE3U5vzlRWbuqG+8dytvYEoxvKs6Tj5cm3LpMsFvRt20qz1ckezmsOUgQ== 1119 + 1120 + extsprintf@1.0.2: 1121 + version "1.0.2" 1122 + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz" 1123 + integrity sha512-g21Br4ELmVaKCVSUSSTXecKG+MiLcHFoby5RPPUmfZdhQTontXUOPf0QK/TvreRjgItRiyO928zxR4TCrnuwmA== 1124 + 1125 + fast-future@~1.0.2: 1126 + version "1.0.2" 1127 + resolved "https://registry.npmjs.org/fast-future/-/fast-future-1.0.2.tgz" 1128 + integrity sha512-ZdgcQC4CDq0OlirlbmaV1Hvl9hrQBKwSJokpemb2Y82uzQ3mFaGxBCCTbr78t3obRsgjqrJAsEaYWZSK3oEcJQ== 1129 + 1130 + flumeview-level@^2.1.0: 1131 + version "2.1.1" 1132 + resolved "https://registry.npmjs.org/flumeview-level/-/flumeview-level-2.1.1.tgz" 1133 + integrity sha512-1hvF6npbtXZpSk4FGXF0M/PE4iGFZvXf6mx6pjo8ui7Qh0vy7alAqjJZGlcO27AeGOAjQCZYH7nSH+lmYu8hVg== 1134 + dependencies: 1135 + bytewise "^1.1.0" 1136 + explain-error "^1.0.4" 1137 + level "^1.7.0" 1138 + ltgt "^2.1.3" 1139 + mkdirp "^0.5.1" 1140 + obv "0.0.0" 1141 + pull-level "^2.0.3" 1142 + pull-paramap "^1.2.1" 1143 + pull-stream "^3.5.0" 1144 + pull-write "^1.1.1" 1145 + 1146 + flumeview-query@^4.0.0: 1147 + version "4.0.1" 1148 + resolved "https://registry.npmjs.org/flumeview-query/-/flumeview-query-4.0.1.tgz" 1149 + integrity sha512-UkMRbcVJqVTfqlYCDzZf4cKgjl3EN3Ja8gOwbBykRIqVoIrdTV+IfhJ8z/bvtN7b27G+ctitcA0bDgPBN1uR2A== 1150 + dependencies: 1151 + explain-error "^1.0.1" 1152 + flumeview-level "^2.1.0" 1153 + map-filter-reduce "^3.0.2" 1154 + pull-flatmap "0.0.1" 1155 + pull-paramap "^1.1.3" 1156 + pull-sink-through "0.0.0" 1157 + pull-stream "^3.4.0" 1158 + 1159 + forever-agent@~0.6.1: 1160 + version "0.6.1" 1161 + resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" 1162 + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== 1163 + 1164 + form-data@~2.0.0: 1165 + version "2.0.0" 1166 + resolved "https://registry.npmjs.org/form-data/-/form-data-2.0.0.tgz" 1167 + integrity sha512-BWUNep0UvjzlIJgDsi0SFD3MvnLlwiRaVpfr82Hj2xgc9MJJcl1tSQj01CJDMG+w/kzm+vkZMmXwRM2XrkBuaA== 1168 + dependencies: 1169 + asynckit "^0.4.0" 1170 + combined-stream "^1.0.5" 1171 + mime-types "^2.1.11" 1172 + 1173 + fs.realpath@^1.0.0: 1174 + version "1.0.0" 1175 + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" 1176 + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 1177 + 1178 + fstream@^1.0.0, fstream@^1.0.2: 1179 + version "1.0.10" 1180 + resolved "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz" 1181 + integrity sha512-c8PWyQzw0JRHCbK5H2c1IQJDuOm2ssGIsmtPsPmKbKETciucj8XYvsFVImrucP1rvlEYb2VF/WM/8Nc4VOK1tA== 1182 + dependencies: 1183 + graceful-fs "^4.1.2" 1184 + inherits "~2.0.0" 1185 + mkdirp ">=0.5 0" 1186 + rimraf "2" 1187 + 1188 + function-bind@^1.0.2, function-bind@^1.1.2: 1189 + version "1.1.2" 1190 + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" 1191 + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== 1192 + 1193 + gauge@~1.2.5: 1194 + version "1.2.7" 1195 + resolved "https://registry.npmjs.org/gauge/-/gauge-1.2.7.tgz" 1196 + integrity sha512-fVbU2wRE91yDvKUnrIaQlHKAWKY5e08PmztCrwuH5YVQ+Z/p3d0ny2T48o6uvAAXHIUnfaQdHkmxYbQft1eHVA== 1197 + dependencies: 1198 + ansi "^0.3.0" 1199 + has-unicode "^2.0.0" 1200 + lodash.pad "^4.1.0" 1201 + lodash.padend "^4.1.0" 1202 + lodash.padstart "^4.1.0" 1203 + 1204 + gauge@~2.7.3: 1205 + version "2.7.4" 1206 + resolved "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz" 1207 + integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg== 1208 + dependencies: 1209 + aproba "^1.0.3" 1210 + console-control-strings "^1.0.0" 1211 + has-unicode "^2.0.0" 1212 + object-assign "^4.1.0" 1213 + signal-exit "^3.0.0" 1214 + string-width "^1.0.1" 1215 + strip-ansi "^3.0.1" 1216 + wide-align "^1.1.0" 1217 + 1218 + generate-function@^2.0.0: 1219 + version "2.0.0" 1220 + resolved "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" 1221 + integrity sha512-X46lB9wLCsgkyagCmX2Dev5od5j6niCr3UeMbXVDBVO4tlpXp3o4OFh+0gPTlkD3ZMixU8PCKxf0IMGQvPo8HQ== 1222 + 1223 + generate-object-property@^1.1.0: 1224 + version "1.2.0" 1225 + resolved "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz" 1226 + integrity sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ== 1227 + dependencies: 1228 + is-property "^1.0.0" 1229 + 1230 + get-intrinsic@^1.2.4, get-intrinsic@^1.3.0: 1231 + version "1.3.0" 1232 + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz" 1233 + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== 1234 + dependencies: 1235 + call-bind-apply-helpers "^1.0.2" 1236 + es-define-property "^1.0.1" 1237 + es-errors "^1.3.0" 1238 + es-object-atoms "^1.1.1" 1239 + function-bind "^1.1.2" 1240 + get-proto "^1.0.1" 1241 + gopd "^1.2.0" 1242 + has-symbols "^1.1.0" 1243 + hasown "^2.0.2" 1244 + math-intrinsics "^1.1.0" 1245 + 1246 + get-proto@^1.0.1: 1247 + version "1.0.1" 1248 + resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz" 1249 + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== 1250 + dependencies: 1251 + dunder-proto "^1.0.1" 1252 + es-object-atoms "^1.0.0" 1253 + 1254 + getpass@^0.1.1: 1255 + version "0.1.6" 1256 + resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz" 1257 + integrity sha512-Uj295v1VGRPhKEty7IiEzGYf2rAIEbcGQ8dxK5QrQuwP7tCW8ftD5o8FUsGW4MLdws4P3eKRBzo+mFySYYcimA== 1258 + dependencies: 1259 + assert-plus "^1.0.0" 1260 + 1261 + ghreleases@^1.0.2: 1262 + version "1.0.5" 1263 + resolved "https://registry.npmjs.org/ghreleases/-/ghreleases-1.0.5.tgz" 1264 + integrity sha512-fXmepLW+EDMe9i8navRMxhqHgIPqn1f91GA2QGA2u8xz/DnwFqnD4JudKLpKho2I9TC9Vb/qHvcXktism6Hp2w== 1265 + dependencies: 1266 + after "~0.8.1" 1267 + ghrepos "~2.0.0" 1268 + ghutils "~3.2.0" 1269 + simple-mime "~0.1.0" 1270 + url-template "~2.0.6" 1271 + xtend "~4.0.0" 1272 + 1273 + ghrepos@~2.0.0: 1274 + version "2.0.0" 1275 + resolved "https://registry.npmjs.org/ghrepos/-/ghrepos-2.0.0.tgz" 1276 + integrity sha512-WKekkei1vtl4rvciCSVBIz+l9rNmlAFto2ryk61emqiLUFXpVuWvdPUmP0NVgLv05uxsXGqvs8T+6xKfon49pg== 1277 + dependencies: 1278 + ghutils "~3.2.0" 1279 + 1280 + ghutils@~3.2.0: 1281 + version "3.2.0" 1282 + resolved "https://registry.npmjs.org/ghutils/-/ghutils-3.2.0.tgz" 1283 + integrity sha512-VY9pgUWCr8OBTAv6LHxLL5vdF6ECe7hVdz/TmKb8TtSHn+q+n2vg9sgXwDhMnzbjR39F2j1mrZwhPDwiP8gapA== 1284 + dependencies: 1285 + jsonist "~1.2.0" 1286 + xtend "~4.0.0" 1287 + 1288 + github-from-package@0.0.0: 1289 + version "0.0.0" 1290 + resolved "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz" 1291 + integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== 1292 + 1293 + glob@^5.0.15: 1294 + version "5.0.15" 1295 + resolved "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz" 1296 + integrity sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA== 1297 + dependencies: 1298 + inflight "^1.0.4" 1299 + inherits "2" 1300 + minimatch "2 || 3" 1301 + once "^1.3.0" 1302 + path-is-absolute "^1.0.0" 1303 + 1304 + glob@^7.0.3, glob@^7.0.5, glob@^7.1.0, "glob@3 || 4 || 5 || 6 || 7": 1305 + version "7.2.3" 1306 + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" 1307 + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 1308 + dependencies: 1309 + fs.realpath "^1.0.0" 1310 + inflight "^1.0.4" 1311 + inherits "2" 1312 + minimatch "^3.1.1" 1313 + once "^1.3.0" 1314 + path-is-absolute "^1.0.0" 1315 + 1316 + global@~4.2.1: 1317 + version "4.2.1" 1318 + resolved "https://registry.npmjs.org/global/-/global-4.2.1.tgz" 1319 + integrity sha512-z0c5wOXm1QKf+carsplKebLIGjpzWaq1RcjTRZRw/aD5FojM3vgWYp+/S8IdBgOYtds5T+RIuCXH2Z1GciU3BA== 1320 + dependencies: 1321 + min-document "^2.6.1" 1322 + process "~0.5.1" 1323 + 1324 + gopd@^1.0.1, gopd@^1.2.0: 1325 + version "1.2.0" 1326 + resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz" 1327 + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== 1328 + 1329 + graceful-fs@^4.1.2: 1330 + version "4.1.9" 1331 + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.9.tgz" 1332 + integrity sha512-XoXYnP6yTKfmZYVQJ089K4GdLHvvHWDYN9JcR1hskHIjAFrtAlryPmJQ+bgqs/L9fu0OjahI9d3MTgbtNvbiuA== 1333 + 1334 + har-validator@~2.0.6: 1335 + version "2.0.6" 1336 + resolved "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz" 1337 + integrity sha512-P6tFV+wCcUL3nbyTDAvveDySfbhy0XkDtAIfZP6HITjM2WUsiPna/Eg1Yy93SFXvahqoX+kt0n+6xlXKDXYowA== 1338 + dependencies: 1339 + chalk "^1.1.1" 1340 + commander "^2.9.0" 1341 + is-my-json-valid "^2.12.4" 1342 + pinkie-promise "^2.0.0" 1343 + 1344 + has-ansi@^2.0.0: 1345 + version "2.0.0" 1346 + resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" 1347 + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== 1348 + dependencies: 1349 + ansi-regex "^2.0.0" 1350 + 1351 + has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: 1352 + version "1.0.2" 1353 + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz" 1354 + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== 1355 + dependencies: 1356 + es-define-property "^1.0.0" 1357 + 1358 + has-symbols@^1.1.0: 1359 + version "1.1.0" 1360 + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz" 1361 + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== 1362 + 1363 + has-unicode@^2.0.0: 1364 + version "2.0.1" 1365 + resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" 1366 + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== 1367 + 1368 + has@^1.0.0: 1369 + version "1.0.1" 1370 + resolved "https://registry.npmjs.org/has/-/has-1.0.1.tgz" 1371 + integrity sha512-8wpov6mGFPJ/SYWGQIFo6t0yuNWoO9MkSq3flX8LhiGmbIUhDETp9knPMcIm0Xig1ybWsw6gq2w0gCz1JHD+Qw== 1372 + dependencies: 1373 + function-bind "^1.0.2" 1374 + 1375 + hash.js@^1.0.0: 1376 + version "1.0.3" 1377 + resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.0.3.tgz" 1378 + integrity sha512-J0ew1WQhNTfUrH4VYckHyBLq3WzyKJleK8HPeWVIFtgu/mUBKy1fKtk3drOijR2T1gh0ZqC6EZ06uGRgdMASSg== 1379 + dependencies: 1380 + inherits "^2.0.1" 1381 + 1382 + hasown@^2.0.2: 1383 + version "2.0.2" 1384 + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" 1385 + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== 1386 + dependencies: 1387 + function-bind "^1.1.2" 1388 + 1389 + hawk@~3.1.3: 1390 + version "3.1.3" 1391 + resolved "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz" 1392 + integrity sha512-X8xbmTc1cbPXcQV4WkLcRMALuyoxhfpFATmyuCxJPOAvrDS4DNnsTAOmKUxMTOWU6TzrTOkxPKwIx5ZOpJVSrg== 1393 + dependencies: 1394 + boom "2.x.x" 1395 + cryptiles "2.x.x" 1396 + hoek "2.x.x" 1397 + sntp "1.x.x" 1398 + 1399 + hjson@^2.0.3: 1400 + version "2.1.0" 1401 + resolved "https://registry.npmjs.org/hjson/-/hjson-2.1.0.tgz" 1402 + integrity sha512-6++LRZE+zCbSoo1y8xnJcGjsXQE6aQmRQb6UytsdzLv1tf9KL31DGpBV5GXsppDyN6nsphRBXC7dGoS5kTHKGw== 1403 + 1404 + hmac@~1.0.1: 1405 + version "1.0.1" 1406 + resolved "https://registry.npmjs.org/hmac/-/hmac-1.0.1.tgz" 1407 + integrity sha512-7pSzEtIx7WBY04FDVFvdU7gufDrdthJIfQuW3eM6tSNcCWWBW2zSYDgYT74vwys74vuasInzgo5e1Rc4Uoh70Q== 1408 + 1409 + hoek@2.x.x: 1410 + version "2.16.3" 1411 + resolved "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" 1412 + integrity sha512-V6Yw1rIcYV/4JsnggjBU0l4Kr+EXhpwqXRusENU1Xx6ro00IHPHYNynCuBTOZAPlr3AAmLvchH9I7N/VUdvOwQ== 1413 + 1414 + homedir@^0.6.0: 1415 + version "0.6.0" 1416 + resolved "https://registry.npmjs.org/homedir/-/homedir-0.6.0.tgz" 1417 + integrity sha512-KZFBHenkVuyyG4uaqRSXqWJr3HTxcaPguM7rU1BlH/mtbDlzaXNSXTa9AhV+fXEjrNemHu9vtLRIaM8/8OW0xA== 1418 + 1419 + html-element@^2.0.0: 1420 + version "2.1.1" 1421 + resolved "https://registry.npmjs.org/html-element/-/html-element-2.1.1.tgz" 1422 + integrity sha512-HqX1EEj/9TzXgyRBf0hF7geW8xUiH6kcyFsM+ReZqff9qdmDCazGYxrsi3ny4BEhc/nqT0jqT6fI3ZpxxJXNqg== 1423 + dependencies: 1424 + class-list "~0.1.1" 1425 + 1426 + html-element@~1.3.0: 1427 + version "1.3.0" 1428 + resolved "https://registry.npmjs.org/html-element/-/html-element-1.3.0.tgz" 1429 + integrity sha512-ZueZhoU2xwAIh8WMQbBkX5zTjOf0KRcDin9Nd91DotBXOLEdmxSDy5172LuGywD/P09KB0Wnb9HN1x4+DvabAw== 1430 + dependencies: 1431 + class-list "~0.1.1" 1432 + 1433 + htmlescape@^1.1.0: 1434 + version "1.1.1" 1435 + resolved "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz" 1436 + integrity sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg== 1437 + 1438 + http-signature@~1.1.0: 1439 + version "1.1.1" 1440 + resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz" 1441 + integrity sha512-iUn0NcRULlDGtqNLN1Jxmzayk8ogm7NToldASyZBpM2qggbphjXzNOiw3piN8tgz+e/DRs6X5gAzFwTI6BCRcg== 1442 + dependencies: 1443 + assert-plus "^0.2.0" 1444 + jsprim "^1.2.2" 1445 + sshpk "^1.7.0" 1446 + 1447 + https-browserify@^1.0.0: 1448 + version "1.0.0" 1449 + resolved "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz" 1450 + integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== 1451 + 1452 + https-browserify@~0.0.0: 1453 + version "0.0.1" 1454 + resolved "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz" 1455 + integrity sha512-EjDQFbgJr1vDD/175UJeSX3ncQ3+RUnCL5NkthQGHvF4VNHlzTy8ifJfTqz47qiPRqaFH58+CbuG3x51WuB1XQ== 1456 + 1457 + human-time@0.0.1: 1458 + version "0.0.1" 1459 + resolved "https://registry.npmjs.org/human-time/-/human-time-0.0.1.tgz" 1460 + integrity sha512-A+xgXNarLizEqp9iHGy9Y4dII0VI/b0NV3qzpdjlInsiLouojaXUG1mLEMMWxlO2X7Kbg+UYw+18oKb74ZWwXQ== 1461 + 1462 + hypercombo@0.1.0: 1463 + version "0.1.0" 1464 + resolved "https://registry.npmjs.org/hypercombo/-/hypercombo-0.1.0.tgz" 1465 + integrity sha512-lJaTVukYWcNi5igfF4gus6UzERJoiv3n8eL6ao6Mwp1PZ9hLenMWGm2ytkyViLLRBhvE2xyExVJ4Td4LAXNUUg== 1466 + dependencies: 1467 + hyperscript "^2.0.2" 1468 + pull-stream "^3.4.3" 1469 + 1470 + hypercrop@^1.0.1: 1471 + version "1.0.1" 1472 + resolved "https://registry.npmjs.org/hypercrop/-/hypercrop-1.0.1.tgz" 1473 + integrity sha512-y07l6JWSJ6k02WD+7PdJNNWCUAv8864muzL6lrl1/QAv7LBifck6/CF0/oitWRYAHfoNbBtIdUCb7qLyvM5Wgw== 1474 + dependencies: 1475 + hyperscript "^1.4.7" 1476 + 1477 + hyperfile@^1.1.0, hyperfile@^1.1.1: 1478 + version "1.1.1" 1479 + resolved "https://registry.npmjs.org/hyperfile/-/hyperfile-1.1.1.tgz" 1480 + integrity sha512-XTRgT2XZRFgVxpXphgqVuec8DxEIGAdb8PNLibU2AOAW+8C059j/H4YefMS92I22ogQT4tWUInDf2yK0zNSG9g== 1481 + dependencies: 1482 + hyperscript "^1.4.7" 1483 + 1484 + hyperlightbox@^0.1.3: 1485 + version "0.1.3" 1486 + resolved "https://registry.npmjs.org/hyperlightbox/-/hyperlightbox-0.1.3.tgz" 1487 + integrity sha512-r1JKOMJtmjsR/erwmLlxqXpuCjVqy/D4g0d9FmDxmZWVhBPs3t1yQWPxIPul6CLoGrWFlrYXWneYIsZCg6KPeg== 1488 + dependencies: 1489 + hyperscript "^1.4.7" 1490 + 1491 + hyperprogress@^0.1.0, hyperprogress@0.1.0: 1492 + version "0.1.0" 1493 + resolved "https://registry.npmjs.org/hyperprogress/-/hyperprogress-0.1.0.tgz" 1494 + integrity sha512-5VniZ4Kk7bcqcw7qqOuplIQiUB8pvBUSGaJoCa/opb/EdH6hfHwvVqRCmI+LE2EmIq1vDHq8X6mfnz1SgY9JXA== 1495 + 1496 + hyperquest@~1.2.0: 1497 + version "1.2.0" 1498 + resolved "https://registry.npmjs.org/hyperquest/-/hyperquest-1.2.0.tgz" 1499 + integrity sha512-N6QwIYr/ENmsE3+0aNA/x8M+jHF0wedvc9ZiGAhg7KK6TxwtJTSR95b0invqaLFPqUrsngYUrc4LVmLtrl7kvw== 1500 + dependencies: 1501 + duplexer2 "~0.0.2" 1502 + through2 "~0.6.3" 1503 + 1504 + hyperscript@^1.4.7, hyperscript@~1.4.2: 1505 + version "1.4.7" 1506 + resolved "https://registry.npmjs.org/hyperscript/-/hyperscript-1.4.7.tgz" 1507 + integrity sha512-5/qa//3SJb60obSEb3MsCMIVMEtAtgnX73uQw96WvH7Zlx6v0b6h8WEk+FNXL+pRW6TSBjmC36P2h8hIjqujaw== 1508 + dependencies: 1509 + browser-split "0.0.0" 1510 + class-list "~0.1.0" 1511 + html-element "~1.3.0" 1512 + 1513 + hyperscript@^2.0.2: 1514 + version "2.0.2" 1515 + resolved "https://registry.npmjs.org/hyperscript/-/hyperscript-2.0.2.tgz" 1516 + integrity sha512-uggBAYfHFC5WyZQXlJ61BNZbPmJbschcvfYNhYdZWCp+0J8KYb5Du8nQuk8Ru+ThoCNb01B0tPtnTRqnrFBkVg== 1517 + dependencies: 1518 + browser-split "0.0.0" 1519 + class-list "~0.1.0" 1520 + html-element "^2.0.0" 1521 + 1522 + hypertabs@^3.0.0: 1523 + version "3.0.3" 1524 + resolved "https://registry.npmjs.org/hypertabs/-/hypertabs-3.0.3.tgz" 1525 + integrity sha512-pIwSU/t4r/h+OnYv2aAu9fGn4juoy6hKdVYbIJPtafXB9n3OwESgqbUnI6y+ZSAT77VvrAGbo8pP7riAml8IDw== 1526 + dependencies: 1527 + hyperscript "^1.4.7" 1528 + 1529 + ieee754@^1.1.4: 1530 + version "1.1.8" 1531 + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz" 1532 + integrity sha512-/aoyv2Nt7mGLnCAWzE0C1WH9Xd8ZsqR0f4Pjwxputi1JNm01+InyAYQotF4N+ulEIjbEsJo22NOHr+U/XEZ1Pw== 1533 + 1534 + increment-buffer@~1.0.0: 1535 + version "1.0.0" 1536 + resolved "https://registry.npmjs.org/increment-buffer/-/increment-buffer-1.0.0.tgz" 1537 + integrity sha512-IgOr5HpHN4nBRLB/q4ynnMtQSDYfbWMxpGKje/Llk5R26DrOlRQVV3fXkhuTA4XsEV9gMYnRDbfom1pcT61QZg== 1538 + 1539 + indexhtmlify@^1.3.1: 1540 + version "1.3.1" 1541 + resolved "https://registry.npmjs.org/indexhtmlify/-/indexhtmlify-1.3.1.tgz" 1542 + integrity sha512-34IP9FW9k/YqFVwuFMx2/pVbryiI9EAJsfYy+OXU3IMbnlIenYBvRxLvPruQjKuTkqxdemeVar+gjkNB8NdExQ== 1543 + dependencies: 1544 + optimist "~0.6.0" 1545 + through2 "^0.4.1" 1546 + 1547 + indexof@0.0.1: 1548 + version "0.0.1" 1549 + resolved "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" 1550 + integrity sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg== 1551 + 1552 + inflight@^1.0.4: 1553 + version "1.0.5" 1554 + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz" 1555 + integrity sha512-ZOr/ZZjWvVTQML+yBDtsvuVlC9zkWqmaZVZTWP7XdfMTmoO3qjIP26vjfDKDJ6zA9ZffGlnm6Ry5t965o+WUgA== 1556 + dependencies: 1557 + once "^1.3.0" 1558 + wrappy "1" 1559 + 1560 + inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3, inherits@2, inherits@2.0.3: 1561 + version "2.0.3" 1562 + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" 1563 + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== 1564 + 1565 + inherits@^2.0.4: 1566 + version "2.0.4" 1567 + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" 1568 + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1569 + 1570 + inherits@1.0.0: 1571 + version "1.0.0" 1572 + resolved "https://registry.npmjs.org/inherits/-/inherits-1.0.0.tgz" 1573 + integrity sha512-5KfXESjCAfFQel2TLqhr18NEz++UiWVIA0jwHzs2Kbvb3e+r+G/eVhRfoZbaPCL0PnERvK5YeMgh02O4eenufw== 1574 + 1575 + inherits@2.0.1: 1576 + version "2.0.1" 1577 + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" 1578 + integrity sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA== 1579 + 1580 + ini@~1.3.0: 1581 + version "1.3.4" 1582 + resolved "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz" 1583 + integrity sha512-VUA7WAWNCWfm6/8f9kAb8Y6iGBWnmCfgFS5dTrv2C38LLm1KUmpY388mCVCJCsMKQomvOQ1oW8/edXdChd9ZXQ== 1584 + 1585 + inline-source-map@~0.6.0: 1586 + version "0.6.2" 1587 + resolved "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz" 1588 + integrity sha512-0mVWSSbNDvedDWIN4wxLsdPM4a7cIPcpyMxj3QZ406QRwQ6ePGB1YIHxVPjqpcUGbWQ5C+nHTwGNWAGvt7ggVA== 1589 + dependencies: 1590 + source-map "~0.5.3" 1591 + 1592 + insert-module-globals@^7.0.0: 1593 + version "7.0.1" 1594 + resolved "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.1.tgz" 1595 + integrity sha512-tjMZcZBS2NtqlX87Y6mlEIUSdftJ2VxlVXSQkrJNBUUB7xgnRIgdVO7nM9DpNl58U1Nejm+ahTjMEQiUpjvA+w== 1596 + dependencies: 1597 + combine-source-map "~0.7.1" 1598 + concat-stream "~1.5.1" 1599 + is-buffer "^1.1.0" 1600 + JSONStream "^1.0.3" 1601 + lexical-scope "^1.2.0" 1602 + process "~0.11.0" 1603 + through2 "^2.0.0" 1604 + xtend "^4.0.0" 1605 + 1606 + ip@^1.1.2, ip@^1.1.3: 1607 + version "1.1.3" 1608 + resolved "https://registry.npmjs.org/ip/-/ip-1.1.3.tgz" 1609 + integrity sha512-M7h6UQnULysP4/3m97qCEAQ0GwgMv6JEr7dPJ3Rd3ttfr6LIiSBxe46TGixBFDgfQaa6MIKj30tDvH+pImI5VA== 1610 + 1611 + ip@~0.3.2: 1612 + version "0.3.3" 1613 + resolved "https://registry.npmjs.org/ip/-/ip-0.3.3.tgz" 1614 + integrity sha512-VXpBTSFo8wNvJVwCxlncVwd2hYbzX8egxidocX2oKt6H5tJzLjrzG6gTNoHSNsKtIyelb528n/7sa86kqlnNiA== 1615 + 1616 + is-buffer@^1.1.0: 1617 + version "1.1.4" 1618 + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.4.tgz" 1619 + integrity sha512-LdKAPZcV+EfT6PvN90Un/Rnn1g8cL1BfzEBdz6d3Y6CUzMyUVWHewXxyuiNFkLwRKgpDMYHrocdqjMsYTDkOow== 1620 + 1621 + is-canonical-base64@^1.1.1: 1622 + version "1.1.1" 1623 + resolved "https://registry.npmjs.org/is-canonical-base64/-/is-canonical-base64-1.1.1.tgz" 1624 + integrity sha512-o6t/DwgEapC0bsloqtegAQyZzQXaQ5+8fzsyf2KmLqupC2ifLFq/lMQiFCJeGpdSrK1o6GL+WW2lRU050lLlFg== 1625 + 1626 + is-core-module@^2.16.1: 1627 + version "2.16.1" 1628 + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz" 1629 + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== 1630 + dependencies: 1631 + hasown "^2.0.2" 1632 + 1633 + is-electron@^2.0.0: 1634 + version "2.0.0" 1635 + resolved "https://registry.npmjs.org/is-electron/-/is-electron-2.0.0.tgz" 1636 + integrity sha512-VDe6eanPIpm1XBj1VDE7yaeNCW6LDcrFOxo3H2pV0Evp0y0drgUTcGUDDV8HGlR3DN5/I93duMdUJy0je1TvQw== 1637 + 1638 + is-fullwidth-code-point@^1.0.0: 1639 + version "1.0.0" 1640 + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" 1641 + integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== 1642 + dependencies: 1643 + number-is-nan "^1.0.0" 1644 + 1645 + is-my-json-valid@^2.12.4: 1646 + version "2.15.0" 1647 + resolved "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz" 1648 + integrity sha512-32CTy9FyiPq2qLVcb5Jh3pScUj5aLP0NRqACYT1bkJs5zIJsfzcsMs+W1sk4p5FEY5r5CuSjJ1VuYKZsA32ohg== 1649 + dependencies: 1650 + generate-function "^2.0.0" 1651 + generate-object-property "^1.1.0" 1652 + jsonpointer "^4.0.0" 1653 + xtend "^4.0.0" 1654 + 1655 + is-property@^1.0.0: 1656 + version "1.0.2" 1657 + resolved "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" 1658 + integrity sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g== 1659 + 1660 + is-typedarray@~1.0.0: 1661 + version "1.0.0" 1662 + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" 1663 + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== 1664 + 1665 + is-valid-domain@~0.0.1: 1666 + version "0.0.2" 1667 + resolved "https://registry.npmjs.org/is-valid-domain/-/is-valid-domain-0.0.2.tgz" 1668 + integrity sha512-cu39FMag8bRXovdSr/Y7YqaE/2b4ItrJij/fPPDYo89JVn21C3LR6Buatf0hYAcqimLZs0POodwHE4WDihLrqA== 1669 + 1670 + is-visible@^2.0.1, is-visible@^2.0.4: 1671 + version "2.1.1" 1672 + resolved "https://registry.npmjs.org/is-visible/-/is-visible-2.1.1.tgz" 1673 + integrity sha512-oddKCOHCwcZWwbbY9aYkJWMlFMbrqU0lN8S7AU3VCQfcczD3FrpMfeYa0lTq/n6SUsub0U8MrJKDMU9/s0mLaw== 1674 + dependencies: 1675 + iselement "^1.1.3" 1676 + style-properties "^1.3.1" 1677 + 1678 + is@^3.1.0: 1679 + version "3.1.0" 1680 + resolved "https://registry.npmjs.org/is/-/is-3.1.0.tgz" 1681 + integrity sha512-GvIjiMYxR9fgscrtCvSK31+0gNiFZrp01qlbaD2ed91FQc+0YwT33ncK5iUmPRi2R6ULjSPeIJx6JpelBoanpQ== 1682 + 1683 + isarray@^1.0.0, isarray@~1.0.0: 1684 + version "1.0.0" 1685 + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" 1686 + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== 1687 + 1688 + isarray@~0.0.1, isarray@0.0.1: 1689 + version "0.0.1" 1690 + resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" 1691 + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== 1692 + 1693 + iselement@^1.1.3: 1694 + version "1.1.4" 1695 + resolved "https://registry.npmjs.org/iselement/-/iselement-1.1.4.tgz" 1696 + integrity sha512-4Q519eWmbHO1pbimiz7H1iJRUHVmAmfh0viSsUD+oAwVO4ntZt7gpf8i8AShVBTyOvRTZNYNBpUxOIvwZR+ffw== 1697 + 1698 + isexe@^1.1.1: 1699 + version "1.1.2" 1700 + resolved "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz" 1701 + integrity sha512-d2eJzK691yZwPHcv1LbeAOa91yMJ9QmfTgSO1oXB65ezVhXQsxBac2vEB4bMVms9cGzaA99n6V2viHMq82VLDw== 1702 + 1703 + isstream@~0.1.2: 1704 + version "0.1.2" 1705 + resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" 1706 + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== 1707 + 1708 + jodid25519@^1.0.0: 1709 + version "1.0.2" 1710 + resolved "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz" 1711 + integrity sha512-b2Zna/wGIyTzi0Gemg27JYUaRyTyBETw5GnqyVQMr71uojOYMrgkD2+Px3bG2ZFi7/zTUXJSDoGoBOhMixq7tg== 1712 + dependencies: 1713 + jsbn "~0.1.0" 1714 + 1715 + jsbn@~0.1.0: 1716 + version "0.1.0" 1717 + resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz" 1718 + integrity sha512-nSJUKpgMhIK31baMn1+o+ykqan4LBGpeoQguOposJRYzectoBq94PDeRu8wwaJwHMoD7FTGjILdRyWZRuL9pAw== 1719 + 1720 + json-buffer@^2.0.11: 1721 + version "2.0.11" 1722 + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-2.0.11.tgz" 1723 + integrity sha512-Wu4/hxSZX7Krzjor+sZHWaRau6Be4WQHlrkl3v8cmxRBBewF2TotlgHUedKQJyFiUyFxnK/ZlRYnR9UNVZ7pkg== 1724 + 1725 + json-schema@0.2.3: 1726 + version "0.2.3" 1727 + resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz" 1728 + integrity sha512-a3xHnILGMtk+hDOqNwHzF6e2fNbiMrXZvxKQiEv2MlgQP+pjIOzqAmKYD2mDpXYE/44M7g+n9p2bKkYWDUcXCQ== 1729 + 1730 + json-stable-stringify@~0.0.0: 1731 + version "0.0.1" 1732 + resolved "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz" 1733 + integrity sha512-nKtD/Qxm7tWdZqJoldEC7fF0S41v0mWbeaXG3637stOWfyGxTgWTYE2wtfKmjzpvxv2MA2xzxsXOIiwUpkX6Qw== 1734 + dependencies: 1735 + jsonify "~0.0.0" 1736 + 1737 + json-stringify-safe@~5.0.0, json-stringify-safe@~5.0.1: 1738 + version "5.0.1" 1739 + resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" 1740 + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== 1741 + 1742 + jsonify@~0.0.0: 1743 + version "0.0.0" 1744 + resolved "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" 1745 + integrity sha512-trvBk1ki43VZptdBI5rIlG4YOzyeH/WefQt5rj1grasPn4iiZWKet8nkgc4GlsAylaztn0qZfUYOiTsASJFdNA== 1746 + 1747 + jsonist@~1.2.0: 1748 + version "1.2.0" 1749 + resolved "https://registry.npmjs.org/jsonist/-/jsonist-1.2.0.tgz" 1750 + integrity sha512-qEH2OvbVeHXh0T/elR24TEIy7MB+nbYAwNvpsbAcIzNtVYZ13/mVk0o3ENLu8AUB/ZhIbrmDpyi6sysYUIElpA== 1751 + dependencies: 1752 + bl "~1.0.0" 1753 + hyperquest "~1.2.0" 1754 + json-stringify-safe "~5.0.0" 1755 + xtend "~4.0.0" 1756 + 1757 + jsonparse@^1.2.0: 1758 + version "1.2.0" 1759 + resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.2.0.tgz" 1760 + integrity sha512-LkDEYtKnPFI9hQ/IURETe6F1dUH80cbRkaF6RaViSwoSNPwaxQpi6TgJGvJKyLQ2/9pQW+XCxK3hBoR44RAjkg== 1761 + 1762 + jsonpointer@^4.0.0: 1763 + version "4.0.0" 1764 + resolved "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.0.tgz" 1765 + integrity sha512-BSyv7u/pT7TCkuAi6PK67D/qa8Q1cDCrh0SHkacQWs7yg2X84pz8b7SbBr3FLNrd8NDAUlInT+DNbR1N4RsT/A== 1766 + 1767 + JSONStream@^1.0.3: 1768 + version "1.2.1" 1769 + resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.2.1.tgz" 1770 + integrity sha512-yLfH7+rxS2SHQAUgnBMoBGmXHB6NlYl46SazFADcom/wVBD0Idb2iP6CHvih8OZe4R98f6bJ2/XM+nBLxK69Kg== 1771 + dependencies: 1772 + jsonparse "^1.2.0" 1773 + through ">=2.2.7 <3" 1774 + 1775 + jsprim@^1.2.2: 1776 + version "1.3.1" 1777 + resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.3.1.tgz" 1778 + integrity sha512-bxYB8xe0/KIpYlNbZcA9e+lNquVmdPUGmZFNIQiAHPxkUDK2THIq3R+7VVgnv3UkZ63BrJ10+IeNZuew4Pso9Q== 1779 + dependencies: 1780 + extsprintf "1.0.2" 1781 + json-schema "0.2.3" 1782 + verror "1.3.6" 1783 + 1784 + konva@~1.0.0: 1785 + version "1.0.3" 1786 + resolved "https://registry.npmjs.org/konva/-/konva-1.0.3.tgz" 1787 + integrity sha512-PIRcWGh3LWXGtA3vH6cHAy604bzOckNIUBBQN1onBYPvfj9a73DgrVlqe5RqjPD3ChdfDAs2GuVE97jJpfRU7A== 1788 + 1789 + kvgraph@^0.1.0: 1790 + version "0.1.0" 1791 + resolved "https://registry.npmjs.org/kvgraph/-/kvgraph-0.1.0.tgz" 1792 + integrity sha512-A7Cn9SNXC3G+MnymR8rYg5k9qxKq+RRBUpWzKmuDB/2Dmvhl4jFt3B0kEuwR9D5DgkitfwqKy75wILepoqQKcg== 1793 + 1794 + labeled-stream-splicer@^2.0.0: 1795 + version "2.0.0" 1796 + resolved "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz" 1797 + integrity sha512-/6dSMZcWGSgSny5DzaW9L3mOIqhz6B/CCjmuszf8tfy/puNSNCJfCDAZGXZTrOdyNnIWNB1PR+bfrxHDPQwhLw== 1798 + dependencies: 1799 + inherits "^2.0.1" 1800 + isarray "~0.0.1" 1801 + stream-splicer "^2.0.0" 1802 + 1803 + letiny-core@^2.0.1: 1804 + version "2.0.3" 1805 + resolved "https://registry.npmjs.org/letiny-core/-/letiny-core-2.0.3.tgz" 1806 + integrity sha512-xOpwakxcZpDrArZe8mJuWSwc4qtk4RhWbUy37S+ah4adF8TKa9ftHA/k9wvEkDuNhZa5S0AVxxYnMITCZRwj9g== 1807 + dependencies: 1808 + node-forge "^0.6.38" 1809 + request "^2.55.0" 1810 + rsa-compat "^1.2.3" 1811 + optionalDependencies: 1812 + ursa "^0.9.1" 1813 + 1814 + letsencrypt-express@^1.1.5: 1815 + version "1.2.0" 1816 + resolved "https://registry.npmjs.org/letsencrypt-express/-/letsencrypt-express-1.2.0.tgz" 1817 + integrity sha512-G4ierluY4zsE3SURjeY+irkvhlXoE8md9xxgjt9fC8o0Plzw1WOn6I0oCuBuIFuP9jItypUEYtngP1+ZizcxyQ== 1818 + dependencies: 1819 + homedir "^0.6.0" 1820 + letsencrypt "^1.5.0" 1821 + localhost.daplie.com-certificates "^1.1.2" 1822 + mkdirp "^0.5.1" 1823 + 1824 + letsencrypt@^1.5.0: 1825 + version "1.5.8" 1826 + resolved "https://registry.npmjs.org/letsencrypt/-/letsencrypt-1.5.8.tgz" 1827 + integrity sha512-Oz5jOtYA3Up3Drud5r4n9Zr2+n3M8e8QHjqHMaGrNxAoU2RxoY01fPkY6Prb7rSr/7G98e0lmBSjk7vnuAJj7A== 1828 + dependencies: 1829 + asn1js "^1.2.12" 1830 + bluebird "^3.0.6" 1831 + homedir "^0.6.0" 1832 + letiny-core "^2.0.1" 1833 + mkdirp "^0.5.1" 1834 + node.extend "^1.1.5" 1835 + pkijs "^1.3.27" 1836 + pyconf "^1.1.2" 1837 + request "^2.67.0" 1838 + rsa-compat "^1.2.1" 1839 + safe-replace "^1.0.2" 1840 + 1841 + level-codec@~6.1.0: 1842 + version "6.1.0" 1843 + resolved "https://registry.npmjs.org/level-codec/-/level-codec-6.1.0.tgz" 1844 + integrity sha512-pPceZJpp/7HKN8R4oaSoHg2qxQPwo/d+RG+yeBBJQ5TI+rq9P5WWGMlpeXDTR/0QeXcGJstdRLYp/GGxKTrqOQ== 1845 + 1846 + level-errors@^1.0.3, level-errors@~1.0.3: 1847 + version "1.0.4" 1848 + resolved "https://registry.npmjs.org/level-errors/-/level-errors-1.0.4.tgz" 1849 + integrity sha512-DEwrtBVEsv2SJY4VB1zsg9gG3ZheXjl52bmsXG7/jE7XM5sqxjaxxej9AaMqmGoxjsr5o0khYuzZTEhcgBQtyw== 1850 + dependencies: 1851 + errno "~0.1.1" 1852 + 1853 + level-iterator-stream@~1.3.0: 1854 + version "1.3.1" 1855 + resolved "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz" 1856 + integrity sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw== 1857 + dependencies: 1858 + inherits "^2.0.1" 1859 + level-errors "^1.0.3" 1860 + readable-stream "^1.0.33" 1861 + xtend "^4.0.0" 1862 + 1863 + level-packager@~1.2.0: 1864 + version "1.2.0" 1865 + resolved "https://registry.npmjs.org/level-packager/-/level-packager-1.2.0.tgz" 1866 + integrity sha512-oDyGwYgTAz9/08Q32M+S869wyBJ+GxV40nra+ihp9I+TcxIKm04h5Ievy6/d1Ljwjw+x4IOmJ6Xs4djBIJ8FSQ== 1867 + dependencies: 1868 + levelup "~1.3.0" 1869 + 1870 + level-post@~1.0.3: 1871 + version "1.0.5" 1872 + resolved "https://registry.npmjs.org/level-post/-/level-post-1.0.5.tgz" 1873 + integrity sha512-A2VlgnSWjXuMnk4CAw0aWJnQZyrHcTd9Q34/cy23z3eD0QhaNdP/5zFd4wT0ALbzqfL6V3LLfqvu27A72s7n0A== 1874 + dependencies: 1875 + ltgt "^2.1.2" 1876 + 1877 + level@^1.4.0, level@^1.7.0: 1878 + version "1.7.0" 1879 + resolved "https://registry.npmjs.org/level/-/level-1.7.0.tgz" 1880 + integrity sha512-Ev92KRZGGJiKs86pK4v9XwEdOxrzXfD5bzaxbwdyNokyXK4WBd0V8OW/KD0rsgKTicp0ocja6Un7hCwYNDy+0g== 1881 + dependencies: 1882 + level-packager "~1.2.0" 1883 + leveldown "~1.7.0" 1884 + 1885 + leveldown@~1.7.0: 1886 + version "1.7.2" 1887 + resolved "https://registry.npmjs.org/leveldown/-/leveldown-1.7.2.tgz" 1888 + integrity sha512-SV57VxeejUnuUodKRmKQ2JJzGkHl4u6+8cpiWOIUR1tUrLn8FeeTiU2t4jT/P5dE1ORYArfgoXE2Vfzrb6nOWQ== 1889 + dependencies: 1890 + abstract-leveldown "~2.6.1" 1891 + bindings "~1.2.1" 1892 + fast-future "~1.0.2" 1893 + nan "~2.6.1" 1894 + prebuild-install "^2.1.0" 1895 + 1896 + levelup@~1.3.0: 1897 + version "1.3.3" 1898 + resolved "https://registry.npmjs.org/levelup/-/levelup-1.3.3.tgz" 1899 + integrity sha512-3umRkkE0PuPT5tQFY234TZFg2+KHTOUdD2q5x5eVtVPteB4TpSOQRIkVMndGalp92AY6gXrcFCQxVSMXQZzOjw== 1900 + dependencies: 1901 + deferred-leveldown "~1.2.1" 1902 + level-codec "~6.1.0" 1903 + level-errors "~1.0.3" 1904 + level-iterator-stream "~1.3.0" 1905 + prr "~1.0.1" 1906 + semver "~5.1.0" 1907 + xtend "~4.0.0" 1908 + 1909 + lexical-scope@^1.2.0: 1910 + version "1.2.0" 1911 + resolved "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz" 1912 + integrity sha512-ntJ8IcBCuKwudML7vAuT/L0aIMU0+9vO25K4CjLPYgzf1NZ0bAhJJBZrvkO+oUGgKcbdkH8UZdRsaEg+wULLRw== 1913 + dependencies: 1914 + astw "^2.0.0" 1915 + 1916 + libnested@^1.1.0: 1917 + version "1.5.2" 1918 + resolved "https://registry.npmjs.org/libnested/-/libnested-1.5.2.tgz" 1919 + integrity sha512-DbiwHL8454goYRp5Xn9vUA5XU6x8rNh8BmZ7ywSTUhVBIiDS7ev/FT6+AwU2/ZKW2jEOC7WKhpkJfExaQwosRA== 1920 + 1921 + libsodium-wrappers@^0.2.9: 1922 + version "0.2.12" 1923 + resolved "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.2.12.tgz" 1924 + integrity sha512-kv+7+E2Qmi3OlCeGjgXcINjGtrnUhkqQGBj43/feVpAYQ6fTqh6cxwVdPXzEXDHrzbc0IVH3wGiTPzPOvGvPPA== 1925 + dependencies: 1926 + libsodium "0.2.12" 1927 + 1928 + libsodium@0.2.12: 1929 + version "0.2.12" 1930 + resolved "https://registry.npmjs.org/libsodium/-/libsodium-0.2.12.tgz" 1931 + integrity sha512-Jk86VGDdn8lFVltGjHbNiXjlJAIqu37VmXmIh2B0D8IZWuWZhjXBM78TRFVz0oneJIYTfusJT+wWNJ30WG2RFw== 1932 + 1933 + localhost.daplie.com-certificates@^1.1.2: 1934 + version "1.2.3" 1935 + resolved "https://registry.npmjs.org/localhost.daplie.com-certificates/-/localhost.daplie.com-certificates-1.2.3.tgz" 1936 + integrity sha512-8kmWJPMMn9JwNWHHHlqbcZfYLwumazAabk21A9fTIhfanwJp9oTj44wXpmgada6BBZG8r3RO8zf3wxAlslj7HQ== 1937 + 1938 + lodash.memoize@~3.0.3: 1939 + version "3.0.4" 1940 + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz" 1941 + integrity sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A== 1942 + 1943 + lodash.pad@^4.1.0: 1944 + version "4.5.1" 1945 + resolved "https://registry.npmjs.org/lodash.pad/-/lodash.pad-4.5.1.tgz" 1946 + integrity sha512-mvUHifnLqM+03YNzeTBS1/Gr6JRFjd3rRx88FHWUvamVaT9k2O/kXha3yBSOwB9/DTQrSTLJNHvLBBt2FdX7Mg== 1947 + 1948 + lodash.padend@^4.1.0: 1949 + version "4.6.1" 1950 + resolved "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz" 1951 + integrity sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw== 1952 + 1953 + lodash.padstart@^4.1.0: 1954 + version "4.6.1" 1955 + resolved "https://registry.npmjs.org/lodash.padstart/-/lodash.padstart-4.6.1.tgz" 1956 + integrity sha512-sW73O6S8+Tg66eY56DBk85aQzzUJDtpoXFBgELMd5P/SotAguo+1kYO6RuYgXxA4HJH3LFTFPASX6ET6bjfriw== 1957 + 1958 + looper@^2.0.0: 1959 + version "2.0.0" 1960 + resolved "https://registry.npmjs.org/looper/-/looper-2.0.0.tgz" 1961 + integrity sha512-6DzMHJcjbQX/UPHc1rRCBfKlLwDkvuGZ715cIR36wSdYqWXFT35uLXq5P/2orl3tz+t+VOVPxw4yPinQlUDGDQ== 1962 + 1963 + looper@^3.0.0, looper@~3.0.0: 1964 + version "3.0.0" 1965 + resolved "https://registry.npmjs.org/looper/-/looper-3.0.0.tgz" 1966 + integrity sha512-LJ9wplN/uSn72oJRsXTx+snxPet5c8XiZmOKCm906NVYu+ag6SB6vUcnJcWxgnl2NfbIyeobAn7Bwv6xRj2XJg== 1967 + 1968 + looper@^4.0.0: 1969 + version "4.0.0" 1970 + resolved "https://registry.npmjs.org/looper/-/looper-4.0.0.tgz" 1971 + integrity sha512-NjGRcX4vCwyfbujv03omakGfAYh6St5kVsZFKfU23MFO1Z9/mZT8ypTZMEnvVC7nJeYtbqkRPFV4GoJBPdJgYw== 1972 + 1973 + ltgt@^2.1.2, ltgt@^2.1.3: 1974 + version "2.2.1" 1975 + resolved "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz" 1976 + integrity sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA== 1977 + 1978 + map-filter-reduce@^3.0.1, map-filter-reduce@^3.0.2: 1979 + version "3.0.2" 1980 + resolved "https://registry.npmjs.org/map-filter-reduce/-/map-filter-reduce-3.0.2.tgz" 1981 + integrity sha512-UfkKV1zgBsNJ2PdUpf/fEdoUopKL+U1B+lpW3YQbl49hMW2ZLrzYdY6/99q79HmFnR22jXVkS4LIvaFqy+KYIA== 1982 + dependencies: 1983 + binary-search "^1.2.0" 1984 + pull-sink-through "0.0.0" 1985 + pull-stream "^3.4.3" 1986 + typewiselite "^1.0.0" 1987 + 1988 + math-intrinsics@^1.1.0: 1989 + version "1.1.0" 1990 + resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz" 1991 + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== 1992 + 1993 + miller-rabin@^4.0.0: 1994 + version "4.0.0" 1995 + resolved "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz" 1996 + integrity sha512-aaZr5VprJSt03eVBJEsG+LOI2ccb/j+DXrnme/z/2M2+K9TRM7IY0+Csko/8dYF3XlUHvgPhrcDZfOAHXYqiZg== 1997 + dependencies: 1998 + bn.js "^4.0.0" 1999 + brorand "^1.0.1" 2000 + 2001 + mime-db@~1.24.0: 2002 + version "1.24.0" 2003 + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.24.0.tgz" 2004 + integrity sha512-0XGpuLCNPqkv3vYiRjh1w6h4RbIGWyCh8OnXejta9INkFX0M8ENYth8O0As8rSGDxzEO1PafhiaqQdtqhtA2lw== 2005 + 2006 + mime-types@^2.1.11, mime-types@~2.1.7: 2007 + version "2.1.12" 2008 + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.12.tgz" 2009 + integrity sha512-irQD8Ww11AaU8vbCRjMuaq4huvb2ITxVg/VDBrvf8keFtbWZ3zbGO0tvsCMbD7JlR8mOYw0WbAqi4sL8KGUd5w== 2010 + dependencies: 2011 + mime-db "~1.24.0" 2012 + 2013 + mimic-response@^1.0.0: 2014 + version "1.0.1" 2015 + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" 2016 + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== 2017 + 2018 + min-document@^2.6.1: 2019 + version "2.19.0" 2020 + resolved "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz" 2021 + integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== 2022 + dependencies: 2023 + dom-walk "^0.1.0" 2024 + 2025 + minimalistic-assert@^1.0.0: 2026 + version "1.0.0" 2027 + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz" 2028 + integrity sha512-0xPOgDvW9sfA9OrHHCuSRZhj/e+L82RGLFf0b9EsvagmQpGnRYtztTIuq1JR3biVE7u+Mu2jWZqSxvZ8CaMrBQ== 2029 + 2030 + minimatch@^3.0.2, minimatch@^3.1.1, "minimatch@2 || 3", minimatch@3: 2031 + version "3.1.2" 2032 + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" 2033 + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 2034 + dependencies: 2035 + brace-expansion "^1.1.7" 2036 + 2037 + minimist@^1.1.0, minimist@^1.1.2, minimist@^1.2.0, minimist@^1.2.6: 2038 + version "1.2.8" 2039 + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" 2040 + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== 2041 + 2042 + minimist@~0.0.1: 2043 + version "0.0.10" 2044 + resolved "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" 2045 + integrity sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw== 2046 + 2047 + minimist@0.0.8: 2048 + version "0.0.8" 2049 + resolved "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" 2050 + integrity sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q== 2051 + 2052 + mkdirp-classic@^0.5.2: 2053 + version "0.5.3" 2054 + resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz" 2055 + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== 2056 + 2057 + mkdirp@^0.5.0, mkdirp@^0.5.1, "mkdirp@>=0.5 0", mkdirp@~0.5.0: 2058 + version "0.5.1" 2059 + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz" 2060 + integrity sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA== 2061 + dependencies: 2062 + minimist "0.0.8" 2063 + 2064 + module-deps@^4.0.2: 2065 + version "4.0.7" 2066 + resolved "https://registry.npmjs.org/module-deps/-/module-deps-4.0.7.tgz" 2067 + integrity sha512-3MGZkxdZLoKxOuBd50SzjrbHMgYbdOewnx0AsbKDTrlIKUkTA4ZBprnvvbWqq8d4FcdaqNiZ/HG5X+1zcWrU7g== 2068 + dependencies: 2069 + browser-resolve "^1.7.0" 2070 + concat-stream "~1.5.0" 2071 + defined "^1.0.0" 2072 + detective "^4.0.0" 2073 + duplexer2 "^0.1.2" 2074 + inherits "^2.0.1" 2075 + JSONStream "^1.0.3" 2076 + parents "^1.0.0" 2077 + readable-stream "^2.0.2" 2078 + resolve "^1.1.3" 2079 + stream-combiner2 "^1.1.1" 2080 + subarg "^1.0.0" 2081 + through2 "^2.0.0" 2082 + xtend "^4.0.0" 2083 + 2084 + module-deps@^6.2.3: 2085 + version "6.2.3" 2086 + resolved "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz" 2087 + integrity sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA== 2088 + dependencies: 2089 + browser-resolve "^2.0.0" 2090 + cached-path-relative "^1.0.2" 2091 + concat-stream "~1.6.0" 2092 + defined "^1.0.0" 2093 + detective "^5.2.0" 2094 + duplexer2 "^0.1.2" 2095 + inherits "^2.0.1" 2096 + JSONStream "^1.0.3" 2097 + parents "^1.0.0" 2098 + readable-stream "^2.0.2" 2099 + resolve "^1.4.0" 2100 + stream-combiner2 "^1.1.1" 2101 + subarg "^1.0.0" 2102 + through2 "^2.0.0" 2103 + xtend "^4.0.0" 2104 + 2105 + moment@^2.13.0: 2106 + version "2.15.1" 2107 + resolved "https://registry.npmjs.org/moment/-/moment-2.15.1.tgz" 2108 + integrity sha512-VRuqlq9ET3eUjWkqgZtUegkYF664TRWaxmgwlHxboe653wv4stNaVKDufNfCDcGFu1EA2Bm26bD0NWLaFMHfvA== 2109 + 2110 + monotonic-timestamp@~0.0.9: 2111 + version "0.0.9" 2112 + resolved "https://registry.npmjs.org/monotonic-timestamp/-/monotonic-timestamp-0.0.9.tgz" 2113 + integrity sha512-PQcys7iTcXiMyW8cgK5B/fhKGteB/WLqWN1f+s7IJHyyRd80JnJYoNo03kTQcGZhVtsKz5kEWiS7W94gfY6qcQ== 2114 + 2115 + moo@^0.5.0: 2116 + version "0.5.2" 2117 + resolved "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz" 2118 + integrity sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q== 2119 + 2120 + ms@0.7.1: 2121 + version "0.7.1" 2122 + resolved "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" 2123 + integrity sha512-lRLiIR9fSNpnP6TC4v8+4OU7oStC01esuNowdQ34L+Gk8e5Puoc88IqJ+XAY/B3Mn2ZKis8l8HX90oU8ivzUHg== 2124 + 2125 + multiblob-http@^0.2.0: 2126 + version "0.2.0" 2127 + resolved "https://registry.npmjs.org/multiblob-http/-/multiblob-http-0.2.0.tgz" 2128 + integrity sha512-VdlUaHrYxW3d/DgpHC8aOnBO/rEH6fcbSM2qPAtco9a0wB7H+5qU+vAawQaHnuK+eltIGuslC3HZ+orKU/6JeQ== 2129 + dependencies: 2130 + pull-stream "^3.4.3" 2131 + stream-to-pull-stream "^1.7.0" 2132 + 2133 + multiserver-address@^1.0.1: 2134 + version "1.0.1" 2135 + resolved "https://registry.npmjs.org/multiserver-address/-/multiserver-address-1.0.1.tgz" 2136 + integrity sha512-IfZMAGs9onCLkYNSnNBri3JxuvhQYllMyh3W9ry86iEDcfW9uPVsHTHDsjDxQtL+dPq3byshmA+Y4LN2wLHwNw== 2137 + dependencies: 2138 + nearley "^2.15.1" 2139 + 2140 + multiserver@^1.2.0, multiserver@^1.7.0: 2141 + version "1.7.2" 2142 + resolved "https://registry.npmjs.org/multiserver/-/multiserver-1.7.2.tgz" 2143 + integrity sha512-oGwzuh64wmyxF9/w8jdCyYbmPFFhbRuKgc+/SZGS7PgNWUk9ilYQ7vyzysSMytzv/IiurHS96/ymRWre2DvByw== 2144 + dependencies: 2145 + pull-cat "~1.1.5" 2146 + pull-stream "^3.4.3" 2147 + pull-ws "^3.2.2" 2148 + secret-handshake "^1.1.1" 2149 + separator-escape "0.0.0" 2150 + socks "1.1.9" 2151 + stream-to-pull-stream "^1.7.2" 2152 + 2153 + muxrpc@^6.3.3: 2154 + version "6.3.3" 2155 + resolved "https://registry.npmjs.org/muxrpc/-/muxrpc-6.3.3.tgz" 2156 + integrity sha512-h/qoJuzuWpWMPIbiYOT5nJXgmRUOIAg1ycAOTyOsupjXJETna5l2w7LFvmaJJ2vIDJha4M60l54QHrbqEcGlmA== 2157 + dependencies: 2158 + explain-error "^1.0.1" 2159 + packet-stream "~2.0.0" 2160 + packet-stream-codec "^1.1.1" 2161 + pull-goodbye "~0.0.1" 2162 + pull-stream "^3.2.3" 2163 + 2164 + nan@^2.0.9, nan@^2.3.3, nan@~2.6.1: 2165 + version "2.6.2" 2166 + resolved "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz" 2167 + integrity sha512-K3AyXBwEX6HF3eV46B9YLyyJ66DiBI66v+pTQfz+AyMOdOtg2aH/3WNSDbb3cVDLfPEJmx70aDu60aDTG5x+sw== 2168 + 2169 + nearley@^2.15.1: 2170 + version "2.20.1" 2171 + resolved "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz" 2172 + integrity sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ== 2173 + dependencies: 2174 + commander "^2.19.0" 2175 + moo "^0.5.0" 2176 + railroad-diagrams "^1.0.0" 2177 + randexp "0.4.6" 2178 + 2179 + node-abi@^2.2.0: 2180 + version "2.30.1" 2181 + resolved "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz" 2182 + integrity sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w== 2183 + dependencies: 2184 + semver "^5.4.1" 2185 + 2186 + node-forge@^0.6.38, node-forge@^0.6.41: 2187 + version "0.6.43" 2188 + resolved "https://registry.npmjs.org/node-forge/-/node-forge-0.6.43.tgz" 2189 + integrity sha512-m6rYQ6vzGNdZIYZCo4X5sm5iUiqpvp/He4vOXUdP0WzKJ9cHTC/Wz6nzBjZUYiSCLv+C3YGvtcAIxP1Mx1iqcw== 2190 + 2191 + node-gyp@^3.0.3: 2192 + version "3.4.0" 2193 + resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-3.4.0.tgz" 2194 + integrity sha512-HtmskmW14d8KGUYYHKFx+W4k2oGeoDLHylGsgRXYh75yFsSrv7/Dw3sdAmuJ4AB/auxa4P5/NC70W4+jFrcofw== 2195 + dependencies: 2196 + fstream "^1.0.0" 2197 + glob "^7.0.3" 2198 + graceful-fs "^4.1.2" 2199 + minimatch "^3.0.2" 2200 + mkdirp "^0.5.0" 2201 + nopt "2 || 3" 2202 + npmlog "0 || 1 || 2 || 3" 2203 + osenv "0" 2204 + path-array "^1.0.0" 2205 + request "2" 2206 + rimraf "2" 2207 + semver "2.x || 3.x || 4 || 5" 2208 + tar "^2.0.0" 2209 + which "1" 2210 + 2211 + node-ninja@^1.0.1: 2212 + version "1.0.2" 2213 + resolved "https://registry.npmjs.org/node-ninja/-/node-ninja-1.0.2.tgz" 2214 + integrity sha512-wMtWsG2QZI1Z5V7GciX9OI2DVT0PuDRIDQfe3L3rJsQ1qN1Gm3QQhoNtb4PMRi7gq4ByvEIYtPwHC7YbEf5yxw== 2215 + dependencies: 2216 + fstream "^1.0.0" 2217 + glob "3 || 4 || 5 || 6 || 7" 2218 + graceful-fs "^4.1.2" 2219 + minimatch "3" 2220 + mkdirp "^0.5.0" 2221 + nopt "2 || 3" 2222 + npmlog "0 || 1 || 2" 2223 + osenv "0" 2224 + path-array "^1.0.0" 2225 + request "2" 2226 + rimraf "2" 2227 + semver "2.x || 3.x || 4 || 5" 2228 + tar "^2.0.0" 2229 + which "1" 2230 + 2231 + node-uuid@~1.4.7: 2232 + version "1.4.7" 2233 + resolved "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz" 2234 + integrity sha512-1ufwSb+P48JyWDskpICvUCAXNaIFcNeln/hhg6yViwOoJ6g26SfaFoYIuGu0grRUsxqeJkC2aq5wAxXo1bT/FA== 2235 + 2236 + node.extend@^1.1.5: 2237 + version "1.1.6" 2238 + resolved "https://registry.npmjs.org/node.extend/-/node.extend-1.1.6.tgz" 2239 + integrity sha512-dkI3ZpV4lhARrqGS/zTJpOaypTvZ1AXdvUc86TjrxQbWyOGq5J/pfptiiThIzraKGmaDpnwGiDOIL+yACUSpGA== 2240 + dependencies: 2241 + is "^3.1.0" 2242 + 2243 + non-private-ip@^1.2.1: 2244 + version "1.4.1" 2245 + resolved "https://registry.npmjs.org/non-private-ip/-/non-private-ip-1.4.1.tgz" 2246 + integrity sha512-Bpl5pRs6HPP8vL/b0yDzEy20HXKNVz6I6PR1rCxAIwjOBpC3T/BfFv036gUNstxtoAVxBKgFL14FfWzC7fxENA== 2247 + dependencies: 2248 + ip "~0.3.2" 2249 + 2250 + noop-logger@^0.1.0, noop-logger@^0.1.1: 2251 + version "0.1.1" 2252 + resolved "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz" 2253 + integrity sha512-6kM8CLXvuW5crTxsAtva2YLrRrDaiTIkIePWs9moLHqbFWT94WpNFjwS/5dfLfECg5i/lkmw3aoqVidxt23TEQ== 2254 + 2255 + "nopt@2 || 3": 2256 + version "3.0.6" 2257 + resolved "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz" 2258 + integrity sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg== 2259 + dependencies: 2260 + abbrev "1" 2261 + 2262 + npmlog@^2.0.0, "npmlog@0 || 1 || 2", "npmlog@0 || 1 || 2 || 3": 2263 + version "2.0.4" 2264 + resolved "https://registry.npmjs.org/npmlog/-/npmlog-2.0.4.tgz" 2265 + integrity sha512-DaL6RTb8Qh4tMe2ttPT1qWccETy2Vi5/8p+htMpLBeXJTr2CAqnF5WQtSP2eFpvaNbhLZ5uilDb98mRm4Q+lZQ== 2266 + dependencies: 2267 + ansi "~0.3.1" 2268 + are-we-there-yet "~1.1.2" 2269 + gauge "~1.2.5" 2270 + 2271 + npmlog@^4.0.1: 2272 + version "4.1.2" 2273 + resolved "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz" 2274 + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== 2275 + dependencies: 2276 + are-we-there-yet "~1.1.2" 2277 + console-control-strings "~1.1.0" 2278 + gauge "~2.7.3" 2279 + set-blocking "~2.0.0" 2280 + 2281 + number-is-nan@^1.0.0: 2282 + version "1.0.1" 2283 + resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" 2284 + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== 2285 + 2286 + oauth-sign@~0.8.1: 2287 + version "0.8.2" 2288 + resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz" 2289 + integrity sha512-VlF07iu3VV3+BTXj43Nmp6Irt/G7j/NgEctUS6IweH1RGhURjjCc2NWtzXFPXXWWfc7hgbXQdtiQu2LGp6MxUg== 2290 + 2291 + object-assign@^4.1.0: 2292 + version "4.1.0" 2293 + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" 2294 + integrity sha512-Lbc7GfN7XFaK30bzUN3cDYLOkT0dH05S0ax1QikylHUD9+Z9PRF3G1iYwX3kcz+6AlzTFGkUgMxz6l3aUwbwTA== 2295 + 2296 + object-keys@^1.1.1: 2297 + version "1.1.1" 2298 + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" 2299 + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 2300 + 2301 + object-keys@~0.4.0: 2302 + version "0.4.0" 2303 + resolved "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz" 2304 + integrity sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw== 2305 + 2306 + object.assign@^4.1.4: 2307 + version "4.1.7" 2308 + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz" 2309 + integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== 2310 + dependencies: 2311 + call-bind "^1.0.8" 2312 + call-bound "^1.0.3" 2313 + define-properties "^1.2.1" 2314 + es-object-atoms "^1.0.0" 2315 + has-symbols "^1.1.0" 2316 + object-keys "^1.1.1" 2317 + 2318 + observable@^2.1.4: 2319 + version "2.1.4" 2320 + resolved "https://registry.npmjs.org/observable/-/observable-2.1.4.tgz" 2321 + integrity sha512-YP03BvfvWSu3IZgcByNp5d9mNJAMjJG8TI2z9rrAR0jQvVH6csE+3VPkAemR0n3hOlI5vJ7gWgg0YPGUFZaQBg== 2322 + 2323 + obv@0.0.0: 2324 + version "0.0.0" 2325 + resolved "https://registry.npmjs.org/obv/-/obv-0.0.0.tgz" 2326 + integrity sha512-bLAyq8rbd2+Kam6hckUvufIAqIKuYJxaSeVOpsdd+FIZsm14s9vn0rnplqlSaFq9XJFAFsZy+9UHyPuviHC9hA== 2327 + 2328 + once@^1.3.0, once@^1.3.1: 2329 + version "1.4.0" 2330 + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" 2331 + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 2332 + dependencies: 2333 + wrappy "1" 2334 + 2335 + once@~1.3.0: 2336 + version "1.3.3" 2337 + resolved "https://registry.npmjs.org/once/-/once-1.3.3.tgz" 2338 + integrity sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w== 2339 + dependencies: 2340 + wrappy "1" 2341 + 2342 + open-external@^0.1.1: 2343 + version "0.1.1" 2344 + resolved "https://registry.npmjs.org/open-external/-/open-external-0.1.1.tgz" 2345 + integrity sha512-rSzSGztPVglGoM7nYpoDdP+tiC8kywl0qICGH7A7Dt0cXHYmCGy0y2Abo9fNU1zElFg9tWHQMo1bkJjWq7NQdQ== 2346 + 2347 + optimist@~0.6.0: 2348 + version "0.6.1" 2349 + resolved "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz" 2350 + integrity sha512-snN4O4TkigujZphWLN0E//nQmm7790RYaE53DdL7ZYwee2D8DDo9/EyYiKUfN3rneWUjhJnueija3G9I2i0h3g== 2351 + dependencies: 2352 + minimist "~0.0.1" 2353 + wordwrap "~0.0.2" 2354 + 2355 + options@>=0.0.5: 2356 + version "0.0.6" 2357 + resolved "https://registry.npmjs.org/options/-/options-0.0.6.tgz" 2358 + integrity sha512-bOj3L1ypm++N+n7CEbbe473A414AB7z+amKYshRb//iuL3MpdDCLhPnw6aVTdKB9g5ZRVHIEp8eUln6L2NUStg== 2359 + 2360 + os-browserify@~0.1.1: 2361 + version "0.1.2" 2362 + resolved "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz" 2363 + integrity sha512-aZicJZccvxWOZ0Bja2eAch2L8RIJWBuRYmM8Gwl/JjNtRltH0Itcz4eH/ESyuIWfse8cc93ZCf0XrzhXK2HEDA== 2364 + 2365 + os-browserify@~0.3.0: 2366 + version "0.3.0" 2367 + resolved "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz" 2368 + integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== 2369 + 2370 + os-homedir@^1.0.0, os-homedir@^1.0.1: 2371 + version "1.0.2" 2372 + resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" 2373 + integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== 2374 + 2375 + os-tmpdir@^1.0.0: 2376 + version "1.0.2" 2377 + resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" 2378 + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== 2379 + 2380 + osenv@0: 2381 + version "0.1.3" 2382 + resolved "https://registry.npmjs.org/osenv/-/osenv-0.1.3.tgz" 2383 + integrity sha512-18fsEKxrUnXycnkcq1EE/i3tGFdhtugTycAlVM5PVazmrVTPA8XV/FCFA0482qJoR8OZa3WGzxxj3SNxJz5O7Q== 2384 + dependencies: 2385 + os-homedir "^1.0.0" 2386 + os-tmpdir "^1.0.0" 2387 + 2388 + packet-stream-codec@^1.1.1: 2389 + version "1.1.1" 2390 + resolved "https://registry.npmjs.org/packet-stream-codec/-/packet-stream-codec-1.1.1.tgz" 2391 + integrity sha512-7LINz+eibmP6ifADErg5EJclqIUuKg1HxcxDEMoPPlPu9py8Dp5CVylYcMDulgluKWZzUy5MN+DnmqJWcVtlfg== 2392 + dependencies: 2393 + pull-reader "^1.2.4" 2394 + pull-through "^1.0.17" 2395 + 2396 + packet-stream@~2.0.0: 2397 + version "2.0.0" 2398 + resolved "https://registry.npmjs.org/packet-stream/-/packet-stream-2.0.0.tgz" 2399 + integrity sha512-Gzhme5hOiqM/ZLMnZxHLLp794PDeOmmOAJtEF/MX1ApB8u36THuReuguYKVnNmyuZEcKqNZwFTM2BHorTpzDeg== 2400 + 2401 + pako@~0.2.0: 2402 + version "0.2.9" 2403 + resolved "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz" 2404 + integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA== 2405 + 2406 + pako@~1.0.5: 2407 + version "1.0.11" 2408 + resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" 2409 + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== 2410 + 2411 + parents@^1.0.0, parents@^1.0.1: 2412 + version "1.0.1" 2413 + resolved "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz" 2414 + integrity sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg== 2415 + dependencies: 2416 + path-platform "~0.11.15" 2417 + 2418 + parse-asn1@^5.0.0: 2419 + version "5.0.0" 2420 + resolved "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.0.0.tgz" 2421 + integrity sha512-5UdkCzM6fENVxG4S3D7ivyWNozyK5ExOb4xdqW6/ukged2cG1/eQPL+L9Dem719A1Wfi3VvJ/ssSwzp9asI+rg== 2422 + dependencies: 2423 + asn1.js "^4.0.0" 2424 + browserify-aes "^1.0.0" 2425 + create-hash "^1.1.0" 2426 + evp_bytestokey "^1.0.0" 2427 + pbkdf2 "^3.0.3" 2428 + 2429 + path-array@^1.0.0: 2430 + version "1.0.1" 2431 + resolved "https://registry.npmjs.org/path-array/-/path-array-1.0.1.tgz" 2432 + integrity sha512-teWG2rJTJJZi2kINKOsHcdIuHP7jy3D7pAsVgdhxMq8kaL2RnS5sg7YTlrClMVCIItcVbPTPI6eMBEoNxYahLA== 2433 + dependencies: 2434 + array-index "^1.0.0" 2435 + 2436 + path-browserify@~0.0.0: 2437 + version "0.0.0" 2438 + resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz" 2439 + integrity sha512-WA3pxi1olUQcsl82W576vkqhUSGp0uBtr/381pxx5WXLp3NC+AB99hUG3aGW7H0Kg9PFr1D8wv1iJeICe+9Mhw== 2440 + 2441 + path-is-absolute@^1.0.0: 2442 + version "1.0.1" 2443 + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" 2444 + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 2445 + 2446 + path-parse@^1.0.7: 2447 + version "1.0.7" 2448 + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" 2449 + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 2450 + 2451 + path-platform@~0.11.15: 2452 + version "0.11.15" 2453 + resolved "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz" 2454 + integrity sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg== 2455 + 2456 + pbkdf2@^3.0.3: 2457 + version "3.0.9" 2458 + resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.9.tgz" 2459 + integrity sha512-sga/my2defvIpHceQt0sJSQQ/L3Go0cwTEYp8iYBHOSwGIF2jNeila8OD/hRzrkC4bEZm6HIAaU17TEnWYrvgg== 2460 + dependencies: 2461 + create-hmac "^1.1.2" 2462 + 2463 + peaks.js@^0.4.7: 2464 + version "0.4.9" 2465 + resolved "https://registry.npmjs.org/peaks.js/-/peaks.js-0.4.9.tgz" 2466 + integrity sha512-oJpEMKzFue8jdvtEpBzpkZyF2xvCYscNMTL7viQSMS1M4hP1uAlpFYebU7vxwCdE8dHTaocsXCwLhQzqVU1hZw== 2467 + dependencies: 2468 + eventemitter2 "~1.0.0" 2469 + konva "~1.0.0" 2470 + waveform-data "^1.5.2" 2471 + 2472 + pinkie-promise@^2.0.0: 2473 + version "2.0.1" 2474 + resolved "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" 2475 + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== 2476 + dependencies: 2477 + pinkie "^2.0.0" 2478 + 2479 + pinkie@^2.0.0: 2480 + version "2.0.4" 2481 + resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" 2482 + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== 2483 + 2484 + pkijs@^1.3.27: 2485 + version "1.3.27" 2486 + resolved "https://registry.npmjs.org/pkijs/-/pkijs-1.3.27.tgz" 2487 + integrity sha512-iVLOmMksN/OdY/4q/Rt8zb65L2eGJDQouJHk0xfgLjMeQFbYf5PqVT5RHhiUjHSxkCbNNbXPgptU3BAKIOE/bQ== 2488 + 2489 + prebuild-install@^2.1.0: 2490 + version "2.5.3" 2491 + resolved "https://registry.npmjs.org/prebuild-install/-/prebuild-install-2.5.3.tgz" 2492 + integrity sha512-/rI36cN2g7vDQnKWN8Uzupi++KjyqS9iS+/fpwG4Ea8d0Pip0PQ5bshUNzVwt+/D2MRfhVAplYMMvWLqWrCF/g== 2493 + dependencies: 2494 + detect-libc "^1.0.3" 2495 + expand-template "^1.0.2" 2496 + github-from-package "0.0.0" 2497 + minimist "^1.2.0" 2498 + mkdirp "^0.5.1" 2499 + node-abi "^2.2.0" 2500 + noop-logger "^0.1.1" 2501 + npmlog "^4.0.1" 2502 + os-homedir "^1.0.1" 2503 + pump "^2.0.1" 2504 + rc "^1.1.6" 2505 + simple-get "^2.7.0" 2506 + tar-fs "^1.13.0" 2507 + tunnel-agent "^0.6.0" 2508 + which-pm-runs "^1.0.0" 2509 + 2510 + prebuild@^4.1.0: 2511 + version "4.3.0" 2512 + resolved "https://registry.npmjs.org/prebuild/-/prebuild-4.3.0.tgz" 2513 + integrity sha512-jNtGco6vFhdwT9sfnn3JIC3SwN+shFIUYkalDt1qqyQHrkmEertkaDr/2EhRVTzuFiqOCHibv50/8gumJR6Vrg== 2514 + dependencies: 2515 + async "^1.4.0" 2516 + execspawn "^1.0.1" 2517 + expand-template "^1.0.0" 2518 + ghreleases "^1.0.2" 2519 + github-from-package "0.0.0" 2520 + minimist "^1.1.2" 2521 + mkdirp "^0.5.1" 2522 + node-gyp "^3.0.3" 2523 + node-ninja "^1.0.1" 2524 + noop-logger "^0.1.0" 2525 + npmlog "^2.0.0" 2526 + os-homedir "^1.0.1" 2527 + pump "^1.0.0" 2528 + rc "^1.0.3" 2529 + simple-get "^1.4.2" 2530 + tar-fs "^1.7.0" 2531 + tar-stream "^1.2.1" 2532 + xtend "^4.0.1" 2533 + 2534 + private-box@^0.2.1: 2535 + version "0.2.1" 2536 + resolved "https://registry.npmjs.org/private-box/-/private-box-0.2.1.tgz" 2537 + integrity sha512-+qsgNSa2uuGmFE1D++93+8oElktnLYaTAy3W7zay+Dcerw1NKHpfOBcvCz0z8+uOSJLhDHwH14ftBMMtSdRYIg== 2538 + dependencies: 2539 + chloride "^2.2.1" 2540 + 2541 + process-nextick-args@~1.0.6: 2542 + version "1.0.7" 2543 + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" 2544 + integrity sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw== 2545 + 2546 + process-nextick-args@~2.0.0: 2547 + version "2.0.1" 2548 + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" 2549 + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 2550 + 2551 + process@~0.11.0: 2552 + version "0.11.9" 2553 + resolved "https://registry.npmjs.org/process/-/process-0.11.9.tgz" 2554 + integrity sha512-rBG9LeETmhkfw0lr4dB5y3p5NHQadv2gyr+yPgQ8OebVn9LS4CDL7JW6NCdyeE8lzGkQ+x+lyytd+nC26A1DtQ== 2555 + 2556 + process@~0.5.1: 2557 + version "0.5.2" 2558 + resolved "https://registry.npmjs.org/process/-/process-0.5.2.tgz" 2559 + integrity sha512-oNpcutj+nYX2FjdEW7PGltWhXulAnFlM0My/k48L90hARCOJtvBbQXc/6itV2jDvU5xAAtonP+r6wmQgCcbAUA== 2560 + 2561 + prr@~0.0.0: 2562 + version "0.0.0" 2563 + resolved "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz" 2564 + integrity sha512-LmUECmrW7RVj6mDWKjTXfKug7TFGdiz9P18HMcO4RHL+RW7MCOGNvpj5j47Rnp6ne6r4fZ2VzyUWEpKbg+tsjQ== 2565 + 2566 + prr@~1.0.1: 2567 + version "1.0.1" 2568 + resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" 2569 + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== 2570 + 2571 + public-encrypt@^4.0.0: 2572 + version "4.0.0" 2573 + resolved "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz" 2574 + integrity sha512-jypsKydIz+OGpL8/PLPlYtlOP8Sqx54lQa+46srROOvUj02byeX+7RoZH49emN9OZSFiKohPLDMTzWK4JNR5Zg== 2575 + dependencies: 2576 + bn.js "^4.1.0" 2577 + browserify-rsa "^4.0.0" 2578 + create-hash "^1.1.0" 2579 + parse-asn1 "^5.0.0" 2580 + randombytes "^2.0.1" 2581 + 2582 + pull-box-stream@^1.0.9: 2583 + version "1.0.11" 2584 + resolved "https://registry.npmjs.org/pull-box-stream/-/pull-box-stream-1.0.11.tgz" 2585 + integrity sha512-VGok3ZIsHNbHqh2JOj7cIaDtL4ozNWCGKZl8aCH8oRN4b5GgI0b2Urc+tXDo8czM/qeC/4GDss/YZmz6E9k+hQ== 2586 + dependencies: 2587 + chloride "^2.1.1" 2588 + increment-buffer "~1.0.0" 2589 + pull-reader "^1.2.5" 2590 + pull-stream "^3.2.3" 2591 + pull-through "^1.0.18" 2592 + split-buffer "~1.0.0" 2593 + 2594 + pull-cat@^1.1.10, pull-cat@^1.1.11, pull-cat@^1.1.9, pull-cat@~1.1.5: 2595 + version "1.1.11" 2596 + resolved "https://registry.npmjs.org/pull-cat/-/pull-cat-1.1.11.tgz" 2597 + integrity sha512-i3w+xZ3DCtTVz8S62hBOuNLRHqVDsHMNZmgrZsjPnsxXUgbWtXEee84lo1XswE7W2a3WHyqsNuDJTjVLAQR8xg== 2598 + 2599 + pull-defer@^0.2.2: 2600 + version "0.2.2" 2601 + resolved "https://registry.npmjs.org/pull-defer/-/pull-defer-0.2.2.tgz" 2602 + integrity sha512-NbaYHXu0dWKimEb8LdZmTJdte3tuIVWcoSf10v+OcyFx3Dh274xSzvZJYwD+IGRNfX9XEjyKczzEq76wQNV7Vw== 2603 + 2604 + pull-file@^0.5.0: 2605 + version "0.5.0" 2606 + resolved "https://registry.npmjs.org/pull-file/-/pull-file-0.5.0.tgz" 2607 + integrity sha512-4s/IfBLebH/eWUlhp3F3M29mk+B1cryp3W99t/k9J/c033f+HyLLVB2EAMGoN02j8ff7ObkLF1tMaHok3nGS6Q== 2608 + dependencies: 2609 + pull-utf8-decoder "^1.0.2" 2610 + 2611 + pull-flatmap@0.0.1: 2612 + version "0.0.1" 2613 + resolved "https://registry.npmjs.org/pull-flatmap/-/pull-flatmap-0.0.1.tgz" 2614 + integrity sha512-9BgwZPZ6J22kPf9ExoVI3m2yMHdCK8uPf58p6L63t36IgH7NrCX+p3QV8cQ4JmYjwvXDZzimVuJ7IW7iLxm7cA== 2615 + 2616 + pull-goodbye@~0.0.1: 2617 + version "0.0.1" 2618 + resolved "https://registry.npmjs.org/pull-goodbye/-/pull-goodbye-0.0.1.tgz" 2619 + integrity sha512-np8g0M5/vP6eUX+JNam/k8VVZgZXYUwhXJoptJYLQAwa2rmlCsdITq5ZkMYhootjf2K2uA2jeEoPR2qsB0BkCw== 2620 + 2621 + pull-handshake@^1.1.1: 2622 + version "1.1.4" 2623 + resolved "https://registry.npmjs.org/pull-handshake/-/pull-handshake-1.1.4.tgz" 2624 + integrity sha512-+dT8auWatbSNt1o43GKygECvOM2znXdyWwhEQaxztJSvxrNtEqo/wgZttknLfyxxbkbS6qUten6LsXTOwYj0yg== 2625 + dependencies: 2626 + pull-cat "^1.1.9" 2627 + pull-pair "~1.1.0" 2628 + pull-pushable "^2.0.0" 2629 + pull-reader "^1.2.3" 2630 + 2631 + pull-level@^2.0.2, pull-level@^2.0.3: 2632 + version "2.0.3" 2633 + resolved "https://registry.npmjs.org/pull-level/-/pull-level-2.0.3.tgz" 2634 + integrity sha512-UpmLNqNirc+1LiS7htBweOcqpciqYLT0c/dJYue7IR0wHOr3s8jwqWhdSQa23TcN2hcqbxaYg9TWqe/sGgIqJA== 2635 + dependencies: 2636 + level-post "~1.0.3" 2637 + pull-cat "^1.1.9" 2638 + pull-live "^1.0.1" 2639 + pull-pushable "^2.0.0" 2640 + pull-stream "^3.4.0" 2641 + pull-window "^2.1.4" 2642 + stream-to-pull-stream "^1.7.1" 2643 + 2644 + pull-live@^1.0.1: 2645 + version "1.0.1" 2646 + resolved "https://registry.npmjs.org/pull-live/-/pull-live-1.0.1.tgz" 2647 + integrity sha512-tkNz1QT5gId8aPhV5+dmwoIiA1nmfDOzJDlOOUpU5DNusj6neNd3EePybJ5+sITr2FwyCs/FVpx74YMCfc8YeA== 2648 + dependencies: 2649 + pull-cat "^1.1.9" 2650 + pull-stream "^3.4.0" 2651 + 2652 + pull-many@^1.0.7: 2653 + version "1.0.9" 2654 + resolved "https://registry.npmjs.org/pull-many/-/pull-many-1.0.9.tgz" 2655 + integrity sha512-+jUydDVlj/HsvtDqxWMSsiRq3B0HVo7RhBV4C0p2nZRS3mFTUEu9SPEBN+B5PMaW8KTnblYhTIaKg7oXgGnj4Q== 2656 + dependencies: 2657 + pull-stream "^3.4.5" 2658 + 2659 + pull-next@^0.0.1: 2660 + version "0.0.1" 2661 + resolved "https://registry.npmjs.org/pull-next/-/pull-next-0.0.1.tgz" 2662 + integrity sha512-vhJtt8LzrZKtNzc3h/JQ8ReC76U+dLAAZN2n5fyJB8GlVYy9c1QxpKUpMvvCUtJ4TuO5GBLQgRU6HqBi0sHfNA== 2663 + 2664 + pull-pair@~1.1.0: 2665 + version "1.1.0" 2666 + resolved "https://registry.npmjs.org/pull-pair/-/pull-pair-1.1.0.tgz" 2667 + integrity sha512-7VEFLxWnj2AKaN3AvtyaM508d1+56/ulSjDLu4j6kcd9DnEM6LfG8b1R9gCLqzIjJo5stFrWynVc6e451OW4LQ== 2668 + 2669 + pull-paramap@^1.1.3, pull-paramap@^1.1.6, pull-paramap@^1.2.1: 2670 + version "1.2.2" 2671 + resolved "https://registry.npmjs.org/pull-paramap/-/pull-paramap-1.2.2.tgz" 2672 + integrity sha512-0ALwLcASif3KmKCXO4liySCKsTfC/mGYhRFch+xLvfJJrYOIfXPthrykDUZpeZtbjEXglPySzfUmYcnBqzTj5w== 2673 + dependencies: 2674 + looper "^4.0.0" 2675 + 2676 + pull-pause@0.0.0: 2677 + version "0.0.0" 2678 + resolved "https://registry.npmjs.org/pull-pause/-/pull-pause-0.0.0.tgz" 2679 + integrity sha512-bbnrVNBeQUO5Vj1ejvl/XHyNAbR3qyZHmOYeTGxCyt1+g7ZM33YeMO9OeebUMKiAstZB/Rc3qrxAMB8mETQ01Q== 2680 + 2681 + pull-pushable@^2.0.0: 2682 + version "2.0.1" 2683 + resolved "https://registry.npmjs.org/pull-pushable/-/pull-pushable-2.0.1.tgz" 2684 + integrity sha512-hx9Dqgr2eQ6X/3n8EX7kBM9PiunMqlNCEgfxZtZMCKA+MKlWCWdVu7l4323+M4FMEYJfnzvkFYDnBN0CISGkZw== 2685 + 2686 + pull-reader@^1.2.3, pull-reader@^1.2.4, pull-reader@^1.2.5: 2687 + version "1.2.8" 2688 + resolved "https://registry.npmjs.org/pull-reader/-/pull-reader-1.2.8.tgz" 2689 + integrity sha512-lOZqGGlAB4uNl6wWkRkt/HwM3EigPqHnJ+u1JRIx/8cXkeJxT+nNEnLdDFfYtK28YEhXW7e7PCoO8VsrQyqDZw== 2690 + 2691 + pull-reconnect@^0.0.3: 2692 + version "0.0.3" 2693 + resolved "https://registry.npmjs.org/pull-reconnect/-/pull-reconnect-0.0.3.tgz" 2694 + integrity sha512-OrkKw8GzNmwEaHgXR62vEscIoWRAWgdMDwyUk4SVwEsf7gyBkoW1XgU1mQPJ+4vqwlxih4qAj1P7Weg26ox/Ng== 2695 + dependencies: 2696 + pull-defer "^0.2.2" 2697 + 2698 + pull-scroll@^0.2.0: 2699 + version "0.2.2" 2700 + resolved "https://registry.npmjs.org/pull-scroll/-/pull-scroll-0.2.2.tgz" 2701 + integrity sha512-vlOBzb9DFERgVmmEpiP0E9zYI0ruB/Ke7k4+T5xTVfBbCeLF/ruFwR9PAch+LUfhWbYoZSH8PTS1AzJUKNkORw== 2702 + dependencies: 2703 + hyperscript "^1.4.7" 2704 + is-visible "^2.0.1" 2705 + observable "^2.1.4" 2706 + pull-pause "0.0.0" 2707 + pull-stream "^3.0.1" 2708 + request-animation-loop "^0.1.0" 2709 + 2710 + pull-sink-through@0.0.0: 2711 + version "0.0.0" 2712 + resolved "https://registry.npmjs.org/pull-sink-through/-/pull-sink-through-0.0.0.tgz" 2713 + integrity sha512-XjpF/3+WRsWfw+XhPgj3I/6WO15VYOKLsXAtWt1sRKOqA6N7bnarut5zuE2GcxbAzspaQxKmMcbUYZ8QorPxcQ== 2714 + 2715 + pull-stream@^3.0.1, pull-stream@^3.1.0, pull-stream@^3.2.3, pull-stream@^3.4.0, pull-stream@^3.4.2, pull-stream@^3.4.3, pull-stream@^3.4.5, pull-stream@^3.5.0: 2716 + version "3.7.0" 2717 + resolved "https://registry.npmjs.org/pull-stream/-/pull-stream-3.7.0.tgz" 2718 + integrity sha512-Eco+/R004UaCK2qEDE8vGklcTG2OeZSVm1kTUQNrykEjDwcFXDZhygFDsW49DbXyJMEhHeRL3z5cRVqPAhXlIw== 2719 + 2720 + pull-through@^1.0.17, pull-through@^1.0.18: 2721 + version "1.0.18" 2722 + resolved "https://registry.npmjs.org/pull-through/-/pull-through-1.0.18.tgz" 2723 + integrity sha512-t8BBRdKstI/JoWS3FAXRnBvo1ahoLcKo8nm8ZUzr4OUgIf47RodD6HjnPIpw/d6HQZaMu+TotLAYCNwLTnvcNw== 2724 + dependencies: 2725 + looper "~3.0.0" 2726 + 2727 + pull-utf8-decoder@^1.0.2: 2728 + version "1.0.2" 2729 + resolved "https://registry.npmjs.org/pull-utf8-decoder/-/pull-utf8-decoder-1.0.2.tgz" 2730 + integrity sha512-hpGheDlDMMEOkiBwXpiUqaFVR0SlGb23vZyJuHe1s8CWGJVcDEzhy9HHUEIuPjTEajYb90ikKsDmt6lkmTtk5g== 2731 + 2732 + pull-window@^2.1.4: 2733 + version "2.1.4" 2734 + resolved "https://registry.npmjs.org/pull-window/-/pull-window-2.1.4.tgz" 2735 + integrity sha512-cbDzN76BMlcGG46OImrgpkMf/VkCnupj8JhsrpBw3aWBM9ye345aYnqitmZCgauBkc0HbbRRn9hCnsa3k2FNUg== 2736 + dependencies: 2737 + looper "^2.0.0" 2738 + 2739 + pull-write@^1.0.2, pull-write@^1.1.1: 2740 + version "1.1.4" 2741 + resolved "https://registry.npmjs.org/pull-write/-/pull-write-1.1.4.tgz" 2742 + integrity sha512-EkkwRg2EDfPQI1mzUxtSdx5kJAKpbSSoAwwP4+K3ENWUmWqehDQoSx/bM5VeYkl3Hrfkr3nsLyLL2TbfVO9HGw== 2743 + dependencies: 2744 + looper "^4.0.0" 2745 + pull-cat "^1.1.11" 2746 + pull-stream "^3.4.5" 2747 + 2748 + pull-ws@^3.2.2: 2749 + version "3.2.8" 2750 + resolved "https://registry.npmjs.org/pull-ws/-/pull-ws-3.2.8.tgz" 2751 + integrity sha512-DRvK+UDkoPEnAcsP1C3B7mbx3JgDk7NQrngxWLjunSZgoW6AaMApxLYq10eyrBRGVF4WC0spvOBc7BSF4ly9yg== 2752 + dependencies: 2753 + relative-url "^1.0.2" 2754 + ws "^1.1.0" 2755 + 2756 + pump@^1.0.0: 2757 + version "1.0.1" 2758 + resolved "https://registry.npmjs.org/pump/-/pump-1.0.1.tgz" 2759 + integrity sha512-AQkT8yuCm6LmumsJ/Ery8afinLeXPvfdya3ODy8rsyYqvKRnHvDaKyAzrIX5V3VV+dOB+yQcjWUbEjWxg4l0WQ== 2760 + dependencies: 2761 + end-of-stream "^1.1.0" 2762 + once "^1.3.1" 2763 + 2764 + pump@^2.0.1: 2765 + version "2.0.1" 2766 + resolved "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz" 2767 + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== 2768 + dependencies: 2769 + end-of-stream "^1.1.0" 2770 + once "^1.3.1" 2771 + 2772 + punycode@^1.3.2: 2773 + version "1.4.1" 2774 + resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" 2775 + integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== 2776 + 2777 + punycode@1.3.2: 2778 + version "1.3.2" 2779 + resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" 2780 + integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== 2781 + 2782 + pyconf@^1.1.2: 2783 + version "1.1.2" 2784 + resolved "https://registry.npmjs.org/pyconf/-/pyconf-1.1.2.tgz" 2785 + integrity sha512-axoR6k7p8dKYi6EjWYymuA1Xop/2fyMK0nrFwO9WVnGPGmdUeHHP3D+H6/QRNkhn0huRkEJqUcK9+K+Z2JToAg== 2786 + dependencies: 2787 + safe-replace "^1.0.2" 2788 + 2789 + qs@~6.2.0: 2790 + version "6.2.1" 2791 + resolved "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz" 2792 + integrity sha512-8yYCrxot1tgWocouWKNcewB8VdWuFe1Ab4GU38bg1gGNutR9bMMHaJgxDS5BGRVSLnyRrFhfJ8f04Er/kRmbLg== 2793 + 2794 + querystring-es3@~0.2.0: 2795 + version "0.2.1" 2796 + resolved "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" 2797 + integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== 2798 + 2799 + querystring@0.2.0: 2800 + version "0.2.0" 2801 + resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" 2802 + integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== 2803 + 2804 + railroad-diagrams@^1.0.0: 2805 + version "1.0.0" 2806 + resolved "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz" 2807 + integrity sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A== 2808 + 2809 + randexp@0.4.6: 2810 + version "0.4.6" 2811 + resolved "https://registry.npmjs.org/randexp/-/randexp-0.4.6.tgz" 2812 + integrity sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ== 2813 + dependencies: 2814 + discontinuous-range "1.0.0" 2815 + ret "~0.1.10" 2816 + 2817 + randombytes@^2.0.0, randombytes@^2.0.1: 2818 + version "2.0.3" 2819 + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz" 2820 + integrity sha512-lDVjxQQFoCG1jcrP06LNo2lbWp4QTShEXnhActFBwYuHprllQV6VUpwreApsYqCgD+N1mHoqJ/BI/4eV4R2GYg== 2821 + 2822 + rc@^1.0.3, rc@^1.1.6: 2823 + version "1.1.6" 2824 + resolved "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz" 2825 + integrity sha512-kKP2v/do9XlmKORXSHhVRnrsS0LVUhwfFhs/7fsLxQDYxuR+LA46Zivb3XBgomwRUwmf5W6QDqyQxQIhE850eA== 2826 + dependencies: 2827 + deep-extend "~0.4.0" 2828 + ini "~1.3.0" 2829 + minimist "^1.2.0" 2830 + strip-json-comments "~1.0.4" 2831 + 2832 + read-only-stream@^2.0.0: 2833 + version "2.0.0" 2834 + resolved "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz" 2835 + integrity sha512-3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w== 2836 + dependencies: 2837 + readable-stream "^2.0.2" 2838 + 2839 + readable-stream@^1.0.33: 2840 + version "1.1.14" 2841 + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz" 2842 + integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== 2843 + dependencies: 2844 + core-util-is "~1.0.0" 2845 + inherits "~2.0.1" 2846 + isarray "0.0.1" 2847 + string_decoder "~0.10.x" 2848 + 2849 + readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2, readable-stream@^2.1.0: 2850 + version "2.1.5" 2851 + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz" 2852 + integrity sha512-NkXT2AER7VKXeXtJNSaWLpWIhmtSE3K2PguaLEeWr4JILghcIKqoLt1A3wHrnpDC5+ekf8gfk1GKWkFXe4odMw== 2853 + dependencies: 2854 + buffer-shims "^1.0.0" 2855 + core-util-is "~1.0.0" 2856 + inherits "~2.0.1" 2857 + isarray "~1.0.0" 2858 + process-nextick-args "~1.0.6" 2859 + string_decoder "~0.10.x" 2860 + util-deprecate "~1.0.1" 2861 + 2862 + readable-stream@^2.2.2: 2863 + version "2.3.8" 2864 + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" 2865 + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== 2866 + dependencies: 2867 + core-util-is "~1.0.0" 2868 + inherits "~2.0.3" 2869 + isarray "~1.0.0" 2870 + process-nextick-args "~2.0.0" 2871 + safe-buffer "~5.1.1" 2872 + string_decoder "~1.1.1" 2873 + util-deprecate "~1.0.1" 2874 + 2875 + readable-stream@^3.6.0: 2876 + version "3.6.2" 2877 + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" 2878 + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== 2879 + dependencies: 2880 + inherits "^2.0.3" 2881 + string_decoder "^1.1.1" 2882 + util-deprecate "^1.0.1" 2883 + 2884 + "readable-stream@>=1.0.33-1 <1.1.0-0": 2885 + version "1.0.34" 2886 + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" 2887 + integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== 2888 + dependencies: 2889 + core-util-is "~1.0.0" 2890 + inherits "~2.0.1" 2891 + isarray "0.0.1" 2892 + string_decoder "~0.10.x" 2893 + 2894 + readable-stream@~1.0.17: 2895 + version "1.0.34" 2896 + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" 2897 + integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== 2898 + dependencies: 2899 + core-util-is "~1.0.0" 2900 + inherits "~2.0.1" 2901 + isarray "0.0.1" 2902 + string_decoder "~0.10.x" 2903 + 2904 + readable-stream@~1.1.9: 2905 + version "1.1.14" 2906 + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz" 2907 + integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== 2908 + dependencies: 2909 + core-util-is "~1.0.0" 2910 + inherits "~2.0.1" 2911 + isarray "0.0.1" 2912 + string_decoder "~0.10.x" 2913 + 2914 + readable-stream@~2.0.0: 2915 + version "2.0.6" 2916 + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz" 2917 + integrity sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw== 2918 + dependencies: 2919 + core-util-is "~1.0.0" 2920 + inherits "~2.0.1" 2921 + isarray "~1.0.0" 2922 + process-nextick-args "~1.0.6" 2923 + string_decoder "~0.10.x" 2924 + util-deprecate "~1.0.1" 2925 + 2926 + readable-stream@~2.0.5: 2927 + version "2.0.6" 2928 + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz" 2929 + integrity sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw== 2930 + dependencies: 2931 + core-util-is "~1.0.0" 2932 + inherits "~2.0.1" 2933 + isarray "~1.0.0" 2934 + process-nextick-args "~1.0.6" 2935 + string_decoder "~0.10.x" 2936 + util-deprecate "~1.0.1" 2937 + 2938 + relative-url@^1.0.2: 2939 + version "1.0.2" 2940 + resolved "https://registry.npmjs.org/relative-url/-/relative-url-1.0.2.tgz" 2941 + integrity sha512-jI1AmBVFFMXwQ3I6tIYVmVOjy8f+ogHbqkeb8/LL9tszEQiTV8I0l8XT4oEomUOoxfm698f92gYlNKeA/9LJVQ== 2942 + 2943 + request-animation-loop@^0.1.0: 2944 + version "0.1.0" 2945 + resolved "https://registry.npmjs.org/request-animation-loop/-/request-animation-loop-0.1.0.tgz" 2946 + integrity sha512-r8aDYOFn3l8AfGbzoKH7d9HIzpr1TVFVCX4wuuYem5WTOtC/zISedBWXP6fdxUjdvEJS+okn0ezq7uJvNmN2yg== 2947 + 2948 + request@^2.55.0, request@^2.67.0, request@2: 2949 + version "2.75.0" 2950 + resolved "https://registry.npmjs.org/request/-/request-2.75.0.tgz" 2951 + integrity sha512-uNXre8CefDRFBhfB1bL0CkKBD+5E1xmx69KMjl7p+bBc0vesXLQMS+iwsI2pKRlYZOOtLzkeBfz7jItKA3XlKQ== 2952 + dependencies: 2953 + aws-sign2 "~0.6.0" 2954 + aws4 "^1.2.1" 2955 + bl "~1.1.2" 2956 + caseless "~0.11.0" 2957 + combined-stream "~1.0.5" 2958 + extend "~3.0.0" 2959 + forever-agent "~0.6.1" 2960 + form-data "~2.0.0" 2961 + har-validator "~2.0.6" 2962 + hawk "~3.1.3" 2963 + http-signature "~1.1.0" 2964 + is-typedarray "~1.0.0" 2965 + isstream "~0.1.2" 2966 + json-stringify-safe "~5.0.1" 2967 + mime-types "~2.1.7" 2968 + node-uuid "~1.4.7" 2969 + oauth-sign "~0.8.1" 2970 + qs "~6.2.0" 2971 + stringstream "~0.0.4" 2972 + tough-cookie "~2.3.0" 2973 + tunnel-agent "~0.4.1" 2974 + 2975 + resolve@^1.1.3, resolve@1.1.7: 2976 + version "1.1.7" 2977 + resolved "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz" 2978 + integrity sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg== 2979 + 2980 + resolve@^1.1.4, resolve@^1.17.0, resolve@^1.4.0: 2981 + version "1.22.11" 2982 + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz" 2983 + integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ== 2984 + dependencies: 2985 + is-core-module "^2.16.1" 2986 + path-parse "^1.0.7" 2987 + supports-preserve-symlinks-flag "^1.0.0" 2988 + 2989 + ret@~0.1.10: 2990 + version "0.1.15" 2991 + resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" 2992 + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== 2993 + 2994 + rimraf@2: 2995 + version "2.5.4" 2996 + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz" 2997 + integrity sha512-Lw7SHMjssciQb/rRz7JyPIy9+bbUshEucPoLRvWqy09vC5zQixl8Uet+Zl+SROBB/JMWHJRdCk1qdxNWHNMvlQ== 2998 + dependencies: 2999 + glob "^7.0.5" 3000 + 3001 + ripemd160@^1.0.0: 3002 + version "1.0.1" 3003 + resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-1.0.1.tgz" 3004 + integrity sha512-J0YlH2ow/i7d5PJX9RC1XnjmZc7cNNYWe89PIlFszvHeiEtxzA1/VYePkjQ7l1SkUejAcHeDo3IVp2WIzstXXQ== 3005 + 3006 + rsa-compat@^1.2.1, rsa-compat@^1.2.3: 3007 + version "1.2.7" 3008 + resolved "https://registry.npmjs.org/rsa-compat/-/rsa-compat-1.2.7.tgz" 3009 + integrity sha512-k9l39pKnoQ257/Vu9mhbGiYvChc4BaiAtjJ/d6btyEi2+k46W94Xh+piof97ypzcD0pVdAnAMOXT6nb+2WxiaA== 3010 + dependencies: 3011 + buffer-v6-polyfill "^1.0.3" 3012 + node-forge "^0.6.41" 3013 + optionalDependencies: 3014 + ursa "^0.9.4" 3015 + 3016 + safe-buffer@^5.0.1, safe-buffer@~5.2.0: 3017 + version "5.2.1" 3018 + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" 3019 + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 3020 + 3021 + safe-buffer@~5.1.0, safe-buffer@~5.1.1: 3022 + version "5.1.2" 3023 + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" 3024 + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 3025 + 3026 + safe-replace@^1.0.2: 3027 + version "1.0.2" 3028 + resolved "https://registry.npmjs.org/safe-replace/-/safe-replace-1.0.2.tgz" 3029 + integrity sha512-MpcY3osIccSpsVtlCswRxt1qaWqcQoUCVtOD/4fap2BoJAE2b5jP32s2K6VTFHQBN03Gb9CGVwn77T0cTcW1nw== 3030 + 3031 + secret-handshake@^1.1.1: 3032 + version "1.1.1" 3033 + resolved "https://registry.npmjs.org/secret-handshake/-/secret-handshake-1.1.1.tgz" 3034 + integrity sha512-24n9/+iIVJ7VfdoY2qO1AfKg/CFEi1tPXV3+hUJLrbT9esH/W7mwvnMmD4Nbou7vOC6c+qIMOuxRlFCiVoa/eQ== 3035 + dependencies: 3036 + chloride "^2.0.1" 3037 + deep-equal "~1.0.0" 3038 + pull-box-stream "^1.0.9" 3039 + pull-handshake "^1.1.1" 3040 + pull-stream "^3.4.5" 3041 + 3042 + semver@^5.4.1, "semver@2.x || 3.x || 4 || 5": 3043 + version "5.7.2" 3044 + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" 3045 + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== 3046 + 3047 + semver@~5.1.0: 3048 + version "5.1.1" 3049 + resolved "https://registry.npmjs.org/semver/-/semver-5.1.1.tgz" 3050 + integrity sha512-bNx9Zdbi1OUN62PbKeG4IgGG8YILX/nkHJ0NQEBwg5FmX8qTJfqhYd3reqkm0DxHCC8nkazb6UjNiBSHCBWVtA== 3051 + 3052 + separator-escape@0.0.0: 3053 + version "0.0.0" 3054 + resolved "https://registry.npmjs.org/separator-escape/-/separator-escape-0.0.0.tgz" 3055 + integrity sha512-u5Na+20Qk6SEr/3MgAaw6JMddE5+nmhaI+a0PZ4AkfEwDc+zH/Qlm4pHwE2kquw2aZ39758YEkJaVOhFYiRzNQ== 3056 + 3057 + set-blocking@~2.0.0: 3058 + version "2.0.0" 3059 + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" 3060 + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== 3061 + 3062 + set-function-length@^1.2.2: 3063 + version "1.2.2" 3064 + resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz" 3065 + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== 3066 + dependencies: 3067 + define-data-property "^1.1.4" 3068 + es-errors "^1.3.0" 3069 + function-bind "^1.1.2" 3070 + get-intrinsic "^1.2.4" 3071 + gopd "^1.0.1" 3072 + has-property-descriptors "^1.0.2" 3073 + 3074 + sha.js@^2.3.6, sha.js@^2.4.4, sha.js@^2.4.5, sha.js@~2.4.4: 3075 + version "2.4.5" 3076 + resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.5.tgz" 3077 + integrity sha512-459AP5kwdIhtMLLE1+h2q5a6E7hyY7Ri88GUIhFsyrQinKkm+7qj1ARHELow7GkFS7oimWmIwhXTSxBsuNuOsw== 3078 + dependencies: 3079 + inherits "^2.0.1" 3080 + 3081 + shasum@^1.0.0: 3082 + version "1.0.2" 3083 + resolved "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz" 3084 + integrity sha512-UTzHm/+AzKfO9RgPgRpDIuMSNie1ubXRaljjlhFMNGYoG7z+rm9AHLPMf70R7887xboDH9Q+5YQbWKObFHEAtw== 3085 + dependencies: 3086 + json-stable-stringify "~0.0.0" 3087 + sha.js "~2.4.4" 3088 + 3089 + shell-quote@^1.4.3, shell-quote@^1.6.1: 3090 + version "1.8.3" 3091 + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz" 3092 + integrity sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw== 3093 + 3094 + signal-exit@^3.0.0: 3095 + version "3.0.1" 3096 + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.1.tgz" 3097 + integrity sha512-jMxoxd0fzr1lrcP3NJqu4d+DG0R41ZvTsnO8HUYmtN0oFzi0WijhuYJfsofAT7NhWcqhJfqa4auDDTTb0I1rYw== 3098 + 3099 + simple-concat@^1.0.0: 3100 + version "1.0.1" 3101 + resolved "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz" 3102 + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== 3103 + 3104 + simple-get@^1.4.2: 3105 + version "1.4.3" 3106 + resolved "https://registry.npmjs.org/simple-get/-/simple-get-1.4.3.tgz" 3107 + integrity sha512-ddVP3P/VdMhY0DFWh5oxKMThsGYjlEJBD/mXuyzfCHOqpaa56XpLDvtv4tzcQ1Z2CWgFGEu5zFwCCxpV1xV0fQ== 3108 + dependencies: 3109 + once "^1.3.1" 3110 + unzip-response "^1.0.0" 3111 + xtend "^4.0.0" 3112 + 3113 + simple-get@^2.7.0: 3114 + version "2.8.2" 3115 + resolved "https://registry.npmjs.org/simple-get/-/simple-get-2.8.2.tgz" 3116 + integrity sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw== 3117 + dependencies: 3118 + decompress-response "^3.3.0" 3119 + once "^1.3.1" 3120 + simple-concat "^1.0.0" 3121 + 3122 + simple-mime@^0.1.0, simple-mime@~0.1.0: 3123 + version "0.1.0" 3124 + resolved "https://registry.npmjs.org/simple-mime/-/simple-mime-0.1.0.tgz" 3125 + integrity sha512-2EoTElzj77w0hV4lW6nWdA+MR+81hviMBhEc/ppUi0+Q311EFCvwKrGS7dcxqvGRKnUdbAyqPJtBQbRYgmtmvQ== 3126 + 3127 + smart-buffer@^1.0.4: 3128 + version "1.0.11" 3129 + resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-1.0.11.tgz" 3130 + integrity sha512-D6zJTJiHCgEX+caCflF8FK6bbCm7rOrw7T5DExcP/9kyCKWySJM4No7IJhzcF6d4oGys8+MSAFrjfaudrI02eg== 3131 + 3132 + sntp@1.x.x: 3133 + version "1.0.9" 3134 + resolved "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" 3135 + integrity sha512-7bgVOAnPj3XjrKY577S+puCKGCRlUrcrEdsMeRXlg9Ghf5df/xNi6sONUa43WrHUd3TjJBF7O04jYoiY0FVa0A== 3136 + dependencies: 3137 + hoek "2.x.x" 3138 + 3139 + socks@1.1.9: 3140 + version "1.1.9" 3141 + resolved "https://registry.npmjs.org/socks/-/socks-1.1.9.tgz" 3142 + integrity sha512-EgVaUkNNlJ/Fi4USs0QV8JzTxOgRcBOszWQPwderdc27LhgF1VWOiB9D1VzLtenGuezlyVe9GhscFlnicFHvsA== 3143 + dependencies: 3144 + ip "^1.1.2" 3145 + smart-buffer "^1.0.4" 3146 + 3147 + sodium-browserify-tweetnacl@^0.2.0: 3148 + version "0.2.1" 3149 + resolved "https://registry.npmjs.org/sodium-browserify-tweetnacl/-/sodium-browserify-tweetnacl-0.2.1.tgz" 3150 + integrity sha512-Zp2I5qebwmT3Lc3GXkluLgLySlMu0t/rRGgzyMbbIy4I2Mh8hAMtvWHqDt1xINS8gZl5ENgQnaQY0kXqvX0pug== 3151 + dependencies: 3152 + chloride-test "^1.1.0" 3153 + ed2curve "^0.1.4" 3154 + sha.js "^2.4.5" 3155 + tweetnacl "^0.14.1" 3156 + tweetnacl-auth "^0.3.0" 3157 + 3158 + sodium-browserify@^1.0.3: 3159 + version "1.2.0" 3160 + resolved "https://registry.npmjs.org/sodium-browserify/-/sodium-browserify-1.2.0.tgz" 3161 + integrity sha512-tblnZTeTr80l+FmPnybHyGWKmPYbrnuVyepI3TSaJYoWaGhjPeEwwCpODVSnhtOK6y+y/yrEsbKY1svQBx9RXQ== 3162 + dependencies: 3163 + libsodium-wrappers "^0.2.9" 3164 + sha.js "^2.4.4" 3165 + tweetnacl "^0.14.1" 3166 + 3167 + sodium-prebuilt@1.0.22: 3168 + version "1.0.22" 3169 + resolved "https://registry.npmjs.org/sodium-prebuilt/-/sodium-prebuilt-1.0.22.tgz" 3170 + integrity sha512-yG+3uIjXjdmOVkhsrnkgIEiwln8km2qUUOQcv9+YzdZYHr2gPw2D/Y2xOdflmFE+wdMbF+FRW+SSieP+jpTvmg== 3171 + dependencies: 3172 + nan "^2.0.9" 3173 + prebuild "^4.1.0" 3174 + 3175 + source-map@~0.5.3: 3176 + version "0.5.6" 3177 + resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" 3178 + integrity sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA== 3179 + 3180 + split-buffer@^1.0.0, split-buffer@~1.0.0: 3181 + version "1.0.0" 3182 + resolved "https://registry.npmjs.org/split-buffer/-/split-buffer-1.0.0.tgz" 3183 + integrity sha512-cbHOF413jAsBL7JLpU1RWX07Xs+dPb25DbeCvwDzSN3+4bNmRPJa2QHpDdtREgGKgIfx6Tzj/jiqyOS3kNLPnQ== 3184 + 3185 + ssb-avatar@^0.2.0: 3186 + version "0.2.0" 3187 + resolved "https://registry.npmjs.org/ssb-avatar/-/ssb-avatar-0.2.0.tgz" 3188 + integrity sha512-rv1SwQDE7OhavLWIbTxvWf2R2Qq3svp7OLT+49OECr8kSrQN1XGQqeI1bVdzFSr0DBwjxHES56+2FLkhk6Qmvw== 3189 + dependencies: 3190 + pull-cat "^1.1.9" 3191 + pull-stream "^3.4.3" 3192 + ssb-msgs "^5.2.0" 3193 + ssb-ref "^2.3.2" 3194 + 3195 + ssb-client@^4.0.3: 3196 + version "4.3.0" 3197 + resolved "https://registry.npmjs.org/ssb-client/-/ssb-client-4.3.0.tgz" 3198 + integrity sha512-nYQYWa2KhzmkVsKqtngoeMY20CQHY/rClfz4RbvtjJUkUJgowoNxOEC7WGp+1EWh/hjrl2+LyAKJMs/OPiuRbg== 3199 + dependencies: 3200 + explain-error "^1.0.1" 3201 + multiserver "^1.7.0" 3202 + muxrpc "^6.3.3" 3203 + ssb-config "^2.0.0" 3204 + ssb-keys "^6.0.0" 3205 + 3206 + ssb-config@^2.0.0, ssb-config@^2.1.1: 3207 + version "2.2.0" 3208 + resolved "https://registry.npmjs.org/ssb-config/-/ssb-config-2.2.0.tgz" 3209 + integrity sha512-+ib7Xfw+6y4mlNNPv79FQhbVXGkzs147lScSjzy6mLXSfdOvQ+FCK1IkfH9rQwYqYBzvzqwpWiaWx0Uvl+vDHg== 3210 + dependencies: 3211 + deep-extend "^0.4.0" 3212 + non-private-ip "^1.2.1" 3213 + os-homedir "^1.0.1" 3214 + rc "^1.1.6" 3215 + 3216 + ssb-feed@^2.2.1: 3217 + version "2.2.1" 3218 + resolved "https://registry.npmjs.org/ssb-feed/-/ssb-feed-2.2.1.tgz" 3219 + integrity sha512-1V9KvBU3BHafWy6+090LJdpFg51qKCrvP27GqBje38KO2exIS1TlPq3Bfu17p7ME5jv3s7DRABx5vIhuQcV+XQ== 3220 + dependencies: 3221 + cont "~1.0.3" 3222 + monotonic-timestamp "~0.0.9" 3223 + pull-stream "^3.4.2" 3224 + ssb-keys "^6.0.0" 3225 + ssb-ref "^2.0.0" 3226 + 3227 + ssb-git@^0.4.1: 3228 + version "0.4.1" 3229 + resolved "https://registry.npmjs.org/ssb-git/-/ssb-git-0.4.1.tgz" 3230 + integrity sha512-ynvSboLrJsOn3rW/kxM3IvmdFug5Tp/dj//K2D8tlT9ZxddYEmlOHKtYYafkcTCwy2H8HtnsTtyGie1hiLke3g== 3231 + 3232 + ssb-keys@^6.0.0, ssb-keys@^6.1.0: 3233 + version "6.1.2" 3234 + resolved "https://registry.npmjs.org/ssb-keys/-/ssb-keys-6.1.2.tgz" 3235 + integrity sha512-qOfeRDVcfPZ+SmZjfcOxC1eF8r5V5BNF4SPyGQeX4dq5/9D6t1LdAIesQnd7My8H6OK2uuF848NCqhf0qQHpMw== 3236 + dependencies: 3237 + blake2s "~1.0.0" 3238 + chloride "^2.2.0" 3239 + deep-equal "~0.2.1" 3240 + hmac "~1.0.1" 3241 + mkdirp "~0.5.0" 3242 + private-box "^0.2.1" 3243 + ssb-ref "^2.0.0" 3244 + 3245 + ssb-links@^2.0.0: 3246 + version "2.0.1" 3247 + resolved "https://registry.npmjs.org/ssb-links/-/ssb-links-2.0.1.tgz" 3248 + integrity sha512-Kv6hmrhHQctlz/91Hct9fqheCuoTyagmR7/b73bco27TCaJGwUAenutauCEY+9YHnYkDSTKPT2vcVr7OJLXaVg== 3249 + dependencies: 3250 + flumeview-query "^4.0.0" 3251 + pull-stream "^3.1.0" 3252 + ssb-msgs "^5.2.0" 3253 + streamview-links "^2.0.0" 3254 + 3255 + ssb-markdown@^3.0.0: 3256 + version "3.0.0" 3257 + resolved "https://registry.npmjs.org/ssb-markdown/-/ssb-markdown-3.0.0.tgz" 3258 + integrity sha512-pHtIpsC4Nt30PyyK2fMVNC0w5Cy/jpHfp8xK03k5wyu4Vv4PtGovKK3g6UL2O/+8aw7ue3B+JiLpGDVUKL5suQ== 3259 + dependencies: 3260 + emoji-named-characters "^1.0.2" 3261 + ssb-marked "^0.5.4" 3262 + ssb-msgs "^5.2.0" 3263 + ssb-ref "^2.3.0" 3264 + 3265 + ssb-marked@^0.5.4: 3266 + version "0.5.4" 3267 + resolved "https://registry.npmjs.org/ssb-marked/-/ssb-marked-0.5.4.tgz" 3268 + integrity sha512-0iFQjakjxW7hxlai+GHE7T+xnJUsWA+cpPpr4Y7aEJGZXjgwMp80S8ZR7uRhqV1JG1z33LJRC7jgw23LilSJGA== 3269 + 3270 + ssb-mentions@^0.1.0: 3271 + version "0.1.0" 3272 + resolved "https://registry.npmjs.org/ssb-mentions/-/ssb-mentions-0.1.0.tgz" 3273 + integrity sha512-L51ec1iGKNMz70ulzDB8UCWbIzMo/tge7VorqunOi/KV1XDtiWd/NdTIpcRdxGOR9Srf8T9K9DRYzHPU9sxDug== 3274 + dependencies: 3275 + ssb-marked "^0.5.4" 3276 + ssb-ref "^2.3.0" 3277 + 3278 + ssb-msgs@^5.2.0: 3279 + version "5.2.0" 3280 + resolved "https://registry.npmjs.org/ssb-msgs/-/ssb-msgs-5.2.0.tgz" 3281 + integrity sha512-a5SF3fnXhXhcEIT406QNPftf+9YbPWFYFABNudreB19RrE0N3JsJL7bm/eKWgVd0fXNpARZJF3f5BYYMUv6lFw== 3282 + dependencies: 3283 + ssb-ref "^2.0.0" 3284 + 3285 + ssb-query@^0.1.1: 3286 + version "0.1.2" 3287 + resolved "https://registry.npmjs.org/ssb-query/-/ssb-query-0.1.2.tgz" 3288 + integrity sha512-cv4W/0a4rW/7YlrH7m7fKokORUdx+9DezorYQoIy8IMvFeYIoBpCFj230VsZ9/K0eCnvbE+eMK09NcVuCO2yvw== 3289 + dependencies: 3290 + explain-error "^1.0.1" 3291 + pull-stream "^3.4.2" 3292 + streamview-links "^2.0.0" 3293 + 3294 + ssb-ref@^2.0.0, ssb-ref@^2.3.0, ssb-ref@^2.3.2, ssb-ref@^2.6.2: 3295 + version "2.16.0" 3296 + resolved "https://registry.npmjs.org/ssb-ref/-/ssb-ref-2.16.0.tgz" 3297 + integrity sha512-ylyrfz9NLxwTCbeDDAdLo++O3elhNs6/gUqMhZ22F+gSOIjwXy2X7dpg5Q1YTH7uALOSu307Rpo1UfK9sj7Sjw== 3298 + dependencies: 3299 + ip "^1.1.3" 3300 + is-canonical-base64 "^1.1.1" 3301 + is-valid-domain "~0.0.1" 3302 + multiserver-address "^1.0.1" 3303 + 3304 + ssb-sort@^1.0.0: 3305 + version "1.0.0" 3306 + resolved "https://registry.npmjs.org/ssb-sort/-/ssb-sort-1.0.0.tgz" 3307 + integrity sha512-qahpQ/wnxoaSlK0QnQEwilANmuD9MhzTH9FNhwzhdyqs0ZXp2r0eOXPiwY7B/U5RJAQ0G8TBLUTrrhwWfh0T5w== 3308 + dependencies: 3309 + ssb-ref "^2.3.0" 3310 + 3311 + ssb-sort@0.0.0: 3312 + version "0.0.0" 3313 + resolved "https://registry.npmjs.org/ssb-sort/-/ssb-sort-0.0.0.tgz" 3314 + integrity sha512-wd6WoIaQ+6UHXa5YYpTJtnMXIHgyQa1N9Pi43/DAgaaUX2w4RzmJIgW4x5EnQAH+8XRLB4XjNyRLqwsa/nKohA== 3315 + dependencies: 3316 + ssb-ref "^2.3.0" 3317 + 3318 + ssb-ws@^0.6.2: 3319 + version "0.6.2" 3320 + resolved "https://registry.npmjs.org/ssb-ws/-/ssb-ws-0.6.2.tgz" 3321 + integrity sha512-RRtXWmGrnNFfZlE7pl3yAashMGmGI51NOOpIO00kjQwNIzoryUEIZRrtc5l9rqXRh5nlNIrcNLP/PEOAEpEPWQ== 3322 + dependencies: 3323 + multiblob-http "^0.2.0" 3324 + multiserver "^1.2.0" 3325 + muxrpc "^6.3.3" 3326 + pull-stream "^3.4.3" 3327 + ssb-ref "^2.3.0" 3328 + ssb-sort "0.0.0" 3329 + stack "^0.1.0" 3330 + web-bootloader "^0.1.0" 3331 + optionalDependencies: 3332 + letsencrypt-express "^1.1.5" 3333 + 3334 + sshpk@^1.7.0: 3335 + version "1.10.1" 3336 + resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.10.1.tgz" 3337 + integrity sha512-ywhcxCSLw4u+wfJM4XDCtuyXmGEiJ3kHZcnaiehYztqaRf3hj9RE8yamh77ToBD59GxfrQZawktGV+vm8cFdPw== 3338 + dependencies: 3339 + asn1 "~0.2.3" 3340 + assert-plus "^1.0.0" 3341 + dashdash "^1.12.0" 3342 + getpass "^0.1.1" 3343 + optionalDependencies: 3344 + bcrypt-pbkdf "^1.0.0" 3345 + ecc-jsbn "~0.1.1" 3346 + jodid25519 "^1.0.0" 3347 + jsbn "~0.1.0" 3348 + tweetnacl "~0.14.0" 3349 + 3350 + stack@^0.1.0: 3351 + version "0.1.0" 3352 + resolved "https://registry.npmjs.org/stack/-/stack-0.1.0.tgz" 3353 + integrity sha512-MCDcCsqemsYpCg/eeR48p6RqA18We4AaXcYmiZyppx27AA58oleDMZpG+ewRA61vG5iUeAGPHinkFQg/REZMfA== 3354 + 3355 + stream-browserify@^2.0.0: 3356 + version "2.0.1" 3357 + resolved "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz" 3358 + integrity sha512-nmQnY9D9TlnfQIkYJCCWxvCcQODilFRZIw14gCMYQVXOiY4E1Ze1VMxB+6y3qdXHpTordULo2qWloHmNcNAQYw== 3359 + dependencies: 3360 + inherits "~2.0.1" 3361 + readable-stream "^2.0.2" 3362 + 3363 + stream-combiner2@^1.1.1: 3364 + version "1.1.1" 3365 + resolved "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz" 3366 + integrity sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw== 3367 + dependencies: 3368 + duplexer2 "~0.1.0" 3369 + readable-stream "^2.0.2" 3370 + 3371 + stream-http@^2.0.0: 3372 + version "2.4.0" 3373 + resolved "https://registry.npmjs.org/stream-http/-/stream-http-2.4.0.tgz" 3374 + integrity sha512-W+HxMdxUvvJVzlqe4sa2bwymVmsYyCcF95pms8ilZXDjXvt8rEadIgMFdjvIgdkWqxmcqAKlv1Wyf6bxHj4jPQ== 3375 + dependencies: 3376 + builtin-status-codes "^2.0.0" 3377 + inherits "^2.0.1" 3378 + readable-stream "^2.1.0" 3379 + to-arraybuffer "^1.0.0" 3380 + xtend "^4.0.0" 3381 + 3382 + stream-http@^3.0.0: 3383 + version "3.2.0" 3384 + resolved "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz" 3385 + integrity sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A== 3386 + dependencies: 3387 + builtin-status-codes "^3.0.0" 3388 + inherits "^2.0.4" 3389 + readable-stream "^3.6.0" 3390 + xtend "^4.0.2" 3391 + 3392 + stream-splicer@^2.0.0: 3393 + version "2.0.0" 3394 + resolved "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz" 3395 + integrity sha512-lrpyV50Z1AGT5PC4KMKaZX0+4H9V/Dh/6q8NpGqHbNeuraq8etHPRYlUvca2yRemGVkUBBcdIuyhqKDdgkKzkQ== 3396 + dependencies: 3397 + inherits "^2.0.1" 3398 + readable-stream "^2.0.2" 3399 + 3400 + stream-to-pull-stream@^1.7.0, stream-to-pull-stream@^1.7.1, stream-to-pull-stream@^1.7.2: 3401 + version "1.7.2" 3402 + resolved "https://registry.npmjs.org/stream-to-pull-stream/-/stream-to-pull-stream-1.7.2.tgz" 3403 + integrity sha512-KSa5iA3hxM33WYgeKY5CITZdArSw+GFjbTRb/NjSMLz+4o1ijkiub5A8HeD11cbcHMPnkBUNWDJaRmINSWgk8A== 3404 + dependencies: 3405 + looper "^3.0.0" 3406 + pull-stream "^3.2.3" 3407 + 3408 + streamview-links@^2.0.0: 3409 + version "2.1.1" 3410 + resolved "https://registry.npmjs.org/streamview-links/-/streamview-links-2.1.1.tgz" 3411 + integrity sha512-tmv/Afk/7X20B5LDULZ4gNNZuMR9tZPPSgNoZhLAlpZ9rCg/b0Gs0KFS9KweIJ96U+EU54SiOWjetzQynTPw/g== 3412 + dependencies: 3413 + bytewise "^1.1.0" 3414 + explain-error "^1.0.1" 3415 + level "^1.4.0" 3416 + ltgt "^2.1.2" 3417 + map-filter-reduce "^3.0.2" 3418 + pull-level "^2.0.2" 3419 + pull-live "^1.0.1" 3420 + pull-paramap "^1.1.3" 3421 + pull-sink-through "0.0.0" 3422 + pull-stream "^3.4.0" 3423 + pull-write "^1.0.2" 3424 + 3425 + string_decoder@^1.1.1: 3426 + version "1.3.0" 3427 + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" 3428 + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 3429 + dependencies: 3430 + safe-buffer "~5.2.0" 3431 + 3432 + string_decoder@~0.10.0, string_decoder@~0.10.x: 3433 + version "0.10.31" 3434 + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" 3435 + integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== 3436 + 3437 + string_decoder@~1.1.1: 3438 + version "1.1.1" 3439 + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" 3440 + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 3441 + dependencies: 3442 + safe-buffer "~5.1.0" 3443 + 3444 + string-width@^1.0.1: 3445 + version "1.0.2" 3446 + resolved "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" 3447 + integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== 3448 + dependencies: 3449 + code-point-at "^1.0.0" 3450 + is-fullwidth-code-point "^1.0.0" 3451 + strip-ansi "^3.0.0" 3452 + 3453 + stringstream@~0.0.4: 3454 + version "0.0.5" 3455 + resolved "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz" 3456 + integrity sha512-QUQ1kThMjLRt4jA8lsn9lyIkE9bKafE7LDOL/nBBUY9Tfv2i3x1NAsVHG0uMCusFOWeeI6COhY/F20+avxRWSw== 3457 + 3458 + strip-ansi@^3.0.0, strip-ansi@^3.0.1: 3459 + version "3.0.1" 3460 + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" 3461 + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== 3462 + dependencies: 3463 + ansi-regex "^2.0.0" 3464 + 3465 + strip-json-comments@~1.0.4: 3466 + version "1.0.4" 3467 + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz" 3468 + integrity sha512-AOPG8EBc5wAikaG1/7uFCNFJwnKOuQwFTpYBdTW6OvWHeZBQBrAA/amefHGrEiOnCPcLFZK6FUPtWVKpQVIRgg== 3469 + 3470 + style-properties@^1.3.1: 3471 + version "1.3.1" 3472 + resolved "https://registry.npmjs.org/style-properties/-/style-properties-1.3.1.tgz" 3473 + integrity sha512-n+uc4rCIzXUZ6197c98Lq63f8G0SpRj9kzIZT4QNQ0PYUR+D0kdXyZiBUyjE1KO2RtAc0ETRDPUxTImRFjvHig== 3474 + 3475 + subarg@^1.0.0: 3476 + version "1.0.0" 3477 + resolved "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz" 3478 + integrity sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg== 3479 + dependencies: 3480 + minimist "^1.1.0" 3481 + 3482 + suggest-box@^2.2.1: 3483 + version "2.2.2" 3484 + resolved "https://registry.npmjs.org/suggest-box/-/suggest-box-2.2.2.tgz" 3485 + integrity sha512-c9oZ8KJHY5IKz4T2JkQWkwggjIptjn9Io4AMvjneNxu0kIdqeSL5lS+NhBKrEbrES/lNDex5rwZLZPSGELmT1g== 3486 + dependencies: 3487 + hyperscript "~1.4.2" 3488 + textarea-caret-position "^0.1.1" 3489 + 3490 + supports-color@^2.0.0: 3491 + version "2.0.0" 3492 + resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" 3493 + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== 3494 + 3495 + supports-preserve-symlinks-flag@^1.0.0: 3496 + version "1.0.0" 3497 + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" 3498 + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 3499 + 3500 + syntax-error@^1.1.1: 3501 + version "1.1.6" 3502 + resolved "https://registry.npmjs.org/syntax-error/-/syntax-error-1.1.6.tgz" 3503 + integrity sha512-PR60b6QEsF95amTCi4TwqwH+FRTLjg90DOHiHBgvtauFafhnc8sDT4fXnNEXAbke1cCqrrJGDbFRlwSmo50mOQ== 3504 + dependencies: 3505 + acorn "^2.7.0" 3506 + 3507 + tar-fs@^1.13.0, tar-fs@^1.7.0: 3508 + version "1.13.2" 3509 + resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-1.13.2.tgz" 3510 + integrity sha512-2Aa6KmxE0o1aqYC/kfIEWsaAYkZUlm8S9kcwD3y5gG4v+mw8XtrhbgRwFPDYZSg+nvk1QsBUmKKOuNzhNSyb3w== 3511 + dependencies: 3512 + mkdirp "^0.5.0" 3513 + pump "^1.0.0" 3514 + tar-stream "^1.1.2" 3515 + 3516 + tar-stream@^1.1.2, tar-stream@^1.2.1: 3517 + version "1.5.2" 3518 + resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.2.tgz" 3519 + integrity sha512-X2iZpARyDjlkj6Tz3nlI1lY4a4k+xEatPgQg7O2WiUMTXIrjVp8R86K3AdWfHp+Q3jsaLE2FLlHES+PA5zwAhA== 3520 + dependencies: 3521 + bl "^1.0.0" 3522 + end-of-stream "^1.0.0" 3523 + readable-stream "^2.0.0" 3524 + xtend "^4.0.0" 3525 + 3526 + tar@^2.0.0: 3527 + version "2.2.1" 3528 + resolved "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz" 3529 + integrity sha512-2Tw2uNtZqQTSHTIMbKHKFeAPmKcljrNKqKiIN7pu3V/CxYqRgS8DLXvMkFRrbtXlg6mTOQcuTX7DMj18Xi0dtg== 3530 + dependencies: 3531 + block-stream "*" 3532 + fstream "^1.0.2" 3533 + inherits "2" 3534 + 3535 + text-node-searcher@^1.1.0: 3536 + version "1.1.1" 3537 + resolved "https://registry.npmjs.org/text-node-searcher/-/text-node-searcher-1.1.1.tgz" 3538 + integrity sha512-kQdQ9INlnxygZY9OPXE9LpSF4n2x2Cz7RXKGMiK7dIy717xYE3DLu25zOzK3o7ZKhy3f8yfcLsVzq//sc2aVvQ== 3539 + 3540 + textarea-caret-position@^0.1.1: 3541 + version "0.1.1" 3542 + resolved "https://registry.npmjs.org/textarea-caret-position/-/textarea-caret-position-0.1.1.tgz" 3543 + integrity sha512-Dns++qU6E9eh/IweI8fiFrkARbKUfuUoSSbf9mwJaSziJ5DBGkM2SJ0tKjLotqhj58vfh0bBQDPPmi1AgDS+lg== 3544 + 3545 + "through@>=2.2.7 <3": 3546 + version "2.3.8" 3547 + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" 3548 + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== 3549 + 3550 + through2@^0.4.1: 3551 + version "0.4.2" 3552 + resolved "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz" 3553 + integrity sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ== 3554 + dependencies: 3555 + readable-stream "~1.0.17" 3556 + xtend "~2.1.1" 3557 + 3558 + through2@^2.0.0: 3559 + version "2.0.1" 3560 + resolved "https://registry.npmjs.org/through2/-/through2-2.0.1.tgz" 3561 + integrity sha512-/vp02SIbpmVHapNMjox4hDBzykPdAOmH5y3INcKaxGfpEPSCMqzdWXyGfqPYyxoBLo1JpxBrlh3Z9esv0vWUYw== 3562 + dependencies: 3563 + readable-stream "~2.0.0" 3564 + xtend "~4.0.0" 3565 + 3566 + through2@~0.6.3: 3567 + version "0.6.5" 3568 + resolved "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz" 3569 + integrity sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg== 3570 + dependencies: 3571 + readable-stream ">=1.0.33-1 <1.1.0-0" 3572 + xtend ">=4.0.0 <4.1.0-0" 3573 + 3574 + timers-browserify@^1.0.1: 3575 + version "1.4.2" 3576 + resolved "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz" 3577 + integrity sha512-PIxwAupJZiYU4JmVZYwXp9FKsHMXb5h0ZEFyuXTAn8WLHOlcij+FEcbrvDsom1o5dr1YggEtFbECvGCW2sT53Q== 3578 + dependencies: 3579 + process "~0.11.0" 3580 + 3581 + to-arraybuffer@^1.0.0: 3582 + version "1.0.1" 3583 + resolved "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz" 3584 + integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== 3585 + 3586 + tough-cookie@~2.3.0: 3587 + version "2.3.1" 3588 + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.1.tgz" 3589 + integrity sha512-3C8DIrKkBO8q3BIqcUB6zPuqua6wCso6ddmRmHjbJ5/OfJ6rrw6zTf1DFDsBSZbKNKC1XzfVJRxZrdcxyjEOjA== 3590 + 3591 + tty-browserify@~0.0.0, tty-browserify@0.0.1: 3592 + version "0.0.1" 3593 + resolved "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz" 3594 + integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== 3595 + 3596 + tunnel-agent@^0.6.0: 3597 + version "0.6.0" 3598 + resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" 3599 + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== 3600 + dependencies: 3601 + safe-buffer "^5.0.1" 3602 + 3603 + tunnel-agent@~0.4.1: 3604 + version "0.4.3" 3605 + resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz" 3606 + integrity sha512-e0IoVDWx8SDHc/hwFTqJDQ7CCDTEeGhmcT9jkWJjoGQSpgBz20nAMr80E3Tpk7PatJ1b37DQDgJR3CNSzcMOZQ== 3607 + 3608 + tweetnacl-auth@^0.3.0: 3609 + version "0.3.0" 3610 + resolved "https://registry.npmjs.org/tweetnacl-auth/-/tweetnacl-auth-0.3.0.tgz" 3611 + integrity sha512-yUBiLzJAva46d0zc6HixMid3ELzbdeDNkR87ycu0/MLsv7CIEYw+j2fJ2+7K5gvdmmeHzwluHA6nu5lxBzA3xg== 3612 + dependencies: 3613 + tweetnacl "0.x.x" 3614 + 3615 + tweetnacl@^0.14.1, tweetnacl@^0.14.3, tweetnacl@~0.14.0, tweetnacl@0.x.x: 3616 + version "0.14.3" 3617 + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.3.tgz" 3618 + integrity sha512-wv+W579MMQ7iwO2XcHk72RPnBwAyRFMjizSdncxpyCHgA3jzbe8VQ5yGY5HEejR3AyywFaGIo5cJRR6ENdzFIA== 3619 + 3620 + typedarray@^0.0.6, typedarray@~0.0.5: 3621 + version "0.0.6" 3622 + resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" 3623 + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== 3624 + 3625 + typewise-core@^1.2, typewise-core@^1.2.0: 3626 + version "1.2.0" 3627 + resolved "https://registry.npmjs.org/typewise-core/-/typewise-core-1.2.0.tgz" 3628 + integrity sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg== 3629 + 3630 + typewise@^1.0.3: 3631 + version "1.0.3" 3632 + resolved "https://registry.npmjs.org/typewise/-/typewise-1.0.3.tgz" 3633 + integrity sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ== 3634 + dependencies: 3635 + typewise-core "^1.2.0" 3636 + 3637 + typewiselite@^1.0.0: 3638 + version "1.0.0" 3639 + resolved "https://registry.npmjs.org/typewiselite/-/typewiselite-1.0.0.tgz" 3640 + integrity sha512-J9alhjVHupW3Wfz6qFRGgQw0N3gr8hOkw6zm7FZ6UR1Cse/oD9/JVok7DNE9TT9IbciDHX2Ex9+ksE6cRmtymw== 3641 + 3642 + ultron@1.0.x: 3643 + version "1.0.2" 3644 + resolved "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz" 3645 + integrity sha512-QMpnpVtYaWEeY+MwKDN/UdKlE/LsFZXM5lO1u7GaZzNgmIbGixHEmVMIKT+vqYOALu3m5GYQy9kz4Xu4IVn7Ow== 3646 + 3647 + umd@^3.0.0: 3648 + version "3.0.1" 3649 + resolved "https://registry.npmjs.org/umd/-/umd-3.0.1.tgz" 3650 + integrity sha512-3npD+zDXGkXrLuoWfeeawVCNcRUnjcqLHWGifik86s+Md/YEoUqBt4yHsDNtwNLR6GY4hEw9eA/O13rD6/0skQ== 3651 + 3652 + unzip-response@^1.0.0: 3653 + version "1.0.1" 3654 + resolved "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.1.tgz" 3655 + integrity sha512-Gr4B7j6vDPqv2LKzC+5tC+j+vjV/PHNNQfNvuoRBzypaVkHwSwwcXIMG5B6KnKRup0oZFhwpjKcRZGKpI2EI1w== 3656 + 3657 + url-template@~2.0.6: 3658 + version "2.0.8" 3659 + resolved "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz" 3660 + integrity sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw== 3661 + 3662 + url@~0.11.0: 3663 + version "0.11.0" 3664 + resolved "https://registry.npmjs.org/url/-/url-0.11.0.tgz" 3665 + integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== 3666 + dependencies: 3667 + punycode "1.3.2" 3668 + querystring "0.2.0" 3669 + 3670 + ursa@^0.9.1, ursa@^0.9.4: 3671 + version "0.9.4" 3672 + resolved "https://registry.npmjs.org/ursa/-/ursa-0.9.4.tgz" 3673 + integrity sha512-bkSIu0TDNFrpKki28yXMCKB9sbxJBd2aSalXcY4qyzGLR3zw/Ln1vcU1RyGN1fjuGLFDbZ9AWN4rcAiKVMGkpQ== 3674 + dependencies: 3675 + bindings "^1.2.1" 3676 + nan "^2.3.3" 3677 + 3678 + util-deprecate@^1.0.1, util-deprecate@~1.0.1: 3679 + version "1.0.2" 3680 + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" 3681 + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 3682 + 3683 + util-extend@^1.0.1: 3684 + version "1.0.3" 3685 + resolved "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz" 3686 + integrity sha512-mLs5zAK+ctllYBj+iAQvlDCwoxU/WDOUaJkcFudeiAX6OajC6BKXJUa9a+tbtkC11dz2Ufb7h0lyvIOVn4LADA== 3687 + 3688 + util@^0.10.4, util@~0.10.1: 3689 + version "0.10.4" 3690 + resolved "https://registry.npmjs.org/util/-/util-0.10.4.tgz" 3691 + integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== 3692 + dependencies: 3693 + inherits "2.0.3" 3694 + 3695 + util@0.10.3: 3696 + version "0.10.3" 3697 + resolved "https://registry.npmjs.org/util/-/util-0.10.3.tgz" 3698 + integrity sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ== 3699 + dependencies: 3700 + inherits "2.0.1" 3701 + 3702 + verror@1.3.6: 3703 + version "1.3.6" 3704 + resolved "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz" 3705 + integrity sha512-i8GFYwImt5D5B8CPpi2jrDTy/faq4OEW+NkOTLSKcIdPfdYJvWv3VZddDKl0ByvBe6cJ2s5Mm2XDtv5c2pj/Eg== 3706 + dependencies: 3707 + extsprintf "1.0.2" 3708 + 3709 + visualize-buffer@0.0.0: 3710 + version "0.0.0" 3711 + resolved "https://registry.npmjs.org/visualize-buffer/-/visualize-buffer-0.0.0.tgz" 3712 + integrity sha512-Op/yhLNL8K+eb2LAlt/uiS9OBicVG9rtKuoe4H3yqi42Z95vQerlGkRr+MOKCdjBeucdeRiYDGQruNjUdw3KNw== 3713 + 3714 + vm-browserify@^1.0.0: 3715 + version "1.1.2" 3716 + resolved "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz" 3717 + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== 3718 + 3719 + vm-browserify@~0.0.1: 3720 + version "0.0.4" 3721 + resolved "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz" 3722 + integrity sha512-NyZNR3WDah+NPkjh/YmhuWSsT4a0mF0BJYgUmvrJ70zxjTXh5Y2Asobxlh0Nfs0PCFB5FVpRJft7NozAWFMwLQ== 3723 + dependencies: 3724 + indexof "0.0.1" 3725 + 3726 + waveform-data@^1.5.2: 3727 + version "1.5.3" 3728 + resolved "https://registry.npmjs.org/waveform-data/-/waveform-data-1.5.3.tgz" 3729 + integrity sha512-4A9+iMBZ1KUkkkte6IYWA0dyBocp1K81ODBZ7iWGJig4PryfYZTKWLeb/MK+YGSzIVi7g2QfoXW6tOxbyMCvug== 3730 + dependencies: 3731 + audio-context "^0.1.0" 3732 + 3733 + web-bootloader@^0.1.0: 3734 + version "0.1.2" 3735 + resolved "https://registry.npmjs.org/web-bootloader/-/web-bootloader-0.1.2.tgz" 3736 + integrity sha512-qpD4MkUEPggBPUhiiVHssjTJKrlDMFT4DNuPkwpVv9bhhEP9LA/+LobCor4mUzuCJG+Yq/omQMVIHA9sM9o85w== 3737 + dependencies: 3738 + arraybuffer-base64 "^1.0.0" 3739 + binary-xhr "0.0.2" 3740 + hyperfile "^1.1.1" 3741 + hyperprogress "^0.1.0" 3742 + 3743 + which-pm-runs@^1.0.0: 3744 + version "1.1.0" 3745 + resolved "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz" 3746 + integrity sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA== 3747 + 3748 + which@1: 3749 + version "1.2.11" 3750 + resolved "https://registry.npmjs.org/which/-/which-1.2.11.tgz" 3751 + integrity sha512-8kWuAZrtPpcfj0UM1rpIJopAawk+Uz+KxNSxk0U0j9fmekidFSRDhyrHOEbD5qePWF6YicG1wSUuFA6BfsE3ig== 3752 + dependencies: 3753 + isexe "^1.1.1" 3754 + 3755 + wide-align@^1.1.0: 3756 + version "1.1.0" 3757 + resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz" 3758 + integrity sha512-rlD2ELOb94L+t1gMHCObqlC3QvrHVF1V5ipWEGm4vb9OK2C6ZTvluPg1Mfp2O9POtGb/3aZNxBpKOmx0JNVHSQ== 3759 + dependencies: 3760 + string-width "^1.0.1" 3761 + 3762 + wordwrap@~0.0.2: 3763 + version "0.0.3" 3764 + resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" 3765 + integrity sha512-1tMA907+V4QmxV7dbRvb4/8MaRALK6q9Abid3ndMYnbyo8piisCmeONVqVSXqQA3KaP4SLt5b7ud6E2sqP8TFw== 3766 + 3767 + wrappy@1: 3768 + version "1.0.2" 3769 + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 3770 + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 3771 + 3772 + ws@^1.1.0: 3773 + version "1.1.1" 3774 + resolved "https://registry.npmjs.org/ws/-/ws-1.1.1.tgz" 3775 + integrity sha512-TRtCup+Fxoy1sW9funE4kPxA0KfaMc7g68DoKN+Uu9Ej+zr9We3DWVJ2XgiGtXlibqA7IWOV+Xe6xlUxPputfg== 3776 + dependencies: 3777 + options ">=0.0.5" 3778 + ultron "1.0.x" 3779 + 3780 + xtend@^4.0.0, xtend@^4.0.1, "xtend@>=4.0.0 <4.1.0-0", xtend@~4.0.0: 3781 + version "4.0.1" 3782 + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" 3783 + integrity sha512-iTwvhNBRetXWe81+VcIw5YeadVSWyze7uA7nVnpP13ulrpnJ3UfQm5ApGnrkmxDJFdrblRdZs0EvaTCIfei5oQ== 3784 + 3785 + xtend@^4.0.2: 3786 + version "4.0.2" 3787 + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" 3788 + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== 3789 + 3790 + xtend@~2.1.1: 3791 + version "2.1.2" 3792 + resolved "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz" 3793 + integrity sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ== 3794 + dependencies: 3795 + object-keys "~0.4.0"
+34 -16
public/app.js
··· 1 1 ;(function () { 2 2 var statusEl = document.getElementById('status') 3 3 var keysEl = document.getElementById('keys') 4 - var logEl = document.getElementById('log') 4 + var feedEl = document.getElementById('feed') 5 5 var composeTextEl = document.getElementById('compose-text') 6 6 var composeSendEl = document.getElementById('compose-send') 7 7 ··· 19 19 keysEl.textContent = JSON.stringify(obj, null, 2) 20 20 } 21 21 22 - function setLog (text) { 23 - if (!logEl) return 24 - logEl.textContent = text 22 + function clearFeed () { 23 + if (!feedEl) return 24 + while (feedEl.firstChild) feedEl.removeChild(feedEl.firstChild) 25 25 } 26 26 27 27 function loadKeys () { ··· 140 140 return signKeyPromise 141 141 } 142 142 143 - function formatMsg (msg) { 144 - try { 145 - return JSON.stringify(msg, null, 2) 146 - } catch (e) { 147 - return String(msg) 148 - } 149 - } 150 - 151 143 function loadLog () { 152 144 setStatus('Keys ready; loading log…') 153 145 ··· 156 148 .then(function (msgs) { 157 149 if (!Array.isArray(msgs)) msgs = [] 158 150 feedState = {} 151 + clearFeed() 159 152 160 153 // messages are newest-first (reverse: true), so first seen is latest 161 154 msgs.forEach(function (msg) { ··· 169 162 timestamp: value.timestamp 170 163 } 171 164 } 172 - }) 165 + 166 + if (!feedEl || !value || !value.content) return 173 167 174 - var lines = msgs.map(formatMsg).join('\n\n') 175 - setLog(lines || '(no messages)') 168 + var text = value.content && value.content.text 169 + var type = value.content && value.content.type 170 + var ts = value.timestamp 171 + var date = ts ? new Date(ts).toISOString() : '' 172 + 173 + var postDiv = document.createElement('div') 174 + postDiv.className = 'post' 175 + 176 + var metaDiv = document.createElement('div') 177 + metaDiv.className = 'post-meta' 178 + metaDiv.textContent = (type || 'message') + ' · ' + (author || '') + (date ? ' · ' + date : '') 179 + 180 + var textDiv = document.createElement('div') 181 + textDiv.className = 'post-text' 182 + textDiv.textContent = text || JSON.stringify(value.content) 183 + 184 + postDiv.appendChild(metaDiv) 185 + postDiv.appendChild(textDiv) 186 + feedEl.appendChild(postDiv) 187 + }) 176 188 setStatus('Keys ready; log loaded') 177 189 }) 178 190 .catch(function (err) { 179 191 console.error('failed to load log', err) 180 - setLog('failed to load log: ' + err.message) 192 + clearFeed() 193 + if (feedEl) { 194 + var errDiv = document.createElement('div') 195 + errDiv.className = 'post' 196 + errDiv.textContent = 'failed to load log: ' + err.message 197 + feedEl.appendChild(errDiv) 198 + } 181 199 setStatus('Keys ready; failed to load log') 182 200 }) 183 201 }
+71 -10
public/index.html
··· 2 2 <html lang="en"> 3 3 <head> 4 4 <meta charset="utf-8"> 5 - <title>ssb-server browser client</title> 5 + <title>Patchbay Lite (ssb-server)</title> 6 6 <meta name="viewport" content="width=device-width, initial-scale=1"> 7 + <style> 8 + body { 9 + font-family: sans-serif; 10 + margin: 0; 11 + padding: 0; 12 + } 13 + header { 14 + padding: .5em 1em; 15 + background: #f5f5f5; 16 + border-bottom: 1px solid #ddd; 17 + } 18 + #status { 19 + font-size: .9em; 20 + color: #666; 21 + } 22 + main { 23 + display: flex; 24 + flex-direction: column; 25 + padding: 1em; 26 + } 27 + .compose { 28 + margin-bottom: 1em; 29 + } 30 + .compose textarea { 31 + width: 100%; 32 + box-sizing: border-box; 33 + } 34 + .feed { 35 + border-top: 1px solid #eee; 36 + } 37 + .post { 38 + border-bottom: 1px solid #f5f5f5; 39 + padding: .5em 0; 40 + } 41 + .post-meta { 42 + font-size: .8em; 43 + color: #888; 44 + margin-bottom: .25em; 45 + } 46 + .post-text { 47 + white-space: pre-wrap; 48 + word-wrap: break-word; 49 + } 50 + #keys { 51 + font-size: .7em; 52 + white-space: pre-wrap; 53 + word-wrap: break-word; 54 + color: #999; 55 + } 56 + </style> 7 57 </head> 8 58 <body> 9 - <h1>ssb-server browser client</h1> 10 - <p id="status">Loading…</p> 11 - <pre id="keys"></pre> 59 + <header> 60 + <h1>Patchbay Lite</h1> 61 + <p id="status">Loading…</p> 62 + </header> 63 + <main> 64 + <section class="compose"> 65 + <h2>Compose</h2> 66 + <textarea id="compose-text" rows="4" cols="40" placeholder="Write a post..."></textarea> 67 + <br> 68 + <button id="compose-send">Publish</button> 69 + </section> 12 70 13 - <h2>Compose</h2> 14 - <textarea id="compose-text" rows="4" cols="40" placeholder="Write a post..."></textarea> 15 - <br> 16 - <button id="compose-send">Publish</button> 71 + <section class="feed"> 72 + <h2>Recent log</h2> 73 + <div id="feed"></div> 74 + </section> 17 75 18 - <h2>Recent log</h2> 19 - <pre id="log"></pre> 76 + <section> 77 + <h3>Browser keys</h3> 78 + <pre id="keys"></pre> 79 + </section> 80 + </main> 20 81 21 82 <script src="app.js"></script> 22 83 </body>