├── .gitignore ├── .config └── configstore │ ├── update-notifier-npm.json │ └── update-notifier-pnpm.json ├── index.html ├── package.json ├── editor.js ├── githubButton.js ├── template.js ├── multicore-swarm.js ├── index.css ├── README.md ├── server.js ├── multicore.js ├── index.js └── shrinkwrap.yaml /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | *.swp 3 | -------------------------------------------------------------------------------- /.config/configstore/update-notifier-npm.json: -------------------------------------------------------------------------------- 1 | { 2 | "optOut": false, 3 | "lastUpdateCheck": 1519970113519 4 | } -------------------------------------------------------------------------------- /.config/configstore/update-notifier-pnpm.json: -------------------------------------------------------------------------------- 1 | { 2 | "optOut": false, 3 | "lastUpdateCheck": 1519934471275 4 | } -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Peer-to-Peer Webpage Builder 5 | 6 | 7 | 8 | Generating bundle / loading... 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "codemirror-hypercore", 3 | "version": "0.0.1", 4 | "description": "Experiment with hypercore and websockets", 5 | "main": "server.js", 6 | "scripts": { 7 | "start": "node server.js" 8 | }, 9 | "dependencies": { 10 | "brfs": "^1.5.0", 11 | "budo": "^11.1.7", 12 | "choo": "^6.8.0", 13 | "codemirror": "^5.35.0", 14 | "express": "^4.16.2", 15 | "express-ws": "^3.0.0", 16 | "hypercore": "^6.12.2", 17 | "hypercore-archiver": "^4.4.1", 18 | "hyperdiscovery": "^7.0.0", 19 | "hyperdrive": "^9.12.3", 20 | "nanocomponent": "^6.5.1", 21 | "pretty-hash": "^1.0.1", 22 | "random-access-idb": "^1.0.4", 23 | "random-access-memory": "^2.4.0", 24 | "sheetify": "^7.2.0", 25 | "sodium-javascript": "jimpick/sodium-javascript", 26 | "to-buffer": "^1.1.0", 27 | "websocket-stream": "^5.1.1" 28 | }, 29 | "engines": { 30 | "node": "9.x" 31 | }, 32 | "license": "MIT" 33 | } 34 | -------------------------------------------------------------------------------- /editor.js: -------------------------------------------------------------------------------- 1 | const Nanocomponent = require('nanocomponent') 2 | const html = require('choo/html') 3 | const CodeMirror = require('codemirror') 4 | const css = require('sheetify') 5 | 6 | require('codemirror/mode/htmlmixed/htmlmixed') 7 | css('codemirror/lib/codemirror.css') 8 | 9 | class Editor extends Nanocomponent { 10 | constructor (indexHtml) { 11 | super() 12 | this.indexHtml = null 13 | } 14 | 15 | createElement (indexHtml) { 16 | this.indexHtml = indexHtml 17 | return html`
` 18 | } 19 | 20 | load (el) { 21 | this.codemirror = CodeMirror(el, { 22 | lineNumbers: true, 23 | mode: 'text/html', 24 | value: this.indexHtml 25 | }) 26 | } 27 | 28 | // Implement conditional rendering 29 | update (indexHtml) { 30 | this.indexHtml = indexHtml 31 | this.codemirror.setValue(this.indexHtml) 32 | // FIXME: update codemirror 33 | return false 34 | } 35 | } 36 | 37 | module.exports = Editor 38 | -------------------------------------------------------------------------------- /githubButton.js: -------------------------------------------------------------------------------- 1 | const Nanocomponent = require('nanocomponent') 2 | const html = require('choo/html') 3 | 4 | class GitHubButton extends Nanocomponent { 5 | constructor () { 6 | super() 7 | this.loaded = false 8 | } 9 | 10 | createElement () { 11 | return html`
17 | Star 18 |
19 | ` 20 | } 21 | 22 | load () { 23 | if (this.loaded) return 24 | console.log('Jim load') 25 | setTimeout(() => { 26 | const scriptTag = html`` 27 | document.querySelector('head').appendChild(scriptTag) 28 | }, 1000) 29 | } 30 | 31 | // Implement conditional rendering 32 | update () { 33 | return false 34 | } 35 | } 36 | 37 | module.exports = GitHubButton 38 | -------------------------------------------------------------------------------- /template.js: -------------------------------------------------------------------------------- 1 | module.exports = ` 2 | 3 | My Dat Page 4 | 33 | 34 | 35 |
36 |

My Dat Page

37 |
38 | 39 |
40 | This is my page published as a Dat archive.
41 |
42 | Fun times! 🎉 43 |
44 | 45 | 50 | 51 | 52 | ` 53 | -------------------------------------------------------------------------------- /multicore-swarm.js: -------------------------------------------------------------------------------- 1 | var xtend = require('xtend') 2 | var discoverySwarm = require('discovery-swarm') 3 | var defaults = require('datland-swarm-defaults') 4 | 5 | module.exports = swarm 6 | 7 | function swarm (archiver, opts) { 8 | var port = (opts && opts.port) || 3282 9 | var swarmOpts = xtend({ 10 | hash: false, 11 | stream: function (replicateOpts) { 12 | replicateOpts.userData = opts.userData 13 | return archiver.replicate(replicateOpts) 14 | } 15 | }, opts) 16 | 17 | var sw = discoverySwarm(defaults(swarmOpts)) 18 | 19 | archiver.changes.ready(() => { 20 | sw.join(archiver.changes.discoveryKey) 21 | }) 22 | 23 | archiver.on('changes', function (feed) { 24 | sw.join(feed.discoveryKey) 25 | }) 26 | 27 | archiver.on('add', function (feed) { 28 | console.log('Adding to Swarm:', feed.key.toString('hex')) 29 | sw.join(feed.discoveryKey) 30 | }) 31 | 32 | archiver.on('remove', function (feed) { 33 | sw.leave(feed.discoveryKey) 34 | }) 35 | 36 | sw.listen(port) 37 | sw.once('error', function () { 38 | sw.listen() 39 | }) 40 | 41 | return sw 42 | } 43 | -------------------------------------------------------------------------------- /index.css: -------------------------------------------------------------------------------- 1 | body { 2 | position: absolute; 3 | top: 0; 4 | bottom: 0; 5 | left: 0; 6 | right: 0; 7 | display: flex; 8 | flex-direction: column; 9 | } 10 | 11 | header { 12 | display: grid; 13 | grid: repeat(4, 1fr) / repeat(4, 1fr); 14 | flex: 0; 15 | grid-gap: 0.3em; 16 | margin-bottom: 0.3em; 17 | } 18 | 19 | header select { 20 | grid-column: 1 / span 3; 21 | } 22 | 23 | 24 | h2 { 25 | margin: 0 0 0.3em 0; 26 | } 27 | 28 | .title { 29 | grid-row: 2; 30 | grid-column: 1 / span 3; 31 | display: table; 32 | } 33 | 34 | .title span { 35 | display: table-cell; 36 | width: 1%; 37 | } 38 | 39 | .title input { 40 | margin-left: 0.3em; 41 | display: table-cell; 42 | width: 100%; 43 | } 44 | 45 | @media only screen and (min-device-width : 340px) and (max-device-width : 460px) { 46 | .link { 47 | font-size: x-small !important; 48 | } 49 | } 50 | 51 | @media only screen and (max-width : 340px) { 52 | .link { 53 | font-size: xx-small !important; 54 | } 55 | } 56 | 57 | .link { 58 | font-size: small; 59 | grid-row: 3; 60 | grid-column: 1 / span 4; 61 | } 62 | 63 | .help { 64 | color: purple; 65 | } 66 | 67 | .publishBtn { 68 | font-size: medium; 69 | margin: 0 0 1em 0; 70 | padding: 0.3em 0.6em; 71 | grid-column: 4; 72 | grid-row: 1 / span 2; 73 | width: 100%; 74 | height: 100%; 75 | } 76 | 77 | #editor { 78 | height: 100%; 79 | width: 100%; 80 | overflow: auto; 81 | flex: 1; 82 | } 83 | 84 | #editor .CodeMirror { 85 | height: 100%; 86 | width: 100%; 87 | } 88 | 89 | footer { 90 | margin-top: 0.2em; 91 | display: flex; 92 | flex-wrap: wrap; 93 | align-items: center; 94 | } 95 | 96 | footer > * { 97 | margin: 0.1em; 98 | } 99 | 100 | footer > a { 101 | margin-right: 0.2em; 102 | } 103 | 104 | footer #more { 105 | justify-self: end; 106 | width: 7em; 107 | margin-left: auto; 108 | } 109 | 110 | .github-button { 111 | opacity: 0; 112 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # codemirror-multicore 2 | 3 | An experiment to see if it's possible to create Dat web pages from the old web. 4 | 5 | This is a prototype for doing one-click publishing of Dat websites from a regular web browser. 6 | 7 | [https://codemirror-multicore.glitch.me/](https://codemirror-multicore.glitch.me/) 8 | 9 | # Overview 10 | 11 | This is a work-in-progress. This version is a technical prototype. 12 | 13 | Uses indexeddb in the browser to store the master copy. Syncs via websocket to a node.js gateway running on glitch that can talk to the swarm. Supports multiple Dat archives ... you can republish, delete and also export them. 14 | 15 | There's also a hard-coded connection to sync to a [pixelpusherd](https://github.com/automerge/pixelpusherd) instance I have running on a virtual machine on AWS, so the published Dats will stay online even when glitch puts the node.js gateway to sleep. 16 | 17 | It works really well with [Hashbase](https://hashbase.io/). Just publish a quick website with this tool, and then go to hashbase to map it to a regular https url. 18 | 19 | The UX on this version is really simple. I'm going to make another version with gentler onboard for those that are unfamiliar with Dat / Beaker / Hashbase. 20 | 21 | I think the biggest missing feature is the ability to upload attachments for images, etc. 22 | 23 | It's probably not a good idea to open the editor in multiple tabs in your browser ... the hypercores in the indexeddb might get corrupted. 24 | 25 | For this style of publishing to be successful, I think there needs to be a way for users to publish from multiple devices. Right now, the master copy is stored in a single web browser, and it is pretty easy to forget which web browser / computer / website combo you used to publish from, which can be an issue if you want to update. 26 | 27 | # Deploy to Glitch 28 | 29 | [![Remix on Glitch](https://cdn.glitch.com/2703baf2-b643-4da7-ab91-7ee2a2d00b5b%2Fremix-button.svg)](https://glitch.com/edit/#!/import/github/jimpick/codemirror-multicore) 30 | 31 | Note: Some of the dependencies don't work with pnpm, which glitch will use by default. To use regular 32 | npm, open up a console and type: `enable-npm` 33 | 34 | # License 35 | 36 | MIT 37 | -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | const budo = require('budo') 2 | const express = require('express') 3 | const expressWebSocket = require('express-ws') 4 | const websocketStream = require('websocket-stream/stream') 5 | const pump = require('pump') 6 | const through2 = require('through2') 7 | const ram = require('random-access-memory') 8 | const hypercore = require('hypercore') 9 | const hyperdiscovery = require('hyperdiscovery') 10 | const sheetify = require('sheetify') 11 | const brfs = require('brfs') 12 | const prettyHash = require('pretty-hash') 13 | const Multicore = require('./multicore') 14 | 15 | require('events').prototype._maxListeners = 100 16 | 17 | // Run a cloud peer using pixelpusherd 18 | // https://github.com/automerge/pixelpusherd 19 | 20 | const defaultCloudPeers = [ 21 | 'db26829a97db4a3f30b189357fab79c10c543c8e0a65a9d594eb3cb15e8aba1d' 22 | ] 23 | 24 | const router = express.Router() 25 | 26 | router.get('/page/:key', (req, res, next) => { 27 | req.url = '/index.html' 28 | next() 29 | }) 30 | 31 | const multicores = {} 32 | 33 | function attachWebsocket (server) { 34 | console.log('Attaching websocket') 35 | expressWebSocket(router, server, { 36 | perMessageDeflate: false 37 | }) 38 | 39 | router.ws('/archiver/:key', (ws, req) => { 40 | const archiverKey = req.params.key 41 | console.log('Websocket initiated for', archiverKey) 42 | let multicore 43 | if (multicores[archiverKey]) { 44 | multicore = multicores[archiverKey] 45 | } else { 46 | multicore = new Multicore(ram, {key: archiverKey}) 47 | multicores[archiverKey] = multicore 48 | const ar = multicore.archiver 49 | ar.on('add', feed => { 50 | console.log('archive add', feed.key.toString('hex')) 51 | multicore.replicateFeed(feed) 52 | feed.on('append', () => { 53 | console.log('append', prettyHash(feed.key), feed.length) 54 | }) 55 | feed.on('sync', () => { 56 | console.log('sync', prettyHash(feed.key), feed.length) 57 | }) 58 | }) 59 | ar.on('add-archive', (metadata, content) => { 60 | console.log( 61 | 'archive add-archive', 62 | metadata.key.toString('hex'), 63 | content.key.toString('hex') 64 | ) 65 | content.on('append', () => { 66 | console.log( 67 | 'append content', 68 | prettyHash(content.key), 69 | content.length 70 | ) 71 | }) 72 | content.on('sync', () => { 73 | console.log( 74 | 'sync content', 75 | prettyHash(content.key), 76 | content.length 77 | ) 78 | }) 79 | }) 80 | ar.on('sync', feed => { 81 | console.log('archive fully synced', prettyHash(feed.key)) 82 | }) 83 | ar.on('ready', () => { 84 | console.log('archive ready', ar.changes.length) 85 | ar.changes.on('append', () => { 86 | console.log('archive changes append', ar.changes.length) 87 | }) 88 | ar.changes.on('sync', () => { 89 | console.log('archive changes sync', ar.changes.length) 90 | }) 91 | // Join swarm 92 | const sw = multicore.joinSwarm() 93 | sw.on('connection', (peer, info) => { 94 | console.log('Swarm connection', info) 95 | }) 96 | // Connect cloud peers 97 | connectCloudPeers(archiverKey) 98 | }) 99 | } 100 | const ar = multicore.archiver 101 | ar.ready(() => { 102 | const stream = websocketStream(ws) 103 | pump( 104 | stream, 105 | through2(function (chunk, enc, cb) { 106 | // console.log('From web', chunk) 107 | this.push(chunk) 108 | cb() 109 | }), 110 | ar.replicate({encrypt: false}), 111 | through2(function (chunk, enc, cb) { 112 | // console.log('To web', chunk) 113 | this.push(chunk) 114 | cb() 115 | }), 116 | stream, 117 | err => { 118 | console.log('pipe finished', err.message) 119 | } 120 | ) 121 | console.log( 122 | 'Changes feed dk:', 123 | ar.changes.discoveryKey.toString('hex') 124 | ) 125 | multicore.replicateFeed(ar.changes) 126 | }) 127 | }) 128 | } 129 | 130 | function connectCloudPeers (archiverKey) { 131 | const cloudPeers = defaultCloudPeers.reduce((acc, key) => { 132 | acc[key] = {} 133 | return acc 134 | }, {}) 135 | Object.keys(cloudPeers).forEach(key => { 136 | console.log('Cloud peer connecting...', key) 137 | const feed = hypercore(ram, key) 138 | feed.ready(() => { 139 | // FIXME: We should encrypt this 140 | const userData = JSON.stringify({key: archiverKey}) 141 | const sw = hyperdiscovery(feed, { 142 | stream: () => feed.replicate({userData}) 143 | }) 144 | sw.on('connection', peer => { 145 | let name 146 | try { 147 | if (peer.remoteUserData) { 148 | const json = JSON.parse(peer.remoteUserData.toString()) 149 | name = json.name 150 | console.log('Connected to cloud peer', key, name) 151 | } 152 | } catch (e) { 153 | console.log('Cloud peer JSON parse error') 154 | } 155 | peer.on('error', err => { 156 | console.log('Cloud peer connection error', key, err) 157 | }) 158 | peer.on('close', err => { 159 | console.log('Cloud peer connection closed', key, err) 160 | }) 161 | }) 162 | }) 163 | }) 164 | } 165 | 166 | const port = process.env.PORT || 5000 167 | const devServer = budo('index.js', { 168 | port, 169 | browserify: { 170 | transform: [ brfs, sheetify ] 171 | }, 172 | middleware: [ 173 | router 174 | ] 175 | }) 176 | devServer.on('connect', event => { 177 | console.log('Listening on', event.uri) 178 | attachWebsocket(event.server) 179 | }) 180 | -------------------------------------------------------------------------------- /multicore.js: -------------------------------------------------------------------------------- 1 | const {EventEmitter} = require('events') 2 | const Archiver = require('hypercore-archiver') 3 | var protocol = require('hypercore-protocol') 4 | const hypercore = require('hypercore') 5 | const hyperdrive = require('hyperdrive') 6 | const crypto = require('hypercore/lib/crypto') 7 | const sodium = require('sodium-universal') 8 | const thunky = require('thunky') 9 | const toBuffer = require('to-buffer') 10 | // const prettyHash = require('pretty-hash') 11 | const swarm = require('./multicore-swarm') 12 | 13 | // Monkey-patch hypercore-archiver so we can create a Hypercore 14 | // directly in the archive 15 | 16 | Archiver.prototype.createFeed = function (key, opts) { 17 | const self = this 18 | opts = opts || {} 19 | if (!key) { 20 | // create key pair 21 | const keyPair = crypto.keyPair() 22 | key = keyPair.publicKey 23 | opts.secretKey = keyPair.secretKey 24 | } 25 | const dk = hypercore.discoveryKey(key).toString('hex') 26 | 27 | if (this.feeds[dk]) { 28 | return this.feeds[dk] 29 | } 30 | if (this.archives[dk]) { 31 | return this.archives[dk] 32 | } 33 | 34 | opts.sparse = this.sparse 35 | const feed = hypercore(storage(key), key, opts) 36 | this.feeds[dk] = feed 37 | 38 | this.changes.append({type: 'add', key: key.toString('hex')}) 39 | 40 | return feed 41 | 42 | // copied from hypercore-archiver.prototype._add() 43 | function storage (key) { 44 | var dk = hypercore.discoveryKey(key).toString('hex') 45 | var prefix = dk.slice(0, 2) + '/' + dk.slice(2, 4) + '/' + dk.slice(4) + '/' 46 | 47 | return function (name) { 48 | return self.storage.feeds(prefix + name) 49 | } 50 | } 51 | } 52 | 53 | Archiver.prototype.createArchive = function (key, opts) { 54 | const self = this 55 | const metadataOpts = opts || {} 56 | if (!key) { 57 | // create key pair 58 | const keyPair = crypto.keyPair() 59 | key = keyPair.publicKey 60 | metadataOpts.secretKey = keyPair.secretKey 61 | } 62 | const dk = hypercore.discoveryKey(key).toString('hex') 63 | 64 | if (this.feeds[dk]) { 65 | return this.feeds[dk] 66 | } 67 | if (this.archives[dk]) { 68 | return this.archives[dk] 69 | } 70 | 71 | // Create two hypercores for archive using hypercore-archiver 72 | // file layout 73 | const metadata = hypercore(storage(key), key, metadataOpts) 74 | 75 | /* 76 | const contentKeys = contentKeyPair(metadataOpts.secretKey) 77 | const contentOpts = { 78 | secretKey: contentKeys.secretKey, 79 | storeSecretKey: false 80 | } 81 | const content = hypercore( 82 | storage(contentKeys.publicKey), 83 | contentKeys.publicKey, 84 | contentOpts 85 | ) 86 | */ 87 | 88 | this.archives[dk] = { 89 | metadataSynced: true, 90 | metadata, 91 | contentSynced: false 92 | } 93 | 94 | const archive = this.getHyperdrive(dk) 95 | archive.ready(() => { 96 | this.archives[dk].contentSynced = true 97 | this.archives[dk].content = archive.content 98 | metadata.emit('_archive') 99 | this.emit('add-archive', metadata, archive.content) 100 | 101 | this.changes.append({type: 'add', key: key.toString('hex')}) 102 | }) 103 | 104 | return archive 105 | 106 | // copied from hypercore-archiver.prototype._add() 107 | function storage (key) { 108 | var dk = hypercore.discoveryKey(key).toString('hex') 109 | var prefix = dk.slice(0, 2) + '/' + dk.slice(2, 4) + '/' + dk.slice(4) + '/' 110 | 111 | return function (name) { 112 | return self.storage.feeds(prefix + name) 113 | } 114 | } 115 | } 116 | 117 | Archiver.prototype.getHyperdrive = function (dk) { 118 | // console.log('Jim getHyperdrive', dk) 119 | if (!this.archives[dk]) return null 120 | const self = this 121 | const {metadata, content} = this.archives[dk] 122 | const options = { 123 | metadata, 124 | sparse: true, 125 | sparseMetadata: true 126 | } 127 | const contentKeys = contentKeyPair(metadata.secretKey) 128 | if (content) { 129 | options.content = content 130 | content.secretKey = contentKeys.secretKey 131 | } 132 | const contentDk = hypercore.discoveryKey(contentKeys.publicKey) 133 | .toString('hex') 134 | const archive = hyperdrive(storage, metadata.key, options) 135 | if (content) { 136 | archive.key = archive.metadata.key 137 | archive.discoveryKey = archive.metadata.discoveryKey 138 | } 139 | archive.ready(() => { 140 | archive.content.on('append', () => { 141 | // console.log('Jim content append', archive.content.length) 142 | }) 143 | archive.content.on('peer-add', peer => { 144 | // console.log('Jim content peer-add', peer) 145 | }) 146 | }) 147 | return archive 148 | 149 | function storage (name) { 150 | const match = name.match(/^content\/(.*)$/) 151 | let path 152 | if (match) { 153 | path = contentDk.slice(0, 2) + '/' + contentDk.slice(2, 4) + '/' + 154 | contentDk.slice(4) + '/' + match[1] 155 | } else { 156 | throw new Error('Unexpected storage key') 157 | } 158 | return self.storage.feeds(path) 159 | } 160 | } 161 | 162 | // Override so we can pass userData 163 | Archiver.prototype.replicate = function (opts) { 164 | if (!opts) opts = {} 165 | 166 | if (opts.discoveryKey) opts.discoveryKey = toBuffer(opts.discoveryKey, 'hex') 167 | if (opts.key) opts.discoveryKey = hypercore.discoveryKey(toBuffer(opts.key, 'hex')) 168 | 169 | const protocolOpts = { 170 | live: true, 171 | id: this.changes.id, 172 | encrypt: opts.encrypt 173 | } 174 | if (opts.userData) { 175 | protocolOpts.userData = opts.userData 176 | } 177 | // console.log('New replication stream') 178 | var stream = protocol(protocolOpts) 179 | var self = this 180 | 181 | // const added = new Set() 182 | 183 | stream.on('feed', dk => { 184 | // console.log('Protocol feed event:', dk.toString('hex')) 185 | add(dk) 186 | }) 187 | 188 | if (opts.channel || opts.discoveryKey) { 189 | const dk = opts.channel || opts.discoveryKey 190 | // console.log('Options channel/dk:', dk.toString('hex')) 191 | add(dk) 192 | } 193 | 194 | this.on('replicateFeed', feed => { 195 | const dk = feed.discoveryKey 196 | // console.log('Replicate feed event:', prettyHash(feed.key), 'dk:', prettyHash(dk)) 197 | add(dk) 198 | }) 199 | 200 | function add (dk) { 201 | const hex = dk.toString('hex') 202 | // if (added.has(hex)) return 203 | // added.add(hex) 204 | self.ready(function (err) { 205 | // console.log('Add dk', dk.toString('hex')) 206 | if (err) return stream.destroy(err) 207 | if (stream.destroyed) return 208 | 209 | var changesHex = self.changes.discoveryKey.toString('hex') 210 | 211 | var archive = self.archives[hex] 212 | if (archive) return onarchive() 213 | 214 | var feed = changesHex === hex ? self.changes : self.feeds[hex] 215 | if (feed) return onfeed() 216 | 217 | function onarchive () { 218 | archive.metadata.replicate({ 219 | stream: stream, 220 | live: true 221 | }) 222 | // console.log('Jim replicate content', 223 | // prettyHash(archive.content.key)) 224 | archive.content.replicate({ 225 | stream: stream, 226 | live: true 227 | }) 228 | } 229 | 230 | function onfeed () { 231 | // console.log('Jim onfeed', prettyHash(feed.key), 232 | // 'dk:', prettyHash(feed.discoveryKey)) 233 | if (stream.destroyed) return 234 | 235 | stream.on('close', onclose) 236 | stream.on('end', onclose) 237 | 238 | feed.on('_archive', onarchive) 239 | feed.replicate({ 240 | stream: stream, 241 | live: true 242 | }) 243 | // console.log('Jim feed peers', feed.peers && feed.peers.length) 244 | 245 | function onclose () { 246 | feed.removeListener('_archive', onarchive) 247 | } 248 | 249 | function onarchive () { 250 | if (stream.destroyed) return 251 | 252 | var content = self.archives[hex].content 253 | // console.log('Jim onfeed replicate content', 254 | // prettyHash(content.key)) 255 | content.replicate({ 256 | stream: stream, 257 | live: true 258 | }) 259 | } 260 | } 261 | }) 262 | } 263 | 264 | return stream 265 | } 266 | 267 | class Multicore extends EventEmitter { 268 | constructor (storage, opts) { 269 | super() 270 | opts = opts || {} 271 | this.archiver = new Archiver(storage, opts.key) 272 | this.ready = thunky(open) 273 | const self = this 274 | 275 | function open (cb) { 276 | self.opened = true 277 | self.archiver.on('ready', () => { 278 | self.emit('ready') 279 | cb() 280 | }) 281 | } 282 | } 283 | 284 | createFeed (key, opts) { 285 | if (!this.opened) { 286 | throw new Error('multicore not ready, use .ready()') 287 | } 288 | return this.archiver.createFeed(key, opts) 289 | } 290 | 291 | createArchive (key, opts) { 292 | if (!this.opened) { 293 | throw new Error('multicore not ready, use .ready()') 294 | } 295 | return this.archiver.createArchive(key, opts) 296 | } 297 | 298 | joinSwarm (opts) { 299 | opts = Object.assign({}, opts, {live: true}) 300 | // this.emit('debugLog', `Swarm opts: ${JSON.stringify(opts)}`) 301 | const sw = swarm(this.archiver, opts) 302 | this.swarm = sw 303 | this.archiver.ready(() => { 304 | const feeds = this.archiver.feeds 305 | Object.keys(feeds).forEach(key => { 306 | const feed = feeds[key] 307 | sw.join(feed.discoveryKey) 308 | }) 309 | }) 310 | return sw 311 | } 312 | 313 | replicateFeed (feed) { 314 | this.archiver.emit('replicateFeed', feed) 315 | } 316 | } 317 | 318 | // From hyperdrive 319 | function contentKeyPair (secretKey) { 320 | var seed = Buffer.alloc(sodium.crypto_sign_SEEDBYTES) 321 | var context = Buffer.from('hyperdri') // 8 byte context 322 | var keyPair = { 323 | publicKey: Buffer.alloc(sodium.crypto_sign_PUBLICKEYBYTES), 324 | secretKey: Buffer.alloc(sodium.crypto_sign_SECRETKEYBYTES) 325 | } 326 | 327 | sodium.crypto_kdf_derive_from_key(seed, 1, context, secretKey) 328 | sodium.crypto_sign_seed_keypair(keyPair.publicKey, keyPair.secretKey, seed) 329 | if (seed.fill) seed.fill(0) 330 | 331 | return keyPair 332 | } 333 | 334 | module.exports = Multicore 335 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const html = require('choo/html') 2 | // const devtools = require('choo-devtools') 3 | const choo = require('choo') 4 | const storage = require('random-access-idb')('codemirror-multicore') 5 | const websocket = require('websocket-stream') 6 | const pump = require('pump') 7 | const prettyHash = require('pretty-hash') 8 | const toBuffer = require('to-buffer') 9 | const hypercore = require('hypercore') 10 | const Editor = require('./editor') 11 | const GitHubButton = require('./githubButton') 12 | const Multicore = require('./multicore') 13 | const template = require('./template') 14 | 15 | require('events').prototype._maxListeners = 100 16 | 17 | const app = choo() 18 | // app.use(devtools()) 19 | app.use(store) 20 | app.route('/', mainView) 21 | app.route('/page/:key', mainView) 22 | app.mount('body') 23 | 24 | const editor = new Editor() 25 | const gitHubButton = new GitHubButton() 26 | 27 | function mainView (state, emit) { 28 | let link = html`Edit the HTML below, then click on "Publish" to create a new web site!` 29 | let webPageKey 30 | let disabledNoCurrent = 'disabled' 31 | if (state.currentArchive && state.currentArchive.key) { 32 | webPageKey = state.currentArchive.key.toString('hex') 33 | const url = `dat://${webPageKey}` 34 | link = html`${url}` 35 | disabledNoCurrent = null 36 | } 37 | let found = false 38 | const optionList = Object.keys(state.archives).sort().map(key => { 39 | let label = prettyHash(key) 40 | const title = state.archives[key].title 41 | if (title) { 42 | label += ` ${title}` 43 | } 44 | const selected = webPageKey === key ? 'selected' : '' 45 | if (selected) found = true 46 | return html`` 47 | }) 48 | const optGroup = optionList.length > 0 ? html` 49 | 50 | ${optionList} 51 | ` : null 52 | const selectNew = found ? '' : 'selected' 53 | return html` 54 | 55 |

56 | Create a webpage on the Peer-to-Peer Web! 57 |

58 |
59 | 63 |
64 | Title: 65 | 66 |
67 | 70 | 73 |
74 | ${editor.render(state.indexHtml)} 75 | 91 | 92 | ` 93 | 94 | function selectPage (e) { 95 | const key = e.target.value 96 | if (key === 'new') { 97 | emit('pushState', `/`) 98 | } else { 99 | emit('pushState', `/page/${key}`) 100 | } 101 | } 102 | 103 | function selectMore (e) { 104 | console.log('Jim more', e.target.value) 105 | switch (e.target.value) { 106 | case 'Delete': 107 | const ok = confirm( 108 | 'Delete this web page?\n\n' + 109 | 'This will delete the master copy in your web browser, ' + 110 | 'but other replicas that may have been synced will ' + 111 | 'still exist.' 112 | ) 113 | if (ok) { 114 | emit('delete', webPageKey) 115 | } 116 | break; 117 | case 'Export': 118 | const secretKey = state.currentArchive.metadata.secretKey.toString('hex') 119 | console.log('Export', webPageKey, secretKey) 120 | alert( 121 | 'You can export the data and the secret key to the command-line ' + 122 | 'dat tool. First, you need to clone the data:\n\n' + 123 | `dat clone dat://${webPageKey}\n\n` + 124 | 'Then change directory into the new directory, and import the ' + 125 | 'secret key:\n\n' + 126 | 'dat keys import\n\n' + 127 | `The secret key is:\n\n${secretKey}\n\n` + 128 | 'IMPORTANT: Delete your old master copy in the web browser after importing, as ' + 129 | 'there must only be one master copy.' 130 | ) 131 | break; 132 | case 'Settings': 133 | alert('Settings') 134 | break; 135 | } 136 | e.target.selectedIndex = 0 137 | } 138 | } 139 | 140 | function store (state, emitter) { 141 | state.archives = {} 142 | state.currentArchive = null 143 | state.indexHtml = '' 144 | state.title = '' 145 | 146 | function debugStorage (name) { 147 | // console.log('debugStorage:', name) 148 | return storage(name) 149 | } 150 | const multicore = new Multicore(debugStorage) 151 | multicore.ready(() => { 152 | const archiverKey = multicore.archiver.changes.key.toString('hex') 153 | console.log('Archiver key:', archiverKey) 154 | 155 | emitter.on('publish', () => { 156 | const archive = state.currentArchive ? state.currentArchive 157 | : multicore.createArchive() 158 | const value = editor.codemirror.getValue() 159 | archive.ready(() => { 160 | const key = archive.key.toString('hex') 161 | const datJson = { 162 | url: `dat://${key}/`, 163 | title: document.getElementById('title').value, 164 | description: '' 165 | } 166 | archive.writeFile('/dat.json', JSON.stringify(datJson, null, 2), err => { 167 | if (err) { 168 | console.error('Error writing to Dat', err) 169 | return 170 | } 171 | archive.writeFile('/index.html', value, err => { 172 | if (err) { 173 | console.error('Error writing to Dat', err) 174 | return 175 | } 176 | console.log( 177 | `Published:\n` + 178 | `metadata ${prettyHash(archive.metadata.key)} ` + 179 | `dk: ${prettyHash(archive.metadata.discoveryKey)} ` + 180 | `length: ${archive.metadata.length}\n` + 181 | `content ${prettyHash(archive.content.key)} ` + 182 | `dk: ${prettyHash(archive.content.discoveryKey)} ` + 183 | `length: ${archive.content.length}` 184 | ) 185 | state.currentArchive = archive 186 | multicore.replicateFeed(archive) 187 | emitter.emit('pushState', `/page/${key}`) 188 | }) 189 | }) 190 | }) 191 | }) 192 | 193 | emitter.on('navigate', updateDoc) 194 | 195 | emitter.on('delete', key => { 196 | console.log('Deleting', key) 197 | state.currentArchive = null 198 | state.indexHtml = '' 199 | state.title = '' 200 | multicore.archiver.remove(key, () => { 201 | delete state.archives[key] 202 | emitter.emit('pushState', '/') 203 | }) 204 | }) 205 | 206 | const host = document.location.host 207 | const proto = document.location.protocol === 'https:' ? 'wss' : 'ws' 208 | const url = `${proto}://${host}/archiver/${archiverKey}` 209 | 210 | function connectWebsocket () { 211 | console.log('Connecting websocket', url) 212 | const stream = websocket(url) 213 | pump( 214 | stream, 215 | multicore.archiver.replicate({encrypt: false}), 216 | stream, 217 | err => { 218 | console.log('Pipe finished', err.message) 219 | connectWebsocket() 220 | } 221 | ) 222 | } 223 | connectWebsocket() 224 | 225 | multicore.archiver.on('add', feed => { 226 | multicore.replicateFeed(feed) 227 | }) 228 | multicore.archiver.on('add-archive', readMetadata) 229 | Object.keys(multicore.archiver.archives).forEach(dk => { 230 | const archive = multicore.archiver.archives[dk] 231 | readMetadata(archive.metadata, archive.content) 232 | }) 233 | updateDoc() 234 | 235 | function updateDoc () { 236 | if (!state.params.key) { 237 | state.title = 'My Dat Page' 238 | state.indexHtml = template 239 | state.currentArchive = null 240 | emitter.emit('render') 241 | } else { 242 | const key = state.params.key 243 | /* 244 | if ( 245 | state.currentArchive && 246 | state.currentArchive.key.toString('hex') === key 247 | ) return 248 | */ 249 | let archive 250 | if (state.archives[key] && state.archives[key].archive) { 251 | archive = state.archives[key].archive 252 | console.log('Key found (cached)', key) 253 | } else { 254 | const dk = hypercore.discoveryKey(toBuffer(key, 'hex')) 255 | .toString('hex') 256 | if (multicore.archiver.archives[dk]) { 257 | archive = multicore.archiver.getHyperdrive(dk) 258 | if (!state.archives[key]) { 259 | state.archives[key] = {dk} 260 | } 261 | state.archives[key].archive = archive 262 | console.log('Key found (loaded)', key) 263 | } else { 264 | console.error('Key not found locally', key) 265 | // It might be better to display an error in the UI 266 | emitter.emit('pushState', '/') 267 | } 268 | } 269 | readMetadata(archive.metadata) 270 | archive.readFile('index.html', 'utf-8', (err, data) => { 271 | if (err) { 272 | console.error('Error reading index.html', key, err) 273 | return 274 | } 275 | try { 276 | state.indexHtml = data 277 | state.currentArchive = archive 278 | emitter.emit('render') 279 | } catch (e) { 280 | // FIXME: Throw an error to the UI 281 | } 282 | }) 283 | } 284 | } 285 | 286 | function readMetadata (metadata) { 287 | const key = metadata.key.toString('hex') 288 | const dk = metadata.discoveryKey.toString('hex') 289 | if (!state.archives[key]) { 290 | state.archives[key] = {dk} 291 | } 292 | emitter.emit('render') 293 | let archive 294 | if (state.archives[key].archive) { 295 | archive = state.archives[key].archive 296 | } else { 297 | archive = multicore.archiver.getHyperdrive(dk) 298 | state.archives[key].archive = archive 299 | } 300 | archive.readFile('dat.json', 'utf-8', (err, data) => { 301 | if (err) { 302 | // console.error('Error reading dat.json', key, err) 303 | return 304 | } 305 | try { 306 | const {title} = JSON.parse(data.toString()) 307 | state.archives[key].title = title 308 | if (state.params.key === key) state.title = title 309 | emitter.emit('render') 310 | } catch (e) { 311 | // Don't worry about it 312 | } 313 | }) 314 | } 315 | }) 316 | } 317 | -------------------------------------------------------------------------------- /shrinkwrap.yaml: -------------------------------------------------------------------------------- 1 | dependencies: 2 | brfs: 1.5.0 3 | budo: 11.1.7 4 | choo: 6.8.0 5 | codemirror: 5.35.0 6 | express: 4.16.2 7 | express-ws: 3.0.0 8 | hypercore: 6.12.2 9 | hypercore-archiver: 4.4.1 10 | hyperdiscovery: 7.0.0 11 | hyperdrive: 9.12.3 12 | nanocomponent: 6.5.1 13 | pretty-hash: 1.0.1 14 | random-access-idb: 1.0.4 15 | random-access-memory: 2.4.0 16 | sheetify: 7.3.0 17 | to-buffer: 1.1.0 18 | websocket-stream: 5.1.1 19 | packages: 20 | /JSONStream/1.3.2: 21 | dependencies: 22 | jsonparse: 1.3.1 23 | through: 2.3.8 24 | dev: false 25 | resolution: 26 | integrity: sha1-wQI3G27Dp887hHygDCC7D85Mbeo= 27 | /abstract-random-access/1.1.2: 28 | dependencies: 29 | inherits: 2.0.3 30 | dev: false 31 | resolution: 32 | integrity: sha1-mo6sj/eYZvP5tLsUQ8p3jxWYrto= 33 | /accepts/1.3.5: 34 | dependencies: 35 | mime-types: 2.1.18 36 | negotiator: 0.6.1 37 | dev: false 38 | engines: 39 | node: '>= 0.6' 40 | resolution: 41 | integrity: sha1-63d99gEXI6OxTopywIBcjoZ0a9I= 42 | /acorn-node/1.3.0: 43 | dependencies: 44 | acorn: 5.5.0 45 | xtend: 4.0.1 46 | dev: false 47 | resolution: 48 | integrity: sha512-efP54n3d1aLfjL2UMdaXa6DsswwzJeI5rqhbFvXMrKiJ6eJFpf+7R0zN7t8IC+XKn2YOAFAv6xbBNgHUkoHWLw== 49 | /acorn/4.0.13: 50 | dev: false 51 | engines: 52 | node: '>=0.4.0' 53 | resolution: 54 | integrity: sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c= 55 | /acorn/5.5.0: 56 | dev: false 57 | engines: 58 | node: '>=0.4.0' 59 | resolution: 60 | integrity: sha512-arn53F07VXmls4o4pUhSzBa4fvaagPRe7AVZ8l7NHxFWUie2DsuFSBMMNAkgzRlOhEhzAnxeKyaWVzOH4xqp/g== 61 | /ansi-regex/0.2.1: 62 | dev: false 63 | engines: 64 | node: '>=0.10.0' 65 | resolution: 66 | integrity: sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk= 67 | /ansi-regex/2.1.1: 68 | dev: false 69 | engines: 70 | node: '>=0.10.0' 71 | resolution: 72 | integrity: sha1-w7M6te42DYbg5ijwRorn7yfWVN8= 73 | /ansi-styles/1.1.0: 74 | dev: false 75 | engines: 76 | node: '>=0.10.0' 77 | resolution: 78 | integrity: sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94= 79 | /ansi-styles/2.0.1: 80 | dev: false 81 | engines: 82 | node: '>=0.10.0' 83 | resolution: 84 | integrity: sha1-sDP1f5Pi0oreuLwRE4+hPaD9IKM= 85 | /ansi-styles/2.2.1: 86 | dev: false 87 | engines: 88 | node: '>=0.10.0' 89 | resolution: 90 | integrity: sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= 91 | /anymatch/1.3.2: 92 | dependencies: 93 | micromatch: 2.3.11 94 | normalize-path: 2.1.1 95 | dev: false 96 | resolution: 97 | integrity: sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== 98 | /append-tree/2.4.1: 99 | dependencies: 100 | array-lru: 1.1.1 101 | codecs: 1.2.0 102 | from2: 2.3.0 103 | inherits: 2.0.3 104 | mutexify: 1.2.0 105 | process-nextick-args: 1.0.7 106 | protocol-buffers-encodings: 1.1.0 107 | varint: 5.0.0 108 | dev: false 109 | resolution: 110 | integrity: sha512-50lPt4EpHH3zyO5/ErR+mPi9ufiS/GCpWIm09r6QZlQHBGMzuwaS3ICyPMWrWgw+00rWuOugRM8acXR31JKwvg== 111 | /arr-diff/2.0.0: 112 | dependencies: 113 | arr-flatten: 1.1.0 114 | dev: false 115 | engines: 116 | node: '>=0.10.0' 117 | resolution: 118 | integrity: sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= 119 | /arr-flatten/1.1.0: 120 | dev: false 121 | engines: 122 | node: '>=0.10.0' 123 | resolution: 124 | integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== 125 | /array-filter/0.0.1: 126 | dev: false 127 | resolution: 128 | integrity: sha1-fajPLiZijtcygDWB/SH2fKzS7uw= 129 | /array-flatten/1.1.1: 130 | dev: false 131 | resolution: 132 | integrity: sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= 133 | /array-lru/1.1.1: 134 | dev: false 135 | resolution: 136 | integrity: sha1-DH4bTgIq4Wb/HoRIxZXzGB/NMzc= 137 | /array-map/0.0.0: 138 | dev: false 139 | resolution: 140 | integrity: sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI= 141 | /array-reduce/0.0.0: 142 | dev: false 143 | resolution: 144 | integrity: sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= 145 | /array-unique/0.2.1: 146 | dev: false 147 | engines: 148 | node: '>=0.10.0' 149 | resolution: 150 | integrity: sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= 151 | /asn1.js/4.10.1: 152 | dependencies: 153 | bn.js: 4.11.8 154 | inherits: 2.0.3 155 | minimalistic-assert: 1.0.0 156 | dev: false 157 | resolution: 158 | integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== 159 | /assert/1.4.1: 160 | dependencies: 161 | util: 0.10.3 162 | dev: false 163 | resolution: 164 | integrity: sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= 165 | /astw/2.2.0: 166 | dependencies: 167 | acorn: 4.0.13 168 | dev: false 169 | resolution: 170 | integrity: sha1-e9QXhNMkk5h66yOba04cV6hzuRc= 171 | /async-each/1.0.1: 172 | dev: false 173 | resolution: 174 | integrity: sha1-GdOGodntxufByF04iu28xW0zYC0= 175 | /async-limiter/1.0.0: 176 | dev: false 177 | resolution: 178 | integrity: sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== 179 | /atomic-batcher/1.0.2: 180 | dev: false 181 | resolution: 182 | integrity: sha1-0WkB0QzOxZUWwZe5zNiTBom4E7Q= 183 | /attempt-x/1.1.3: 184 | dev: false 185 | resolution: 186 | integrity: sha512-y/+ek8IjxVpTbj/phC87jK5YRhlP5Uu7FlQdCmYuut1DTjNruyrGqUWi5bcX1VKsQX1B0FX16A1hqHomKpHv3A== 187 | /balanced-match/1.0.0: 188 | dev: false 189 | resolution: 190 | integrity: sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 191 | /base64-js/1.2.3: 192 | dev: false 193 | resolution: 194 | integrity: sha512-MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w== 195 | /bel/5.1.7: 196 | dependencies: 197 | hyperx: 2.3.3 198 | is-electron: 2.1.0 199 | pelo: 0.1.0 200 | dev: false 201 | resolution: 202 | integrity: sha512-f3aAzoq2ilK3ErDsv47uo2qK9NTKHkguI7j6sJi6ynKS9vPG180QGU8BzHas6xPnIsKj+m7YXlDSm9BmaZHNrg== 203 | /bencode/1.0.0: 204 | dependencies: 205 | safe-buffer: 5.1.1 206 | dev: false 207 | resolution: 208 | integrity: sha512-N+VOSP5MkoX+xgnp6Y056iCY5TmCZg9rgPNPQe0bIiXchxYFP4vs/Tf0dTdQ+qQhP7HM2gvfFq+sUVjQsGy5Zw== 209 | /bencode/2.0.0: 210 | dependencies: 211 | safe-buffer: 5.1.1 212 | dev: false 213 | resolution: 214 | integrity: sha512-wr2HwwrUpfB5c68zmAudOltC7rZ1G0+lQOcnuEcfIM3AWAVnB3rHI3nlgd/2CWTfQ3w3zagKt89zni/M+VLZ8g== 215 | /binary-extensions/1.11.0: 216 | dev: false 217 | engines: 218 | node: '>=0.10.0' 219 | resolution: 220 | integrity: sha1-RqoXUftqL5PuXmibsQh9SxTGwgU= 221 | /bitfield-rle/2.1.0: 222 | dependencies: 223 | varint: 4.0.1 224 | dev: false 225 | resolution: 226 | integrity: sha1-rinpOCp7pImN6fSLsj/TOMT73Pg= 227 | /bittorrent-dht/7.10.0: 228 | dependencies: 229 | bencode: 1.0.0 230 | buffer-equals: 1.0.4 231 | debug: 3.1.0 232 | inherits: 2.0.3 233 | k-bucket: 3.3.1 234 | k-rpc: 4.2.1 235 | lru: 3.1.0 236 | randombytes: 2.0.6 237 | safe-buffer: 5.1.1 238 | simple-sha1: 2.1.0 239 | dev: false 240 | resolution: 241 | integrity: sha512-fvb6M58Ceiv/S94nu6zeaiMoJvUYOeIqRbgaClm+kJTzCAqJPtAR/31pXNYB5iEReOoKqQB5zY33gY0W6ZRWQQ== 242 | /blake2b-wasm/1.1.7: 243 | dependencies: 244 | nanoassert: 1.1.0 245 | dev: false 246 | resolution: 247 | integrity: sha512-oFIHvXhlz/DUgF0kq5B1CqxIDjIJwh9iDeUUGQUcvgiGz7Wdw03McEO7CfLBy7QKGdsydcMCgO9jFNBAFCtFcA== 248 | /blake2b/2.1.2: 249 | dependencies: 250 | blake2b-wasm: 1.1.7 251 | nanoassert: 1.1.0 252 | dev: false 253 | resolution: 254 | integrity: sha1-aIDt3KNc/t6SxPsnJCITNPmJFFo= 255 | /bn.js/4.11.8: 256 | dev: false 257 | resolution: 258 | integrity: sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== 259 | /body-parser/1.18.2: 260 | dependencies: 261 | bytes: 3.0.0 262 | content-type: 1.0.4 263 | debug: 2.6.9 264 | depd: 1.1.2 265 | http-errors: 1.6.2 266 | iconv-lite: 0.4.19 267 | on-finished: 2.3.0 268 | qs: 6.5.1 269 | raw-body: 2.3.2 270 | type-is: 1.6.16 271 | dev: false 272 | engines: 273 | node: '>= 0.8' 274 | resolution: 275 | integrity: sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ= 276 | /bole/2.0.0: 277 | dependencies: 278 | core-util-is: 1.0.2 279 | individual: 3.0.0 280 | json-stringify-safe: 5.0.1 281 | dev: false 282 | resolution: 283 | integrity: sha1-2KocaQRnv7T+Ebh0rLLoOH44JhU= 284 | /brace-expansion/1.1.11: 285 | dependencies: 286 | balanced-match: 1.0.0 287 | concat-map: 0.0.1 288 | dev: false 289 | resolution: 290 | integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 291 | /braces/1.8.5: 292 | dependencies: 293 | expand-range: 1.8.2 294 | preserve: 0.2.0 295 | repeat-element: 1.1.2 296 | dev: false 297 | engines: 298 | node: '>=0.10.0' 299 | resolution: 300 | integrity: sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= 301 | /brfs/1.5.0: 302 | dependencies: 303 | quote-stream: 1.0.2 304 | resolve: 1.5.0 305 | static-module: 2.2.0 306 | through2: 2.0.3 307 | dev: false 308 | resolution: 309 | integrity: sha512-PscWJn5IGjcK5g5lqEeRPYJ5efZk93YbopLu6UXZcb9dPZUfMN/UMyyT/tddpi7A9yIDM9TEdCOA3A4WGST1hg== 310 | /brorand/1.1.0: 311 | dev: false 312 | resolution: 313 | integrity: sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= 314 | /browser-pack/6.0.4: 315 | dependencies: 316 | JSONStream: 1.3.2 317 | combine-source-map: 0.8.0 318 | defined: 1.0.0 319 | safe-buffer: 5.1.1 320 | through2: 2.0.3 321 | umd: 3.0.1 322 | dev: false 323 | resolution: 324 | integrity: sha512-Q4Rvn7P6ObyWfc4stqLWHtG1MJ8vVtjgT24Zbu+8UTzxYuZouqZsmNRRTFVMY/Ux0eIKv1d+JWzsInTX+fdHPQ== 325 | /browser-resolve/1.11.2: 326 | dependencies: 327 | resolve: 1.1.7 328 | dev: false 329 | resolution: 330 | integrity: sha1-j/CbCixCFxihBRwmCzLkj0QpOM4= 331 | /browserify-aes/1.1.1: 332 | dependencies: 333 | buffer-xor: 1.0.3 334 | cipher-base: 1.0.4 335 | create-hash: 1.1.3 336 | evp_bytestokey: 1.0.3 337 | inherits: 2.0.3 338 | safe-buffer: 5.1.1 339 | dev: false 340 | resolution: 341 | integrity: sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg== 342 | /browserify-cipher/1.0.0: 343 | dependencies: 344 | browserify-aes: 1.1.1 345 | browserify-des: 1.0.0 346 | evp_bytestokey: 1.0.3 347 | dev: false 348 | resolution: 349 | integrity: sha1-mYgkSHS/XtTijalWZtzWasj8Njo= 350 | /browserify-des/1.0.0: 351 | dependencies: 352 | cipher-base: 1.0.4 353 | des.js: 1.0.0 354 | inherits: 2.0.3 355 | dev: false 356 | resolution: 357 | integrity: sha1-2qJ3cXRwki7S/hhZQRihdUOXId0= 358 | /browserify-rsa/4.0.1: 359 | dependencies: 360 | bn.js: 4.11.8 361 | randombytes: 2.0.6 362 | dev: false 363 | resolution: 364 | integrity: sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= 365 | /browserify-sign/4.0.4: 366 | dependencies: 367 | bn.js: 4.11.8 368 | browserify-rsa: 4.0.1 369 | create-hash: 1.1.3 370 | create-hmac: 1.1.6 371 | elliptic: 6.4.0 372 | inherits: 2.0.3 373 | parse-asn1: 5.1.0 374 | dev: false 375 | resolution: 376 | integrity: sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= 377 | /browserify-zlib/0.2.0: 378 | dependencies: 379 | pako: 1.0.6 380 | dev: false 381 | resolution: 382 | integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== 383 | /browserify/15.2.0: 384 | dependencies: 385 | JSONStream: 1.3.2 386 | assert: 1.4.1 387 | browser-pack: 6.0.4 388 | browser-resolve: 1.11.2 389 | browserify-zlib: 0.2.0 390 | buffer: 5.1.0 391 | cached-path-relative: 1.0.1 392 | concat-stream: 1.5.2 393 | console-browserify: 1.1.0 394 | constants-browserify: 1.0.0 395 | crypto-browserify: 3.12.0 396 | defined: 1.0.0 397 | deps-sort: 2.0.0 398 | domain-browser: 1.1.7 399 | duplexer2: 0.1.4 400 | events: 1.1.1 401 | glob: 7.1.2 402 | has: 1.0.1 403 | htmlescape: 1.1.1 404 | https-browserify: 1.0.0 405 | inherits: 2.0.3 406 | insert-module-globals: 7.0.2 407 | labeled-stream-splicer: 2.0.0 408 | mkdirp: 0.5.1 409 | module-deps: 5.0.1 410 | os-browserify: 0.3.0 411 | parents: 1.0.1 412 | path-browserify: 0.0.0 413 | process: 0.11.10 414 | punycode: 1.4.1 415 | querystring-es3: 0.2.1 416 | read-only-stream: 2.0.0 417 | readable-stream: 2.3.4 418 | resolve: 1.5.0 419 | shasum: 1.0.2 420 | shell-quote: 1.6.1 421 | stream-browserify: 2.0.1 422 | stream-http: 2.8.0 423 | string_decoder: 1.0.3 424 | subarg: 1.0.0 425 | syntax-error: 1.4.0 426 | through2: 2.0.3 427 | timers-browserify: 1.4.2 428 | tty-browserify: 0.0.1 429 | url: 0.11.0 430 | util: 0.10.3 431 | vm-browserify: 0.0.4 432 | xtend: 4.0.1 433 | dev: false 434 | engines: 435 | node: '>= 0.8' 436 | resolution: 437 | integrity: sha512-IHYyFPm2XjJCL+VV0ZtFv8wn/sAHVOm83q3yfSn8YWbZ9jcybgPKxSDdiuMU+35jUL1914l74RnXXPD9Iyo9yg== 438 | /budo/11.1.7: 439 | dependencies: 440 | bole: 2.0.0 441 | browserify: 15.2.0 442 | chokidar: 1.7.0 443 | connect-pushstate: 1.1.0 444 | escape-html: 1.0.3 445 | events: 1.1.1 446 | garnish: 5.2.0 447 | get-ports: 1.0.3 448 | inject-lr-script: 2.1.0 449 | internal-ip: 3.0.1 450 | micromatch: 2.3.11 451 | on-finished: 2.3.0 452 | on-headers: 1.0.1 453 | once: 1.4.0 454 | opn: 3.0.3 455 | path-is-absolute: 1.0.1 456 | pem: 1.12.3 457 | reload-css: 1.0.2 458 | resolve: 1.5.0 459 | serve-static: 1.13.2 460 | simple-html-index: 1.5.0 461 | stacked: 1.1.1 462 | stdout-stream: 1.4.0 463 | strip-ansi: 3.0.1 464 | subarg: 1.0.0 465 | term-color: 1.0.1 466 | url-trim: 1.0.0 467 | watchify-middleware: 1.8.0 468 | ws: 1.1.5 469 | xtend: 4.0.1 470 | dev: false 471 | resolution: 472 | integrity: sha512-m3WzjiO/ZzPAn1TiHM4gIRc/TfOKqf6VmM4SWSCRMCHKzHVpgoYdoY4zIwSoSItEC0dcOIM78+ECRNIDTvdwcw== 473 | /buffer-alloc-unsafe/0.1.1: 474 | dev: false 475 | resolution: 476 | integrity: sha1-/+H2dVHdBVc33iUzN7/oU9+rGmo= 477 | /buffer-alloc-unsafe/1.0.0: 478 | dev: false 479 | resolution: 480 | integrity: sha1-R0qojzTnvHX6MR0uZFdAnFhGw/4= 481 | /buffer-alloc/1.1.0: 482 | dependencies: 483 | buffer-alloc-unsafe: 0.1.1 484 | buffer-fill: 0.1.0 485 | dev: false 486 | resolution: 487 | integrity: sha1-BVFNM78WVtNUDGhPZbEgLpDsowM= 488 | /buffer-equal/0.0.1: 489 | dev: false 490 | engines: 491 | node: '>=0.4.0' 492 | resolution: 493 | integrity: sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs= 494 | /buffer-equals/1.0.4: 495 | dev: false 496 | engines: 497 | node: '>=0.10.0' 498 | resolution: 499 | integrity: sha1-A1O1T9B/2VZBcGca5vZrnPENJ/U= 500 | /buffer-fill/0.1.0: 501 | dev: false 502 | resolution: 503 | integrity: sha1-ypRw6NTRuXf9dUP04qtqfclRAag= 504 | /buffer-from/0.1.1: 505 | dependencies: 506 | is-array-buffer-x: 1.7.0 507 | dev: false 508 | resolution: 509 | integrity: sha1-V7GLHaChnsBvM4N6UnWiQjUb114= 510 | /buffer-indexof/1.1.1: 511 | dev: false 512 | resolution: 513 | integrity: sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== 514 | /buffer-xor/1.0.3: 515 | dev: false 516 | resolution: 517 | integrity: sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= 518 | /buffer/5.1.0: 519 | dependencies: 520 | base64-js: 1.2.3 521 | ieee754: 1.1.8 522 | dev: false 523 | resolution: 524 | integrity: sha512-YkIRgwsZwJWTnyQrsBTWefizHh+8GYj3kbL1BTiAQ/9pwpino0G7B2gp5tx/FUBqUlvtxV85KNR3mwfAtv15Yw== 525 | /builtin-status-codes/3.0.0: 526 | dev: false 527 | resolution: 528 | integrity: sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= 529 | /bulk-write-stream/1.1.3: 530 | dependencies: 531 | inherits: 2.0.3 532 | readable-stream: 2.3.4 533 | dev: false 534 | resolution: 535 | integrity: sha1-0pyjhfvVPzV67lvT0wKHMrYq4nU= 536 | /bytes/3.0.0: 537 | dev: false 538 | engines: 539 | node: '>= 0.8' 540 | resolution: 541 | integrity: sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= 542 | /cached-constructors-x/1.0.2: 543 | dev: false 544 | resolution: 545 | integrity: sha512-7lKwmwXweW6E/31RHAJemLtZPfb2xvcABXknFF4b/dNYv4DbSGTgQHckXLQkNw6BB4HKFYW6mJgsNjADAy1ehw== 546 | /cached-path-relative/1.0.1: 547 | dev: false 548 | resolution: 549 | integrity: sha1-0JxLUoAKpMB44t2BqGmqyQ0uVOc= 550 | /chalk/0.5.1: 551 | dependencies: 552 | ansi-styles: 1.1.0 553 | escape-string-regexp: 1.0.5 554 | has-ansi: 0.1.0 555 | strip-ansi: 0.3.0 556 | supports-color: 0.2.0 557 | dev: false 558 | engines: 559 | node: '>=0.10.0' 560 | resolution: 561 | integrity: sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ= 562 | /chalk/1.1.3: 563 | dependencies: 564 | ansi-styles: 2.2.1 565 | escape-string-regexp: 1.0.5 566 | has-ansi: 2.0.0 567 | strip-ansi: 3.0.1 568 | supports-color: 2.0.0 569 | dev: false 570 | engines: 571 | node: '>=0.10.0' 572 | resolution: 573 | integrity: sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= 574 | /charenc/0.0.2: 575 | dev: false 576 | resolution: 577 | integrity: sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= 578 | /chokidar/1.7.0: 579 | dependencies: 580 | anymatch: 1.3.2 581 | async-each: 1.0.1 582 | glob-parent: 2.0.0 583 | inherits: 2.0.3 584 | is-binary-path: 1.0.1 585 | is-glob: 2.0.1 586 | path-is-absolute: 1.0.1 587 | readdirp: 2.1.0 588 | dev: false 589 | optionalDependencies: 590 | fsevents: 1.1.3 591 | resolution: 592 | integrity: sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= 593 | /choo/6.8.0: 594 | dependencies: 595 | bel: 5.1.7 596 | document-ready: 2.0.1 597 | nanobus: 4.3.3 598 | nanohref: 3.0.1 599 | nanolocation: 1.0.0 600 | nanomorph: 5.1.3 601 | nanoquery: 1.2.0 602 | nanoraf: 3.0.1 603 | nanorouter: 3.0.1 604 | nanotiming: 7.3.0 605 | scroll-to-anchor: 1.1.0 606 | xtend: 4.0.1 607 | dev: false 608 | resolution: 609 | integrity: sha512-yQkUqeqNtHdSeRik4yjPYIC0JRghdvG0AXxGGkqEgLqqOTCVVK8Fnu/x5FKOQ+CEGfodxIrWLIEHpx1AotmCGg== 610 | /cipher-base/1.0.4: 611 | dependencies: 612 | inherits: 2.0.3 613 | safe-buffer: 5.1.1 614 | dev: false 615 | resolution: 616 | integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== 617 | /codecs/1.2.0: 618 | dev: false 619 | resolution: 620 | integrity: sha1-UUhUnj0VbF+gU9fLtBlxWgz0PRY= 621 | /codemirror/5.35.0: 622 | dev: false 623 | resolution: 624 | integrity: sha512-8HQICjZlDfe1ai7bvU6m2uHxuZuFgsUCdDRU9OHVB+2RTRd+FftN1ezVCqbquG0Fyq+wETqyadKhUX46DswSUQ== 625 | /colors/0.6.2: 626 | dev: false 627 | engines: 628 | node: '>=0.1.90' 629 | resolution: 630 | integrity: sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w= 631 | /combine-source-map/0.7.2: 632 | dependencies: 633 | convert-source-map: 1.1.3 634 | inline-source-map: 0.6.2 635 | lodash.memoize: 3.0.4 636 | source-map: 0.5.7 637 | dev: false 638 | resolution: 639 | integrity: sha1-CHAxKFazB6h8xKxIbzqaYq7MwJ4= 640 | /combine-source-map/0.8.0: 641 | dependencies: 642 | convert-source-map: 1.1.3 643 | inline-source-map: 0.6.2 644 | lodash.memoize: 3.0.4 645 | source-map: 0.5.7 646 | dev: false 647 | resolution: 648 | integrity: sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos= 649 | /commander/2.1.0: 650 | dev: false 651 | engines: 652 | node: '>= 0.6.x' 653 | resolution: 654 | integrity: sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E= 655 | /concat-map/0.0.1: 656 | dev: false 657 | resolution: 658 | integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 659 | /concat-stream/1.5.2: 660 | dependencies: 661 | inherits: 2.0.3 662 | readable-stream: 2.0.6 663 | typedarray: 0.0.6 664 | dev: false 665 | engines: 666 | '0': node >= 0.8 667 | resolution: 668 | integrity: sha1-cIl4Yk2FavQaWnQd790mHadSwmY= 669 | /concat-stream/1.6.1: 670 | dependencies: 671 | inherits: 2.0.3 672 | readable-stream: 2.3.4 673 | typedarray: 0.0.6 674 | dev: false 675 | engines: 676 | '0': node >= 0.8 677 | resolution: 678 | integrity: sha512-gslSSJx03QKa59cIKqeJO9HQ/WZMotvYJCuaUULrLpjj8oG40kV2Z+gz82pVxlTkOADi4PJxQPPfhl1ELYrrXw== 679 | /connect-pushstate/1.1.0: 680 | dev: false 681 | resolution: 682 | integrity: sha1-vKsiQnHEOWBKD7D2FMCl9WPojiQ= 683 | /connections/1.4.2: 684 | dev: false 685 | resolution: 686 | integrity: sha1-eJBIK/XHGvbFyhkr4xNq7XRCiq0= 687 | /console-browserify/1.1.0: 688 | dependencies: 689 | date-now: 0.1.4 690 | dev: false 691 | resolution: 692 | integrity: sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= 693 | /constants-browserify/1.0.0: 694 | dev: false 695 | resolution: 696 | integrity: sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= 697 | /content-disposition/0.5.2: 698 | dev: false 699 | engines: 700 | node: '>= 0.6' 701 | resolution: 702 | integrity: sha1-DPaLud318r55YcOoUXjLhdunjLQ= 703 | /content-type/1.0.4: 704 | dev: false 705 | engines: 706 | node: '>= 0.6' 707 | resolution: 708 | integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 709 | /convert-source-map/1.1.3: 710 | dev: false 711 | resolution: 712 | integrity: sha1-SCnId+n+SbMWHzvzZziI4gRpmGA= 713 | /convert-source-map/1.5.1: 714 | dev: false 715 | resolution: 716 | integrity: sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU= 717 | /cookie-signature/1.0.6: 718 | dev: false 719 | resolution: 720 | integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw= 721 | /cookie/0.3.1: 722 | dev: false 723 | engines: 724 | node: '>= 0.6' 725 | resolution: 726 | integrity: sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= 727 | /core-util-is/1.0.2: 728 | dev: false 729 | resolution: 730 | integrity: sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 731 | /create-ecdh/4.0.0: 732 | dependencies: 733 | bn.js: 4.11.8 734 | elliptic: 6.4.0 735 | dev: false 736 | resolution: 737 | integrity: sha1-iIxyNZbN92EvZJgjPuvXo1MBc30= 738 | /create-hash/1.1.3: 739 | dependencies: 740 | cipher-base: 1.0.4 741 | inherits: 2.0.3 742 | ripemd160: 2.0.1 743 | sha.js: 2.4.10 744 | dev: false 745 | resolution: 746 | integrity: sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0= 747 | /create-hmac/1.1.6: 748 | dependencies: 749 | cipher-base: 1.0.4 750 | create-hash: 1.1.3 751 | inherits: 2.0.3 752 | ripemd160: 2.0.1 753 | safe-buffer: 5.1.1 754 | sha.js: 2.4.10 755 | dev: false 756 | resolution: 757 | integrity: sha1-rLniIaThe9sHbpBlfEK5PjcmzwY= 758 | /cross-spawn/5.1.0: 759 | dependencies: 760 | lru-cache: 4.1.1 761 | shebang-command: 1.2.0 762 | which: 1.3.0 763 | dev: false 764 | resolution: 765 | integrity: sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= 766 | /crypt/0.0.2: 767 | dev: false 768 | resolution: 769 | integrity: sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= 770 | /crypto-browserify/3.12.0: 771 | dependencies: 772 | browserify-cipher: 1.0.0 773 | browserify-sign: 4.0.4 774 | create-ecdh: 4.0.0 775 | create-hash: 1.1.3 776 | create-hmac: 1.1.6 777 | diffie-hellman: 5.0.2 778 | inherits: 2.0.3 779 | pbkdf2: 3.0.14 780 | public-encrypt: 4.0.0 781 | randombytes: 2.0.6 782 | randomfill: 1.0.4 783 | dev: false 784 | resolution: 785 | integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== 786 | /date-now/0.1.4: 787 | dev: false 788 | resolution: 789 | integrity: sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= 790 | /datland-swarm-defaults/1.0.2: 791 | dependencies: 792 | xtend: 4.0.1 793 | dev: false 794 | resolution: 795 | integrity: sha1-J3uJWjnxqn+WpJWgL7NmKl7Z8uA= 796 | /debounce/1.1.0: 797 | dev: false 798 | resolution: 799 | integrity: sha512-ZQVKfRVlwRfD150ndzEK8M90ABT+Y/JQKs4Y7U4MXdpuoUkkrr4DwKbVux3YjylA5bUMUj0Nc3pMxPJX6N2QQQ== 800 | /debug/2.6.9: 801 | dependencies: 802 | ms: 2.0.0 803 | dev: false 804 | resolution: 805 | integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 806 | /debug/3.1.0: 807 | dependencies: 808 | ms: 2.0.0 809 | dev: false 810 | resolution: 811 | integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== 812 | /deep-is/0.1.3: 813 | dev: false 814 | resolution: 815 | integrity: sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 816 | /default-gateway/2.7.0: 817 | dependencies: 818 | execa: 0.9.0 819 | ip-regex: 2.1.0 820 | dev: false 821 | engines: 822 | node: '>=4' 823 | resolution: 824 | integrity: sha512-bDPiro+T7ZBbt6HlObvUVHv+VHw1WGvF/UI3D+ZN2mqPTPgx5JM5YDgTj06zkr/tq2N5pCgGFMetNrSBi+IjLw== 825 | /defined/1.0.0: 826 | dev: false 827 | resolution: 828 | integrity: sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= 829 | /depd/1.1.1: 830 | dev: false 831 | engines: 832 | node: '>= 0.6' 833 | resolution: 834 | integrity: sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k= 835 | /depd/1.1.2: 836 | dev: false 837 | engines: 838 | node: '>= 0.6' 839 | resolution: 840 | integrity: sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 841 | /deps-sort/2.0.0: 842 | dependencies: 843 | JSONStream: 1.3.2 844 | shasum: 1.0.2 845 | subarg: 1.0.0 846 | through2: 2.0.3 847 | dev: false 848 | resolution: 849 | integrity: sha1-CRckkC6EZYJg65EHSMzNGvbiH7U= 850 | /des.js/1.0.0: 851 | dependencies: 852 | inherits: 2.0.3 853 | minimalistic-assert: 1.0.0 854 | dev: false 855 | resolution: 856 | integrity: sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= 857 | /destroy/1.0.4: 858 | dev: false 859 | resolution: 860 | integrity: sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= 861 | /detective/5.1.0: 862 | dependencies: 863 | acorn-node: 1.3.0 864 | defined: 1.0.0 865 | minimist: 1.2.0 866 | dev: false 867 | engines: 868 | node: '>=0.8.0' 869 | resolution: 870 | integrity: sha512-TFHMqfOvxlgrfVzTEkNBSh9SvSNX/HfF4OFI2QFGCyPm02EsyILqnUeb5P6q7JZ3SFNTBL5t2sePRgrN4epUWQ== 871 | /diffie-hellman/5.0.2: 872 | dependencies: 873 | bn.js: 4.11.8 874 | miller-rabin: 4.0.1 875 | randombytes: 2.0.6 876 | dev: false 877 | resolution: 878 | integrity: sha1-tYNXOScM/ias9jIJn97SoH8gnl4= 879 | /discovery-channel/5.4.7: 880 | dependencies: 881 | bittorrent-dht: 7.10.0 882 | debug: 2.6.9 883 | dns-discovery: 5.6.1 884 | pretty-hash: 1.0.1 885 | thunky: 0.1.0 886 | dev: false 887 | resolution: 888 | integrity: sha512-6Ohv70DEbtokwypklgHYCQFXCSeGMbMc477z4dsHPhqXKGPfXdWvWrwR38ZqFrU3qDj+F2iOnLOIY/LJbV2L2A== 889 | /discovery-swarm/4.4.2: 890 | dependencies: 891 | buffer-equals: 1.0.4 892 | connections: 1.4.2 893 | debug: 2.6.9 894 | discovery-channel: 5.4.7 895 | length-prefixed-message: 3.0.3 896 | pump: 1.0.3 897 | to-buffer: 1.1.0 898 | dev: false 899 | optionalDependencies: 900 | utp-native: 1.6.2 901 | resolution: 902 | integrity: sha1-XTFgpGAZ5Q6HQZV2XffWAe5VqBM= 903 | /dns-discovery/5.6.1: 904 | dependencies: 905 | debug: 2.6.9 906 | dns-socket: 1.6.3 907 | dns-txt: 2.0.2 908 | lru: 2.0.1 909 | minimist: 1.2.0 910 | multicast-dns: 6.2.3 911 | network-address: 1.1.2 912 | unordered-set: 1.1.0 913 | dev: false 914 | resolution: 915 | integrity: sha512-r27fv3lDuZXCqmb5b04tV2aDxVbwVJaSyPzwPlOYCUbk9F7JvsY+n7EBfY2Z952bGx5TZt3SLQ+ELFjfqyLVoA== 916 | /dns-packet/1.3.1: 917 | dependencies: 918 | ip: 1.1.5 919 | safe-buffer: 5.1.1 920 | dev: false 921 | resolution: 922 | integrity: sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== 923 | /dns-socket/1.6.3: 924 | dependencies: 925 | dns-packet: 1.3.1 926 | dev: false 927 | resolution: 928 | integrity: sha512-/mUy3VGqIP69dAZjh2xxHXcpK9wk2Len1Dxz8mWAdrIgFC8tnR/aQAyU4a+UTXzOcTvEvGBdp1zFiwnpWKaXng== 929 | /dns-txt/2.0.2: 930 | dependencies: 931 | buffer-indexof: 1.1.1 932 | dev: false 933 | resolution: 934 | integrity: sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= 935 | /document-ready/2.0.1: 936 | dev: false 937 | resolution: 938 | integrity: sha1-PjvzHTI1uU4jLnssX6GmNOhzuuQ= 939 | /dom-walk/0.1.1: 940 | dev: false 941 | resolution: 942 | integrity: sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg= 943 | /domain-browser/1.1.7: 944 | dev: false 945 | engines: 946 | node: '>=0.4' 947 | npm: '>=1.2' 948 | resolution: 949 | integrity: sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw= 950 | /duplexer2/0.1.4: 951 | dependencies: 952 | readable-stream: 2.3.4 953 | dev: false 954 | resolution: 955 | integrity: sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= 956 | /duplexify/3.5.3: 957 | dependencies: 958 | end-of-stream: 1.4.1 959 | inherits: 2.0.3 960 | readable-stream: 2.3.4 961 | stream-shift: 1.0.0 962 | dev: false 963 | resolution: 964 | integrity: sha512-g8ID9OroF9hKt2POf8YLayy+9594PzmM3scI00/uBXocX3TWNgoB67hjzkFe9ITAbQOne/lLdBxHXvYUM4ZgGA== 965 | /ee-first/1.1.1: 966 | dev: false 967 | resolution: 968 | integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= 969 | /elliptic/6.4.0: 970 | dependencies: 971 | bn.js: 4.11.8 972 | brorand: 1.1.0 973 | hash.js: 1.1.3 974 | hmac-drbg: 1.0.1 975 | inherits: 2.0.3 976 | minimalistic-assert: 1.0.0 977 | minimalistic-crypto-utils: 1.0.1 978 | dev: false 979 | resolution: 980 | integrity: sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8= 981 | /encodeurl/1.0.2: 982 | dev: false 983 | engines: 984 | node: '>= 0.8' 985 | resolution: 986 | integrity: sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= 987 | /end-of-stream/1.4.1: 988 | dependencies: 989 | once: 1.4.0 990 | dev: false 991 | resolution: 992 | integrity: sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== 993 | /escape-html/1.0.3: 994 | dev: false 995 | resolution: 996 | integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= 997 | /escape-string-regexp/1.0.5: 998 | dev: false 999 | engines: 1000 | node: '>=0.8.0' 1001 | resolution: 1002 | integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 1003 | /escodegen/1.9.1: 1004 | dependencies: 1005 | esprima: 3.1.3 1006 | estraverse: 4.2.0 1007 | esutils: 2.0.2 1008 | optionator: 0.8.2 1009 | dev: false 1010 | engines: 1011 | node: '>=4.0' 1012 | optionalDependencies: 1013 | source-map: 0.6.1 1014 | resolution: 1015 | integrity: sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q== 1016 | /esprima/3.1.3: 1017 | dev: false 1018 | engines: 1019 | node: '>=4' 1020 | resolution: 1021 | integrity: sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= 1022 | /estraverse/4.2.0: 1023 | dev: false 1024 | engines: 1025 | node: '>=0.10.0' 1026 | resolution: 1027 | integrity: sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= 1028 | /esutils/2.0.2: 1029 | dev: false 1030 | engines: 1031 | node: '>=0.10.0' 1032 | resolution: 1033 | integrity: sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= 1034 | /etag/1.8.1: 1035 | dev: false 1036 | engines: 1037 | node: '>= 0.6' 1038 | resolution: 1039 | integrity: sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= 1040 | /events/1.1.1: 1041 | dev: false 1042 | engines: 1043 | node: '>=0.4.x' 1044 | resolution: 1045 | integrity: sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= 1046 | /evp_bytestokey/1.0.3: 1047 | dependencies: 1048 | md5.js: 1.3.4 1049 | safe-buffer: 5.1.1 1050 | dev: false 1051 | resolution: 1052 | integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== 1053 | /execa/0.9.0: 1054 | dependencies: 1055 | cross-spawn: 5.1.0 1056 | get-stream: 3.0.0 1057 | is-stream: 1.1.0 1058 | npm-run-path: 2.0.2 1059 | p-finally: 1.0.0 1060 | signal-exit: 3.0.2 1061 | strip-eof: 1.0.0 1062 | dev: false 1063 | engines: 1064 | node: '>=4' 1065 | resolution: 1066 | integrity: sha512-BbUMBiX4hqiHZUA5+JujIjNb6TyAlp2D5KLheMjMluwOuzcnylDL4AxZYLLn1n2AGB49eSWwyKvvEQoRpnAtmA== 1067 | /expand-brackets/0.1.5: 1068 | dependencies: 1069 | is-posix-bracket: 0.1.1 1070 | dev: false 1071 | engines: 1072 | node: '>=0.10.0' 1073 | resolution: 1074 | integrity: sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= 1075 | /expand-range/1.8.2: 1076 | dependencies: 1077 | fill-range: 2.2.3 1078 | dev: false 1079 | engines: 1080 | node: '>=0.10.0' 1081 | resolution: 1082 | integrity: sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= 1083 | /express-ws/3.0.0: 1084 | dependencies: 1085 | ws: 2.3.1 1086 | dev: false 1087 | engines: 1088 | node: '>=4.5.0' 1089 | peerDependencies: 1090 | express: ^4.0.0 || ^5.0.0-alpha.1 1091 | resolution: 1092 | integrity: sha1-fdqvO3x1iGXAmZBZiZEbYjRHfb0= 1093 | /express/4.16.2: 1094 | dependencies: 1095 | accepts: 1.3.5 1096 | array-flatten: 1.1.1 1097 | body-parser: 1.18.2 1098 | content-disposition: 0.5.2 1099 | content-type: 1.0.4 1100 | cookie: 0.3.1 1101 | cookie-signature: 1.0.6 1102 | debug: 2.6.9 1103 | depd: 1.1.2 1104 | encodeurl: 1.0.2 1105 | escape-html: 1.0.3 1106 | etag: 1.8.1 1107 | finalhandler: 1.1.0 1108 | fresh: 0.5.2 1109 | merge-descriptors: 1.0.1 1110 | methods: 1.1.2 1111 | on-finished: 2.3.0 1112 | parseurl: 1.3.2 1113 | path-to-regexp: 0.1.7 1114 | proxy-addr: 2.0.3 1115 | qs: 6.5.1 1116 | range-parser: 1.2.0 1117 | safe-buffer: 5.1.1 1118 | send: 0.16.1 1119 | serve-static: 1.13.1 1120 | setprototypeof: 1.1.0 1121 | statuses: 1.3.1 1122 | type-is: 1.6.16 1123 | utils-merge: 1.0.1 1124 | vary: 1.1.2 1125 | dev: false 1126 | engines: 1127 | node: '>= 0.10.0' 1128 | resolution: 1129 | integrity: sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w= 1130 | /extglob/0.3.2: 1131 | dependencies: 1132 | is-extglob: 1.0.0 1133 | dev: false 1134 | engines: 1135 | node: '>=0.10.0' 1136 | resolution: 1137 | integrity: sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= 1138 | /falafel/2.1.0: 1139 | dependencies: 1140 | acorn: 5.5.0 1141 | foreach: 2.0.5 1142 | isarray: 0.0.1 1143 | object-keys: 1.0.11 1144 | dev: false 1145 | engines: 1146 | node: '>=0.4.0' 1147 | resolution: 1148 | integrity: sha1-lrsXdh2rqU9G0AFzizzt86Z/4Gw= 1149 | /fast-json-parse/1.0.3: 1150 | dev: false 1151 | resolution: 1152 | integrity: sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw== 1153 | /fast-levenshtein/2.0.6: 1154 | dev: false 1155 | resolution: 1156 | integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 1157 | /filename-regex/2.0.1: 1158 | dev: false 1159 | engines: 1160 | node: '>=0.10.0' 1161 | resolution: 1162 | integrity: sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= 1163 | /fill-range/2.2.3: 1164 | dependencies: 1165 | is-number: 2.1.0 1166 | isobject: 2.1.0 1167 | randomatic: 1.1.7 1168 | repeat-element: 1.1.2 1169 | repeat-string: 1.6.1 1170 | dev: false 1171 | engines: 1172 | node: '>=0.10.0' 1173 | resolution: 1174 | integrity: sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM= 1175 | /finalhandler/1.1.0: 1176 | dependencies: 1177 | debug: 2.6.9 1178 | encodeurl: 1.0.2 1179 | escape-html: 1.0.3 1180 | on-finished: 2.3.0 1181 | parseurl: 1.3.2 1182 | statuses: 1.3.1 1183 | unpipe: 1.0.0 1184 | dev: false 1185 | engines: 1186 | node: '>= 0.8' 1187 | resolution: 1188 | integrity: sha1-zgtoVbRYU+eRsvzGgARtiCU91/U= 1189 | /findup/0.1.5: 1190 | dependencies: 1191 | colors: 0.6.2 1192 | commander: 2.1.0 1193 | dev: false 1194 | engines: 1195 | node: '>=0.6' 1196 | resolution: 1197 | integrity: sha1-itkpozk7rGJ5V6fl3kYjsGsOLOs= 1198 | /flat-tree/1.6.0: 1199 | dev: false 1200 | resolution: 1201 | integrity: sha1-/KMM3bkAb7ZW6168ea6ydOf96e0= 1202 | /flatten/1.0.2: 1203 | dev: false 1204 | resolution: 1205 | integrity: sha1-2uRqnXj74lKSJYzB54CkHZXAN4I= 1206 | /for-in/1.0.2: 1207 | dev: false 1208 | engines: 1209 | node: '>=0.10.0' 1210 | resolution: 1211 | integrity: sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= 1212 | /for-own/0.1.5: 1213 | dependencies: 1214 | for-in: 1.0.2 1215 | dev: false 1216 | engines: 1217 | node: '>=0.10.0' 1218 | resolution: 1219 | integrity: sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= 1220 | /foreach/2.0.5: 1221 | dev: false 1222 | resolution: 1223 | integrity: sha1-C+4AUBiusmDQo6865ljdATbsG5k= 1224 | /forwarded/0.1.2: 1225 | dev: false 1226 | engines: 1227 | node: '>= 0.6' 1228 | resolution: 1229 | integrity: sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= 1230 | /fresh/0.5.2: 1231 | dev: false 1232 | engines: 1233 | node: '>= 0.6' 1234 | resolution: 1235 | integrity: sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= 1236 | /from2-string/1.1.0: 1237 | dependencies: 1238 | from2: 2.3.0 1239 | dev: false 1240 | resolution: 1241 | integrity: sha1-GCgrJ9CKJnyzAwzSuLSw8hKvdSo= 1242 | /from2/2.3.0: 1243 | dependencies: 1244 | inherits: 2.0.3 1245 | readable-stream: 2.3.4 1246 | dev: false 1247 | resolution: 1248 | integrity: sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= 1249 | /fs.realpath/1.0.0: 1250 | dev: false 1251 | resolution: 1252 | integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 1253 | /fsevents/1.1.3: 1254 | bundledDependencies: 1255 | - node-pre-gyp 1256 | dependencies: 1257 | nan: 2.9.2 1258 | dev: false 1259 | engines: 1260 | node: '>=0.8.0' 1261 | optional: true 1262 | resolution: 1263 | integrity: sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q== 1264 | /function-bind/1.1.1: 1265 | dev: false 1266 | resolution: 1267 | integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 1268 | /garnish/5.2.0: 1269 | dependencies: 1270 | chalk: 0.5.1 1271 | minimist: 1.2.0 1272 | pad-left: 2.1.0 1273 | pad-right: 0.2.2 1274 | prettier-bytes: 1.0.4 1275 | pretty-ms: 2.1.0 1276 | right-now: 1.0.0 1277 | split2: 0.2.1 1278 | stdout-stream: 1.4.0 1279 | url-trim: 1.0.0 1280 | dev: false 1281 | resolution: 1282 | integrity: sha1-vtQ2WTguSxmOM8eTiXvnxwHmVXc= 1283 | /get-ports/1.0.3: 1284 | dependencies: 1285 | map-limit: 0.0.1 1286 | dev: false 1287 | resolution: 1288 | integrity: sha1-9AvVgKyn7A77e5bL/L6wPviUteg= 1289 | /get-stream/3.0.0: 1290 | dev: false 1291 | engines: 1292 | node: '>=4' 1293 | resolution: 1294 | integrity: sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= 1295 | /glob-base/0.3.0: 1296 | dependencies: 1297 | glob-parent: 2.0.0 1298 | is-glob: 2.0.1 1299 | dev: false 1300 | engines: 1301 | node: '>=0.10.0' 1302 | resolution: 1303 | integrity: sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= 1304 | /glob-parent/2.0.0: 1305 | dependencies: 1306 | is-glob: 2.0.1 1307 | dev: false 1308 | resolution: 1309 | integrity: sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= 1310 | /glob/7.1.2: 1311 | dependencies: 1312 | fs.realpath: 1.0.0 1313 | inflight: 1.0.6 1314 | inherits: 2.0.3 1315 | minimatch: 3.0.4 1316 | once: 1.4.0 1317 | path-is-absolute: 1.0.1 1318 | dev: false 1319 | resolution: 1320 | integrity: sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== 1321 | /global/4.3.2: 1322 | dependencies: 1323 | min-document: 2.19.0 1324 | process: 0.5.2 1325 | dev: false 1326 | resolution: 1327 | integrity: sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8= 1328 | /graceful-fs/4.1.11: 1329 | dev: false 1330 | engines: 1331 | node: '>=0.4.0' 1332 | resolution: 1333 | integrity: sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg= 1334 | /has-ansi/0.1.0: 1335 | dependencies: 1336 | ansi-regex: 0.2.1 1337 | dev: false 1338 | engines: 1339 | node: '>=0.10.0' 1340 | resolution: 1341 | integrity: sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4= 1342 | /has-ansi/2.0.0: 1343 | dependencies: 1344 | ansi-regex: 2.1.1 1345 | dev: false 1346 | engines: 1347 | node: '>=0.10.0' 1348 | resolution: 1349 | integrity: sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= 1350 | /has-flag/1.0.0: 1351 | dev: false 1352 | engines: 1353 | node: '>=0.10.0' 1354 | resolution: 1355 | integrity: sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= 1356 | /has-own-property-x/3.2.0: 1357 | dependencies: 1358 | cached-constructors-x: 1.0.2 1359 | to-object-x: 1.5.0 1360 | to-property-key-x: 2.0.2 1361 | dev: false 1362 | resolution: 1363 | integrity: sha512-HtRQTYpRFz/YVaQ7jh2mU5iorMAxFcML9FNOLMI1f8VNJ2K0hpOlXoi1a+nmVl6oUcGnhd6zYOFAVe7NUFStyQ== 1364 | /has-symbol-support-x/1.4.2: 1365 | dev: false 1366 | resolution: 1367 | integrity: sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== 1368 | /has-to-string-tag-x/1.4.1: 1369 | dependencies: 1370 | has-symbol-support-x: 1.4.2 1371 | dev: false 1372 | resolution: 1373 | integrity: sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== 1374 | /has/1.0.1: 1375 | dependencies: 1376 | function-bind: 1.1.1 1377 | dev: false 1378 | engines: 1379 | node: '>= 0.8.0' 1380 | resolution: 1381 | integrity: sha1-hGFzP1OLCDfJNh45qauelwTcLyg= 1382 | /hash-base/2.0.2: 1383 | dependencies: 1384 | inherits: 2.0.3 1385 | dev: false 1386 | resolution: 1387 | integrity: sha1-ZuodhW206KVHDK32/OI65SRO8uE= 1388 | /hash-base/3.0.4: 1389 | dependencies: 1390 | inherits: 2.0.3 1391 | safe-buffer: 5.1.1 1392 | dev: false 1393 | engines: 1394 | node: '>=4' 1395 | resolution: 1396 | integrity: sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= 1397 | /hash.js/1.1.3: 1398 | dependencies: 1399 | inherits: 2.0.3 1400 | minimalistic-assert: 1.0.0 1401 | dev: false 1402 | resolution: 1403 | integrity: sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== 1404 | /hmac-drbg/1.0.1: 1405 | dependencies: 1406 | hash.js: 1.1.3 1407 | minimalistic-assert: 1.0.0 1408 | minimalistic-crypto-utils: 1.0.1 1409 | dev: false 1410 | resolution: 1411 | integrity: sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= 1412 | /htmlescape/1.1.1: 1413 | dev: false 1414 | engines: 1415 | node: '>=0.10' 1416 | resolution: 1417 | integrity: sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E= 1418 | /http-errors/1.6.2: 1419 | dependencies: 1420 | depd: 1.1.1 1421 | inherits: 2.0.3 1422 | setprototypeof: 1.0.3 1423 | statuses: 1.4.0 1424 | dev: false 1425 | engines: 1426 | node: '>= 0.6' 1427 | resolution: 1428 | integrity: sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY= 1429 | /https-browserify/1.0.0: 1430 | dev: false 1431 | resolution: 1432 | integrity: sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= 1433 | /hypercore-archiver/4.4.1: 1434 | dependencies: 1435 | datland-swarm-defaults: 1.0.2 1436 | debug: 2.6.9 1437 | discovery-swarm: 4.4.2 1438 | hypercore: 6.12.2 1439 | hypercore-protocol: 6.5.2 1440 | random-access-file: 1.8.1 1441 | thunky: 1.0.2 1442 | to-buffer: 1.1.0 1443 | xtend: 4.0.1 1444 | dev: false 1445 | resolution: 1446 | integrity: sha512-+LHihQ7Bu8i4U8hLAxMjWnT/tHhxzH4sLARaIG2HzbGcaY2Zyt3JlWCGuC+CLkGcQrtywFvs4qI54scOxJY8iw== 1447 | /hypercore-protocol/6.5.2: 1448 | dependencies: 1449 | inherits: 2.0.3 1450 | protocol-buffers-encodings: 1.1.0 1451 | readable-stream: 2.3.4 1452 | sodium-universal: 2.0.0 1453 | sorted-indexof: 1.0.0 1454 | varint: 5.0.0 1455 | dev: false 1456 | resolution: 1457 | integrity: sha512-wwK00Yk/YypTqHb/D7mAeIupR72zqBzB3EzLYmBkn12M/nbCY8vdeCVtJvh4K00JR2APf5kMUdwboB5S1Z5DBw== 1458 | /hypercore/6.12.2: 1459 | dependencies: 1460 | array-lru: 1.1.1 1461 | atomic-batcher: 1.0.2 1462 | bitfield-rle: 2.1.0 1463 | buffer-equals: 1.0.4 1464 | bulk-write-stream: 1.1.3 1465 | codecs: 1.2.0 1466 | flat-tree: 1.6.0 1467 | from2: 2.3.0 1468 | hypercore-protocol: 6.5.2 1469 | inherits: 2.0.3 1470 | last-one-wins: 1.0.4 1471 | memory-pager: 1.1.0 1472 | merkle-tree-stream: 3.0.3 1473 | process-nextick-args: 1.0.7 1474 | random-access-file: 2.0.1 1475 | sodium-universal: 2.0.0 1476 | sparse-bitfield: 3.0.3 1477 | thunky: 1.0.2 1478 | uint64be: 2.0.1 1479 | unordered-array-remove: 1.0.2 1480 | unordered-set: 2.0.0 1481 | dev: false 1482 | resolution: 1483 | integrity: sha512-Ji9s1FF5IMqXjUX7vLhPVwboabZyxO+eWrE8IKaMMrJJgfV3xBqjtP45eSjowKLH7irX51keSeFTFeNdJSN6dA== 1484 | /hyperdiscovery/7.0.0: 1485 | dependencies: 1486 | datland-swarm-defaults: 1.0.2 1487 | discovery-swarm: 4.4.2 1488 | safe-buffer: 5.1.1 1489 | xtend: 4.0.1 1490 | dev: false 1491 | resolution: 1492 | integrity: sha512-cMH9Q4K1s4kwVkcrmL6Wa00wKw4fhxG6gZZb7c5189NWmHWIO0rNhft3EygjAt26A7QzedwDGSKHnN85o/OJQw== 1493 | /hyperdrive/9.12.3: 1494 | dependencies: 1495 | append-tree: 2.4.1 1496 | duplexify: 3.5.3 1497 | from2: 2.3.0 1498 | hypercore: 6.12.2 1499 | inherits: 2.0.3 1500 | mutexify: 1.2.0 1501 | protocol-buffers-encodings: 1.1.0 1502 | random-access-file: 2.0.1 1503 | sodium-universal: 2.0.0 1504 | stream-collector: 1.0.1 1505 | stream-each: 1.2.2 1506 | thunky: 1.0.2 1507 | uint64be: 2.0.1 1508 | unixify: 1.0.0 1509 | dev: false 1510 | resolution: 1511 | integrity: sha512-Y7mEgEqhfv7kvzPhylKlba6hWRQbvbipgDu6jFQvfDz1wCnGXjIbCKeb28WnOxgl27t38Qilfx/Dy9Qy5qgI+A== 1512 | /hyperscript-attribute-to-property/1.0.0: 1513 | dev: false 1514 | resolution: 1515 | integrity: sha1-glMI1Ju44pV5I/cxmBvMgRytev8= 1516 | /hyperx/2.3.3: 1517 | dependencies: 1518 | hyperscript-attribute-to-property: 1.0.0 1519 | dev: false 1520 | resolution: 1521 | integrity: sha512-EE3FCnKEv+tQSt8yZAsY9bZXknFnsOSw1TWTECrRj+kNd+gt0R/tRHNcoy5uk1F/a7tWd7bjPGQJX/2pfmJglQ== 1522 | /iconv-lite/0.4.19: 1523 | dev: false 1524 | engines: 1525 | node: '>=0.10.0' 1526 | resolution: 1527 | integrity: sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ== 1528 | /ieee754/1.1.8: 1529 | dev: false 1530 | resolution: 1531 | integrity: sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q= 1532 | /indexes-of/1.0.1: 1533 | dev: false 1534 | resolution: 1535 | integrity: sha1-8w9xbI4r00bHtn0985FVZqfAVgc= 1536 | /indexof/0.0.1: 1537 | dev: false 1538 | resolution: 1539 | integrity: sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= 1540 | /individual/3.0.0: 1541 | dev: false 1542 | resolution: 1543 | integrity: sha1-58pPhfiVewGHNPKFdQ3CLsL5hi0= 1544 | /infinity-x/1.0.2: 1545 | dev: false 1546 | resolution: 1547 | integrity: sha512-2Ioz+exrAwlHxFBaDHQIbvUyjKFt0YjIal34/agfzx738aT1zBQwSU5A8Zgb1IQ2r24BtXrkeZZusxE40MyZaQ== 1548 | /inflight/1.0.6: 1549 | dependencies: 1550 | once: 1.4.0 1551 | wrappy: 1.0.2 1552 | dev: false 1553 | resolution: 1554 | integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1555 | /inherits/2.0.1: 1556 | dev: false 1557 | resolution: 1558 | integrity: sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= 1559 | /inherits/2.0.3: 1560 | dev: false 1561 | resolution: 1562 | integrity: sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 1563 | /ini/1.3.5: 1564 | dev: false 1565 | optional: true 1566 | resolution: 1567 | integrity: sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== 1568 | /inject-lr-script/2.1.0: 1569 | dependencies: 1570 | resp-modifier: 6.0.2 1571 | dev: false 1572 | resolution: 1573 | integrity: sha1-5htehMEYczkGy+oB7D10Zpijn2U= 1574 | /inline-source-map/0.6.2: 1575 | dependencies: 1576 | source-map: 0.5.7 1577 | dev: false 1578 | resolution: 1579 | integrity: sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU= 1580 | /insert-css/2.0.0: 1581 | dev: false 1582 | resolution: 1583 | integrity: sha1-610Ql7dUL0x56jBg067gfQU4gPQ= 1584 | /insert-module-globals/7.0.2: 1585 | dependencies: 1586 | JSONStream: 1.3.2 1587 | combine-source-map: 0.7.2 1588 | concat-stream: 1.5.2 1589 | is-buffer: 1.1.6 1590 | lexical-scope: 1.2.0 1591 | process: 0.11.10 1592 | through2: 2.0.3 1593 | xtend: 4.0.1 1594 | dev: false 1595 | resolution: 1596 | integrity: sha512-p3s7g96Nm62MbHRuj9ZXab0DuJNWD7qcmdUXCOQ/ZZn42DtDXfsLill7bq19lDCx3K3StypqUnuE3H2VmIJFUw== 1597 | /internal-ip/3.0.1: 1598 | dependencies: 1599 | default-gateway: 2.7.0 1600 | ipaddr.js: 1.6.0 1601 | dev: false 1602 | engines: 1603 | node: '>=4' 1604 | resolution: 1605 | integrity: sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q== 1606 | /ip-regex/2.1.0: 1607 | dev: false 1608 | engines: 1609 | node: '>=4' 1610 | resolution: 1611 | integrity: sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= 1612 | /ip/1.1.5: 1613 | dev: false 1614 | resolution: 1615 | integrity: sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= 1616 | /ipaddr.js/1.6.0: 1617 | dev: false 1618 | engines: 1619 | node: '>= 0.10' 1620 | resolution: 1621 | integrity: sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs= 1622 | /is-array-buffer-x/1.7.0: 1623 | dependencies: 1624 | attempt-x: 1.1.3 1625 | has-to-string-tag-x: 1.4.1 1626 | is-object-like-x: 1.7.1 1627 | object-get-own-property-descriptor-x: 3.2.0 1628 | to-string-tag-x: 1.4.3 1629 | dev: false 1630 | resolution: 1631 | integrity: sha512-ufSZRMY2WZX5xyNvk0NOZAG7cgi35B/sGQDGqv8w0X7MoQ2GC9vedanJhuYTPaC4PUCqLQsda1w7NF+dPZmAJw== 1632 | /is-binary-path/1.0.1: 1633 | dependencies: 1634 | binary-extensions: 1.11.0 1635 | dev: false 1636 | engines: 1637 | node: '>=0.10.0' 1638 | resolution: 1639 | integrity: sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= 1640 | /is-buffer/1.1.6: 1641 | dev: false 1642 | resolution: 1643 | integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== 1644 | /is-date-object/1.0.1: 1645 | dev: false 1646 | engines: 1647 | node: '>= 0.4' 1648 | resolution: 1649 | integrity: sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= 1650 | /is-dotfile/1.0.3: 1651 | dev: false 1652 | engines: 1653 | node: '>=0.10.0' 1654 | resolution: 1655 | integrity: sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= 1656 | /is-electron/2.1.0: 1657 | dev: false 1658 | resolution: 1659 | integrity: sha512-dkg5xT383+M6zIbbXW/z7n2nz4SFUi2OSyhntnFYkRdtV+HVEfdjEK+5AWisfYgkpe3WYjTIuh7toaKmSfFVWw== 1660 | /is-equal-shallow/0.1.3: 1661 | dependencies: 1662 | is-primitive: 2.0.0 1663 | dev: false 1664 | engines: 1665 | node: '>=0.10.0' 1666 | resolution: 1667 | integrity: sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= 1668 | /is-extendable/0.1.1: 1669 | dev: false 1670 | engines: 1671 | node: '>=0.10.0' 1672 | resolution: 1673 | integrity: sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= 1674 | /is-extglob/1.0.0: 1675 | dev: false 1676 | engines: 1677 | node: '>=0.10.0' 1678 | resolution: 1679 | integrity: sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= 1680 | /is-falsey-x/1.0.3: 1681 | dependencies: 1682 | to-boolean-x: 1.0.3 1683 | dev: false 1684 | resolution: 1685 | integrity: sha512-RWjusR6LXAhGa0Vus7aD1rwJuJwdJsvG3daAVMDvOAgvGuGm4eilNgoSuXhpv2/2qpLDvioAKTNb3t3XYidCNg== 1686 | /is-finite-x/3.0.4: 1687 | dependencies: 1688 | infinity-x: 1.0.2 1689 | is-nan-x: 1.0.3 1690 | dev: false 1691 | resolution: 1692 | integrity: sha512-wdSI5zk/Pl21HzGcLWFoFzuDa8gsgcqhwZGAZryL2eU7RKf7+g+q4jL2gGItrBs/YtspkjOrJ4JxXNZqquoAWA== 1693 | /is-finite/1.0.2: 1694 | dependencies: 1695 | number-is-nan: 1.0.1 1696 | dev: false 1697 | engines: 1698 | node: '>=0.10.0' 1699 | resolution: 1700 | integrity: sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= 1701 | /is-function-x/3.3.0: 1702 | dependencies: 1703 | attempt-x: 1.1.3 1704 | has-to-string-tag-x: 1.4.1 1705 | is-falsey-x: 1.0.3 1706 | is-primitive: 2.0.0 1707 | normalize-space-x: 3.0.0 1708 | replace-comments-x: 2.0.0 1709 | to-boolean-x: 1.0.3 1710 | to-string-tag-x: 1.4.3 1711 | dev: false 1712 | resolution: 1713 | integrity: sha512-SreSSU1dlgYaXR5c0mm4qJHKYHIiGiEY+7Cd8/aRLLoMP/VvofD2XcWgBnP833ajpU5XzXbUSpfysnfKZLJFlg== 1714 | /is-glob/2.0.1: 1715 | dependencies: 1716 | is-extglob: 1.0.0 1717 | dev: false 1718 | engines: 1719 | node: '>=0.10.0' 1720 | resolution: 1721 | integrity: sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= 1722 | /is-index-x/1.1.0: 1723 | dependencies: 1724 | math-clamp-x: 1.2.0 1725 | max-safe-integer: 1.0.1 1726 | to-integer-x: 3.0.0 1727 | to-number-x: 2.0.0 1728 | to-string-symbols-supported-x: 1.0.2 1729 | dev: false 1730 | resolution: 1731 | integrity: sha512-qULKLMepQLGC8rSVdi8uF2vI4LiDrU9XSDg1D+Aa657GIB7GV1jHpga7uXgQvkt/cpQ5mVBHUFTpSehYSqT6+A== 1732 | /is-nan-x/1.0.3: 1733 | dev: false 1734 | resolution: 1735 | integrity: sha512-WenNBLVGSZID8shogsB++42vF7gvotCfneXM9KMCAKwNPXa8VfAu/RWwpqvnK7dLOP4Z7uitocb0TZ6rAiOccA== 1736 | /is-nil-x/1.4.2: 1737 | dependencies: 1738 | lodash.isnull: 3.0.0 1739 | validate.io-undefined: 1.0.3 1740 | dev: false 1741 | resolution: 1742 | integrity: sha512-9aDY7ir7IGb5HlgqL+b38v2YMxf8S7MEHHxjHGzUhijg2crq47RKdxL37bS6dU0VN87wy2IBZP4akgQtIXmyvg== 1743 | /is-number/2.1.0: 1744 | dependencies: 1745 | kind-of: 3.2.2 1746 | dev: false 1747 | engines: 1748 | node: '>=0.10.0' 1749 | resolution: 1750 | integrity: sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= 1751 | /is-number/3.0.0: 1752 | dependencies: 1753 | kind-of: 3.2.2 1754 | dev: false 1755 | engines: 1756 | node: '>=0.10.0' 1757 | resolution: 1758 | integrity: sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= 1759 | /is-object-like-x/1.7.1: 1760 | dependencies: 1761 | is-function-x: 3.3.0 1762 | is-primitive: 3.0.0 1763 | dev: false 1764 | resolution: 1765 | integrity: sha512-89nz+kESAW2Y7udq+PdRX/dZnRN2WP1b19Gdv4OYE1Xjoekn1xf31l0ZPzT40qdPD7I2nveNFm9rxxI0vmnGHA== 1766 | /is-posix-bracket/0.1.1: 1767 | dev: false 1768 | engines: 1769 | node: '>=0.10.0' 1770 | resolution: 1771 | integrity: sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= 1772 | /is-primitive/2.0.0: 1773 | dev: false 1774 | engines: 1775 | node: '>=0.10.0' 1776 | resolution: 1777 | integrity: sha1-IHurkWOEmcB7Kt8kCkGochADRXU= 1778 | /is-primitive/3.0.0: 1779 | dev: false 1780 | engines: 1781 | node: '>=0.10.0' 1782 | resolution: 1783 | integrity: sha512-Qch+MMfMdu7DMY6XElM7LUJKPmkbXdTqNhqyehVflzis2a8Zd9V6U8qZybb32uUSmlO/dNmg3fsA5t0Q9TC0mA== 1784 | /is-stream/1.1.0: 1785 | dev: false 1786 | engines: 1787 | node: '>=0.10.0' 1788 | resolution: 1789 | integrity: sha1-EtSj3U5o4Lec6428hBc66A2RykQ= 1790 | /is-string/1.0.4: 1791 | dev: false 1792 | engines: 1793 | node: '>= 0.4' 1794 | resolution: 1795 | integrity: sha1-zDqbaYV9Yh6WNyWiTK7shzuCbmQ= 1796 | /is-symbol/1.0.1: 1797 | dev: false 1798 | engines: 1799 | node: '>= 0.4' 1800 | resolution: 1801 | integrity: sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI= 1802 | /isarray/0.0.1: 1803 | dev: false 1804 | resolution: 1805 | integrity: sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= 1806 | /isarray/1.0.0: 1807 | dev: false 1808 | resolution: 1809 | integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 1810 | /isexe/2.0.0: 1811 | dev: false 1812 | resolution: 1813 | integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1814 | /isobject/2.1.0: 1815 | dependencies: 1816 | isarray: 1.0.0 1817 | dev: false 1818 | engines: 1819 | node: '>=0.10.0' 1820 | resolution: 1821 | integrity: sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= 1822 | /js-base64/2.4.3: 1823 | dev: false 1824 | resolution: 1825 | integrity: sha512-H7ErYLM34CvDMto3GbD6xD0JLUGYXR3QTcH6B/tr4Hi/QpSThnCsIp+Sy5FRTw3B0d6py4HcNkW7nO/wdtGWEw== 1826 | /json-stable-stringify/0.0.1: 1827 | dependencies: 1828 | jsonify: 0.0.0 1829 | dev: false 1830 | resolution: 1831 | integrity: sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U= 1832 | /json-stringify-safe/5.0.1: 1833 | dev: false 1834 | resolution: 1835 | integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 1836 | /jsonify/0.0.0: 1837 | dev: false 1838 | resolution: 1839 | integrity: sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= 1840 | /jsonparse/1.3.1: 1841 | dev: false 1842 | engines: 1843 | '0': node >= 0.2.0 1844 | resolution: 1845 | integrity: sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= 1846 | /k-bucket/3.3.1: 1847 | dependencies: 1848 | buffer-equals: 1.0.4 1849 | inherits: 2.0.3 1850 | randombytes: 2.0.6 1851 | dev: false 1852 | resolution: 1853 | integrity: sha512-kgwWqYT79rAahn4maIVTP8dIe+m1KulufWW+f1bB9DlZrRFiGpZ4iJOg2HUp4xJYBWONP3+rOPIWF/RXABU6mw== 1854 | /k-rpc-socket/1.8.0: 1855 | dependencies: 1856 | bencode: 2.0.0 1857 | buffer-equals: 1.0.4 1858 | safe-buffer: 5.1.1 1859 | dev: false 1860 | resolution: 1861 | integrity: sha512-f/9TynsO8YYjZ6JjNNtSSH7CJcIHcio1buy3zqByGxb/GX8AWLdL6FZEWTrN8V3/J7W4/E0ZTQQ+Jt2rVq7ELg== 1862 | /k-rpc/4.2.1: 1863 | dependencies: 1864 | buffer-equals: 1.0.4 1865 | k-bucket: 3.3.1 1866 | k-rpc-socket: 1.8.0 1867 | randombytes: 2.0.6 1868 | safe-buffer: 5.1.1 1869 | dev: false 1870 | resolution: 1871 | integrity: sha512-Ft3Yrsobne+zqz1uEyk2Vl0n5KpKROSGI6Ar270ZBmeh7MtTgtucOVeddX5fv2uITMw7cGT6hp8EpeXp4HW5rA== 1872 | /kind-of/3.2.2: 1873 | dependencies: 1874 | is-buffer: 1.1.6 1875 | dev: false 1876 | engines: 1877 | node: '>=0.10.0' 1878 | resolution: 1879 | integrity: sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= 1880 | /kind-of/4.0.0: 1881 | dependencies: 1882 | is-buffer: 1.1.6 1883 | dev: false 1884 | engines: 1885 | node: '>=0.10.0' 1886 | resolution: 1887 | integrity: sha1-IIE989cSkosgc3hpGkUGb65y3Vc= 1888 | /labeled-stream-splicer/2.0.0: 1889 | dependencies: 1890 | inherits: 2.0.3 1891 | isarray: 0.0.1 1892 | stream-splicer: 2.0.0 1893 | dev: false 1894 | resolution: 1895 | integrity: sha1-pS4dE4AkwAuGscDJH2d5GLiuClk= 1896 | /last-one-wins/1.0.4: 1897 | dev: false 1898 | resolution: 1899 | integrity: sha1-wb/Qy8tGeQ7JFWuNGu6Py4bNoio= 1900 | /length-prefixed-message/3.0.3: 1901 | dependencies: 1902 | varint: 3.0.1 1903 | dev: false 1904 | resolution: 1905 | integrity: sha1-JFR01pq8BhTco2jcNaqAdJgqI6w= 1906 | /levn/0.3.0: 1907 | dependencies: 1908 | prelude-ls: 1.1.2 1909 | type-check: 0.3.2 1910 | dev: false 1911 | engines: 1912 | node: '>= 0.8.0' 1913 | resolution: 1914 | integrity: sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= 1915 | /lexical-scope/1.2.0: 1916 | dependencies: 1917 | astw: 2.2.0 1918 | dev: false 1919 | resolution: 1920 | integrity: sha1-/Ope3HBKSzqHls3KQZw6CvryLfQ= 1921 | /lodash.isnull/3.0.0: 1922 | dev: false 1923 | resolution: 1924 | integrity: sha1-+vvlnqHcon7teGU0A53YTC4HxW4= 1925 | /lodash.memoize/3.0.4: 1926 | dev: false 1927 | resolution: 1928 | integrity: sha1-LcvSwofLwKVcxCMovQxzYVDVPj8= 1929 | /lru-cache/4.1.1: 1930 | dependencies: 1931 | pseudomap: 1.0.2 1932 | yallist: 2.1.2 1933 | dev: false 1934 | resolution: 1935 | integrity: sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew== 1936 | /lru/2.0.1: 1937 | dependencies: 1938 | inherits: 2.0.3 1939 | dev: false 1940 | engines: 1941 | node: '>= 0.4.0' 1942 | resolution: 1943 | integrity: sha1-+XmHHhYuP1yiVL5GhExT1MU2RUQ= 1944 | /lru/3.1.0: 1945 | dependencies: 1946 | inherits: 2.0.3 1947 | dev: false 1948 | engines: 1949 | node: '>= 0.4.0' 1950 | resolution: 1951 | integrity: sha1-6n+4VG2DczOWoTCR12z+tMBoN9U= 1952 | /magic-string/0.21.3: 1953 | dependencies: 1954 | vlq: 0.2.3 1955 | dev: false 1956 | resolution: 1957 | integrity: sha1-h+IBAJ6/3m9G3FdXMFpwr3HjFiQ= 1958 | /magic-string/0.22.4: 1959 | dependencies: 1960 | vlq: 0.2.3 1961 | dev: false 1962 | resolution: 1963 | integrity: sha512-kxBL06p6iO2qPBHsqGK2b3cRwiRGpnmSuVWNhwHcMX7qJOUr1HvricYP1LZOCdkQBUp0jiWg2d6WJwR3vYgByw== 1964 | /map-limit/0.0.1: 1965 | dependencies: 1966 | once: 1.3.3 1967 | dev: false 1968 | resolution: 1969 | integrity: sha1-63lhAxwPDo0AG/LVb6toXViCLzg= 1970 | /math-clamp-x/1.2.0: 1971 | dependencies: 1972 | to-number-x: 2.0.0 1973 | dev: false 1974 | resolution: 1975 | integrity: sha512-tqpjpBcIf9UulApz3EjWXqTZpMlr2vLN9PryC9ghoyCuRmqZaf3JJhPddzgQpJnKLi2QhoFnvKBFtJekAIBSYg== 1976 | /math-sign-x/3.0.0: 1977 | dependencies: 1978 | is-nan-x: 1.0.3 1979 | to-number-x: 2.0.0 1980 | dev: false 1981 | resolution: 1982 | integrity: sha512-OzPas41Pn4d16KHnaXmGxxY3/l3zK4OIXtmIwdhgZsxz4FDDcNnbrABYPg2vGfxIkaT9ezGnzDviRH7RfF44jQ== 1983 | /max-safe-integer/1.0.1: 1984 | dev: false 1985 | engines: 1986 | node: '>=0.10.0' 1987 | resolution: 1988 | integrity: sha1-84BgvixWPYwC5tSK85Ei/YO29BA= 1989 | /md5.js/1.3.4: 1990 | dependencies: 1991 | hash-base: 3.0.4 1992 | inherits: 2.0.3 1993 | dev: false 1994 | resolution: 1995 | integrity: sha1-6b296UogpawYsENA/Fdk1bCdkB0= 1996 | /md5/2.2.1: 1997 | dependencies: 1998 | charenc: 0.0.2 1999 | crypt: 0.0.2 2000 | is-buffer: 1.1.6 2001 | dev: false 2002 | resolution: 2003 | integrity: sha1-U6s41f48iJG6RlMp6iP6wFQBJvk= 2004 | /media-typer/0.3.0: 2005 | dev: false 2006 | engines: 2007 | node: '>= 0.6' 2008 | resolution: 2009 | integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= 2010 | /memory-pager/1.1.0: 2011 | dev: false 2012 | resolution: 2013 | integrity: sha512-Mf9OHV/Y7h6YWDxTzX/b4ZZ4oh9NSXblQL8dtPCOomOtZciEHxePR78+uHFLLlsk01A6jVHhHsQZZ/WcIPpnzg== 2014 | /merge-descriptors/1.0.1: 2015 | dev: false 2016 | resolution: 2017 | integrity: sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= 2018 | /merge-source-map/1.0.4: 2019 | dependencies: 2020 | source-map: 0.5.7 2021 | dev: false 2022 | resolution: 2023 | integrity: sha1-pd5GU42uhNQRTMXqArR3KmNGcB8= 2024 | /merkle-tree-stream/3.0.3: 2025 | dependencies: 2026 | flat-tree: 1.6.0 2027 | readable-stream: 2.3.4 2028 | dev: false 2029 | resolution: 2030 | integrity: sha1-+KBkdg0355eK1fn208EZpJT1cIE= 2031 | /methods/1.1.2: 2032 | dev: false 2033 | engines: 2034 | node: '>= 0.6' 2035 | resolution: 2036 | integrity: sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= 2037 | /micromatch/2.3.11: 2038 | dependencies: 2039 | arr-diff: 2.0.0 2040 | array-unique: 0.2.1 2041 | braces: 1.8.5 2042 | expand-brackets: 0.1.5 2043 | extglob: 0.3.2 2044 | filename-regex: 2.0.1 2045 | is-extglob: 1.0.0 2046 | is-glob: 2.0.1 2047 | kind-of: 3.2.2 2048 | normalize-path: 2.1.1 2049 | object.omit: 2.0.1 2050 | parse-glob: 3.0.4 2051 | regex-cache: 0.4.4 2052 | dev: false 2053 | engines: 2054 | node: '>=0.10.0' 2055 | resolution: 2056 | integrity: sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= 2057 | /miller-rabin/4.0.1: 2058 | dependencies: 2059 | bn.js: 4.11.8 2060 | brorand: 1.1.0 2061 | dev: false 2062 | resolution: 2063 | integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== 2064 | /mime-db/1.33.0: 2065 | dev: false 2066 | engines: 2067 | node: '>= 0.6' 2068 | resolution: 2069 | integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== 2070 | /mime-types/2.1.18: 2071 | dependencies: 2072 | mime-db: 1.33.0 2073 | dev: false 2074 | engines: 2075 | node: '>= 0.6' 2076 | resolution: 2077 | integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== 2078 | /mime/1.4.1: 2079 | dev: false 2080 | resolution: 2081 | integrity: sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== 2082 | /min-document/2.19.0: 2083 | dependencies: 2084 | dom-walk: 0.1.1 2085 | dev: false 2086 | resolution: 2087 | integrity: sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= 2088 | /minimalistic-assert/1.0.0: 2089 | dev: false 2090 | resolution: 2091 | integrity: sha1-cCvi3aazf0g2vLP121ZkG2Sh09M= 2092 | /minimalistic-crypto-utils/1.0.1: 2093 | dev: false 2094 | resolution: 2095 | integrity: sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= 2096 | /minimatch/3.0.4: 2097 | dependencies: 2098 | brace-expansion: 1.1.11 2099 | dev: false 2100 | resolution: 2101 | integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 2102 | /minimist/0.0.8: 2103 | dev: false 2104 | resolution: 2105 | integrity: sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 2106 | /minimist/1.2.0: 2107 | dev: false 2108 | resolution: 2109 | integrity: sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= 2110 | /mkdirp/0.5.1: 2111 | dependencies: 2112 | minimist: 0.0.8 2113 | dev: false 2114 | resolution: 2115 | integrity: sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 2116 | /module-deps/5.0.1: 2117 | dependencies: 2118 | JSONStream: 1.3.2 2119 | browser-resolve: 1.11.2 2120 | cached-path-relative: 1.0.1 2121 | concat-stream: 1.6.1 2122 | defined: 1.0.0 2123 | detective: 5.1.0 2124 | duplexer2: 0.1.4 2125 | inherits: 2.0.3 2126 | parents: 1.0.1 2127 | readable-stream: 2.3.4 2128 | resolve: 1.5.0 2129 | stream-combiner2: 1.1.1 2130 | subarg: 1.0.0 2131 | through2: 2.0.3 2132 | xtend: 4.0.1 2133 | dev: false 2134 | engines: 2135 | node: '>= 0.8.0' 2136 | resolution: 2137 | integrity: sha512-sigq/hm/L+Z5IGi1DDl0x2ptkw7S86aFh213QhPLD8v9Opv90IHzKIuWJrRa5bJ77DVKHco2CfIEuThcT/vDJA== 2138 | /ms/2.0.0: 2139 | dev: false 2140 | resolution: 2141 | integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 2142 | /multicast-dns/6.2.3: 2143 | dependencies: 2144 | dns-packet: 1.3.1 2145 | thunky: 1.0.2 2146 | dev: false 2147 | resolution: 2148 | integrity: sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== 2149 | /mutexify/1.2.0: 2150 | dev: false 2151 | resolution: 2152 | integrity: sha512-oprzxd2zhfrJqEuB98qc1dRMMonClBQ57UPDjnbcrah4orEMTq1jq3+AcdFe5ePzdbJXI7zmdhfftIdMnhYFoQ== 2153 | /nan-x/1.0.2: 2154 | dev: false 2155 | resolution: 2156 | integrity: sha512-dndRmy03JQEN+Nh6WjQl7/OstIozeEmrtWe4TE7mEqJ8W8oMD8m2tHjsLPWt//e3hLAeRSbs4pxMyc5pk/nCkQ== 2157 | /nan/2.9.2: 2158 | dev: false 2159 | optional: true 2160 | resolution: 2161 | integrity: sha512-ltW65co7f3PQWBDbqVvaU1WtFJUsNW7sWWm4HINhbMQIyVyzIeyZ8toX5TC5eeooE6piZoaEh4cZkueSKG3KYw== 2162 | /nanoassert/1.1.0: 2163 | dev: false 2164 | resolution: 2165 | integrity: sha1-TzFS4JVA/eKMdvRLGbvNHVpCR40= 2166 | /nanobus/4.3.3: 2167 | dependencies: 2168 | nanotiming: 7.3.0 2169 | remove-array-items: 1.0.0 2170 | dev: false 2171 | resolution: 2172 | integrity: sha512-4/uzl+LkMGoVv/9eMzH2QFvefmlJErT0KR7EmuYbmht2QvxSEqTjhFFOZ/KHE6chH58fKL3njrOcEwbYV0h9Yw== 2173 | /nanocomponent/6.5.1: 2174 | dependencies: 2175 | global: 4.3.2 2176 | nanoassert: 1.1.0 2177 | nanomorph: 5.1.3 2178 | nanotiming: 7.3.0 2179 | on-load: 3.4.0 2180 | dev: false 2181 | resolution: 2182 | integrity: sha512-cm3gWVTdDintnWJ2SrXnnEOgwGb61HzZXKz4olydWC+IbQzvZIj1Gj7daZA8FAc53aE/wOPWIrJhUkjUp/X0Yw== 2183 | /nanohref/3.0.1: 2184 | dev: false 2185 | resolution: 2186 | integrity: sha512-YfDhNcglFDIISfKVnXHovDaaglTauD2ThidaTZuyV6NE0lQMvGs5UfSoa1GvX6Nd9p2TfFeYzzc+TtjH+htu+Q== 2187 | /nanolocation/1.0.0: 2188 | dev: false 2189 | resolution: 2190 | integrity: sha1-FbXHrwWJXRqfIfDRNkldmURQaGs= 2191 | /nanomorph/5.1.3: 2192 | dependencies: 2193 | nanoassert: 1.1.0 2194 | dev: false 2195 | resolution: 2196 | integrity: sha512-VydkKjFWU/DAO0R10awFASRNXQKHrZUMdMIiNcdmWm+IhuifuPOw/dDtpiQ1cNROF8f3ATPrcKRVarEayQJOqA== 2197 | /nanoquery/1.2.0: 2198 | dependencies: 2199 | nanoassert: 1.1.0 2200 | dev: false 2201 | resolution: 2202 | integrity: sha512-o4JC1cLsNSu8gLMLeALBFPzILMPyc3HltXT0727vncM29N1qB802oQyza3lQRjI9iylRRK0X5jjTjiPZyCw0gg== 2203 | /nanoraf/3.0.1: 2204 | dev: false 2205 | resolution: 2206 | integrity: sha1-q5+5wle5rcxx2CmCy1jY+jUDdko= 2207 | /nanorouter/3.0.1: 2208 | dependencies: 2209 | wayfarer: 6.6.3 2210 | dev: false 2211 | resolution: 2212 | integrity: sha512-i3PLabdN+Lc7agnJ3dTgQSHy5e5xOyuAeoIvPC0hlLOlFegt95mlg9xFhFC17+PK0A1iP6ev2FCkSMMTVt6zUA== 2213 | /nanoscheduler/1.0.2: 2214 | dependencies: 2215 | nanoassert: 1.1.0 2216 | dev: false 2217 | resolution: 2218 | integrity: sha512-hYNfVK18oB14U/We4smU0XGFwnah9J60TrhiUw5GLFCMgyHb+rhFVQ/ZovIq7UH8nUnXbpfUq6IJqbdjN9JR/w== 2219 | /nanotiming/7.3.0: 2220 | dependencies: 2221 | nanoscheduler: 1.0.2 2222 | dev: false 2223 | resolution: 2224 | integrity: sha512-lNJ8Ch+fI2yIt9tlgO3G/1Md00S23FghTFVYqKnXseIegcRgHg/fEm7Abw8Imakk0fpNGiK9eSSlopnsE61uMw== 2225 | /negotiator/0.6.1: 2226 | dev: false 2227 | engines: 2228 | node: '>= 0.6' 2229 | resolution: 2230 | integrity: sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= 2231 | /network-address/1.1.2: 2232 | dev: false 2233 | resolution: 2234 | integrity: sha1-Sqe/1D8D8LgclwKxPWqFjdsybz4= 2235 | /next-tick/1.0.0: 2236 | dev: false 2237 | resolution: 2238 | integrity: sha1-yobR/ogoFpsBICCOPchCS524NCw= 2239 | /node-gyp-build/3.2.2: 2240 | dev: false 2241 | optional: true 2242 | resolution: 2243 | integrity: sha512-t8W/0UqFGl1c+5ORA3NoT3npU+PxWBL9iPhY7ZySSTszodj3RWexmu8niayWBE0v+0DLARvOXsjaAvfmSEQOyQ== 2244 | /normalize-path/2.1.1: 2245 | dependencies: 2246 | remove-trailing-separator: 1.1.0 2247 | dev: false 2248 | engines: 2249 | node: '>=0.10.0' 2250 | resolution: 2251 | integrity: sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= 2252 | /normalize-space-x/3.0.0: 2253 | dependencies: 2254 | cached-constructors-x: 1.0.2 2255 | trim-x: 3.0.0 2256 | white-space-x: 3.0.1 2257 | dev: false 2258 | resolution: 2259 | integrity: sha512-tbCJerqZCCHPst4rRKgsTanLf45fjOyeAU5zE3mhDxJtFJKt66q39g2XArWhXelgTFVib8mNBUm6Wrd0LxYcfQ== 2260 | /npm-run-path/2.0.2: 2261 | dependencies: 2262 | path-key: 2.0.1 2263 | dev: false 2264 | engines: 2265 | node: '>=4' 2266 | resolution: 2267 | integrity: sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= 2268 | /number-is-nan/1.0.1: 2269 | dev: false 2270 | engines: 2271 | node: '>=0.10.0' 2272 | resolution: 2273 | integrity: sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= 2274 | /object-assign/4.1.1: 2275 | dev: false 2276 | engines: 2277 | node: '>=0.10.0' 2278 | resolution: 2279 | integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 2280 | /object-get-own-property-descriptor-x/3.2.0: 2281 | dependencies: 2282 | attempt-x: 1.1.3 2283 | has-own-property-x: 3.2.0 2284 | has-symbol-support-x: 1.4.2 2285 | is-falsey-x: 1.0.3 2286 | is-index-x: 1.1.0 2287 | is-primitive: 2.0.0 2288 | is-string: 1.0.4 2289 | property-is-enumerable-x: 1.1.0 2290 | to-object-x: 1.5.0 2291 | to-property-key-x: 2.0.2 2292 | dev: false 2293 | resolution: 2294 | integrity: sha512-Z/0fIrptD9YuzN+SNK/1kxAEaBcPQM4gSrtOSMSi9eplnL/AbyQcAyAlreAoAzmBon+DQ1Z+AdhxyQSvav5Fyg== 2295 | /object-inspect/1.4.1: 2296 | dev: false 2297 | resolution: 2298 | integrity: sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw== 2299 | /object-keys/1.0.11: 2300 | dev: false 2301 | engines: 2302 | node: '>= 0.4' 2303 | resolution: 2304 | integrity: sha1-xUYBd4rVYPEULODgG8yotW0TQm0= 2305 | /object.omit/2.0.1: 2306 | dependencies: 2307 | for-own: 0.1.5 2308 | is-extendable: 0.1.1 2309 | dev: false 2310 | engines: 2311 | node: '>=0.10.0' 2312 | resolution: 2313 | integrity: sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= 2314 | /on-finished/2.3.0: 2315 | dependencies: 2316 | ee-first: 1.1.1 2317 | dev: false 2318 | engines: 2319 | node: '>= 0.8' 2320 | resolution: 2321 | integrity: sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= 2322 | /on-headers/1.0.1: 2323 | dev: false 2324 | engines: 2325 | node: '>= 0.8' 2326 | resolution: 2327 | integrity: sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c= 2328 | /on-load/3.4.0: 2329 | dependencies: 2330 | global: 4.3.2 2331 | nanoassert: 1.1.0 2332 | dev: false 2333 | resolution: 2334 | integrity: sha512-p+fRMvrBSGVisUWz+2jOAO/F3oecpIcgs0m6nBjyytTnalwFQkOvRg6s8B94oPiV83ot+dq+2vZnHrnkVpom0g== 2335 | /once/1.3.3: 2336 | dependencies: 2337 | wrappy: 1.0.2 2338 | dev: false 2339 | resolution: 2340 | integrity: sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA= 2341 | /once/1.4.0: 2342 | dependencies: 2343 | wrappy: 1.0.2 2344 | dev: false 2345 | resolution: 2346 | integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 2347 | /opn/3.0.3: 2348 | dependencies: 2349 | object-assign: 4.1.1 2350 | dev: false 2351 | engines: 2352 | node: '>=0.10.0' 2353 | resolution: 2354 | integrity: sha1-ttmec5n3jWXDuq/+8fsojpuFJDo= 2355 | /optionator/0.8.2: 2356 | dependencies: 2357 | deep-is: 0.1.3 2358 | fast-levenshtein: 2.0.6 2359 | levn: 0.3.0 2360 | prelude-ls: 1.1.2 2361 | type-check: 0.3.2 2362 | wordwrap: 1.0.0 2363 | dev: false 2364 | engines: 2365 | node: '>= 0.8.0' 2366 | resolution: 2367 | integrity: sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= 2368 | /options/0.0.6: 2369 | dev: false 2370 | engines: 2371 | node: '>=0.4.0' 2372 | resolution: 2373 | integrity: sha1-7CLTEoBrtT5zF3Pnza788cZDEo8= 2374 | /os-browserify/0.3.0: 2375 | dev: false 2376 | resolution: 2377 | integrity: sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= 2378 | /os-tmpdir/1.0.2: 2379 | dev: false 2380 | engines: 2381 | node: '>=0.10.0' 2382 | resolution: 2383 | integrity: sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 2384 | /outpipe/1.1.1: 2385 | dependencies: 2386 | shell-quote: 1.6.1 2387 | dev: false 2388 | resolution: 2389 | integrity: sha1-UM+GFjZeh+Ax4ppeyTOaPaRyX6I= 2390 | /p-finally/1.0.0: 2391 | dev: false 2392 | engines: 2393 | node: '>=4' 2394 | resolution: 2395 | integrity: sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= 2396 | /pad-left/2.1.0: 2397 | dependencies: 2398 | repeat-string: 1.6.1 2399 | dev: false 2400 | engines: 2401 | node: '>=0.10.0' 2402 | resolution: 2403 | integrity: sha1-FuajstRKjhOMsIOMx8tAOk/J6ZQ= 2404 | /pad-right/0.2.2: 2405 | dependencies: 2406 | repeat-string: 1.6.1 2407 | dev: false 2408 | engines: 2409 | node: '>=0.10.0' 2410 | resolution: 2411 | integrity: sha1-b7ySQEXSRPKiokRQMGDTv8YAl3Q= 2412 | /pako/1.0.6: 2413 | dev: false 2414 | resolution: 2415 | integrity: sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg== 2416 | /parents/1.0.1: 2417 | dependencies: 2418 | path-platform: 0.11.15 2419 | dev: false 2420 | resolution: 2421 | integrity: sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E= 2422 | /parse-asn1/5.1.0: 2423 | dependencies: 2424 | asn1.js: 4.10.1 2425 | browserify-aes: 1.1.1 2426 | create-hash: 1.1.3 2427 | evp_bytestokey: 1.0.3 2428 | pbkdf2: 3.0.14 2429 | dev: false 2430 | resolution: 2431 | integrity: sha1-N8T5t+06tlx0gXtfJICTf7+XxxI= 2432 | /parse-glob/3.0.4: 2433 | dependencies: 2434 | glob-base: 0.3.0 2435 | is-dotfile: 1.0.3 2436 | is-extglob: 1.0.0 2437 | is-glob: 2.0.1 2438 | dev: false 2439 | engines: 2440 | node: '>=0.10.0' 2441 | resolution: 2442 | integrity: sha1-ssN2z7EfNVE7rdFz7wu246OIORw= 2443 | /parse-int-x/2.0.0: 2444 | dependencies: 2445 | cached-constructors-x: 1.0.2 2446 | nan-x: 1.0.2 2447 | to-string-x: 1.4.5 2448 | trim-left-x: 3.0.0 2449 | dev: false 2450 | resolution: 2451 | integrity: sha512-NIMm52gmd1+0qxJK8lV3OZ4zzWpRH1xcz9xCHXl+DNzddwUdS4NEtd7BmTeK7iCIXoaK5e6BoDMHgieH2eNIhg== 2452 | /parse-ms/1.0.1: 2453 | dev: false 2454 | engines: 2455 | node: '>=0.10.0' 2456 | resolution: 2457 | integrity: sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0= 2458 | /parseurl/1.3.2: 2459 | dev: false 2460 | engines: 2461 | node: '>= 0.8' 2462 | resolution: 2463 | integrity: sha1-/CidTtiZMRlGDBViUyYs3I3mW/M= 2464 | /path-browserify/0.0.0: 2465 | dev: false 2466 | resolution: 2467 | integrity: sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo= 2468 | /path-is-absolute/1.0.1: 2469 | dev: false 2470 | engines: 2471 | node: '>=0.10.0' 2472 | resolution: 2473 | integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 2474 | /path-key/2.0.1: 2475 | dev: false 2476 | engines: 2477 | node: '>=4' 2478 | resolution: 2479 | integrity: sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 2480 | /path-parse/1.0.5: 2481 | dev: false 2482 | resolution: 2483 | integrity: sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME= 2484 | /path-platform/0.11.15: 2485 | dev: false 2486 | engines: 2487 | node: '>= 0.8.0' 2488 | resolution: 2489 | integrity: sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I= 2490 | /path-to-regexp/0.1.7: 2491 | dev: false 2492 | resolution: 2493 | integrity: sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= 2494 | /pbkdf2/3.0.14: 2495 | dependencies: 2496 | create-hash: 1.1.3 2497 | create-hmac: 1.1.6 2498 | ripemd160: 2.0.1 2499 | safe-buffer: 5.1.1 2500 | sha.js: 2.4.10 2501 | dev: false 2502 | engines: 2503 | node: '>=0.12' 2504 | resolution: 2505 | integrity: sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA== 2506 | /pelo/0.1.0: 2507 | dev: false 2508 | resolution: 2509 | integrity: sha512-+oVixa69fxS/X+3s1DaSJVQLG/ukHfjK2pHCmpIgjRChp73lnAfbqOYZ0MEo5C5yVkYeUJSoWAcRK0lx0hvOjQ== 2510 | /pem/1.12.3: 2511 | dependencies: 2512 | md5: 2.2.1 2513 | os-tmpdir: 1.0.2 2514 | safe-buffer: 5.1.1 2515 | which: 1.3.0 2516 | dev: false 2517 | engines: 2518 | node: '>=4.0.0' 2519 | resolution: 2520 | integrity: sha512-hT7GwvQL35+0iqgYUl8vn5I5pAVR0HcJas07TXL8bNaR4c5kAFRquk4ZqQk1F9YMcQOr6WjGdY5OnDC0RBnzig== 2521 | /plur/1.0.0: 2522 | dev: false 2523 | engines: 2524 | node: '>=0.10.0' 2525 | resolution: 2526 | integrity: sha1-24XGgU9eXlo7Se/CjWBP7GKXUVY= 2527 | /postcss-prefix/2.1.1: 2528 | dependencies: 2529 | postcss: 5.2.18 2530 | postcss-selector-parser: 1.3.3 2531 | dev: false 2532 | resolution: 2533 | integrity: sha512-S1G40iScgg/V/P6MPqPH0+B0KDc5LpN2zoEERQGywftZ3IbIESJDsz984n3ZPDFycT2NZ1nGJx/eC6oJX8xKTg== 2534 | /postcss-selector-parser/1.3.3: 2535 | dependencies: 2536 | flatten: 1.0.2 2537 | indexes-of: 1.0.1 2538 | uniq: 1.0.1 2539 | dev: false 2540 | resolution: 2541 | integrity: sha1-0u4Z33pk+O8hwacchvfUg1yIwoE= 2542 | /postcss/5.2.18: 2543 | dependencies: 2544 | chalk: 1.1.3 2545 | js-base64: 2.4.3 2546 | source-map: 0.5.7 2547 | supports-color: 3.2.3 2548 | dev: false 2549 | engines: 2550 | node: '>=0.12' 2551 | resolution: 2552 | integrity: sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== 2553 | /prelude-ls/1.1.2: 2554 | dev: false 2555 | engines: 2556 | node: '>= 0.8.0' 2557 | resolution: 2558 | integrity: sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= 2559 | /preserve/0.2.0: 2560 | dev: false 2561 | engines: 2562 | node: '>=0.10.0' 2563 | resolution: 2564 | integrity: sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= 2565 | /prettier-bytes/1.0.4: 2566 | dev: false 2567 | resolution: 2568 | integrity: sha1-mUsCqkb2mcULYle1+qp/4lV+YtY= 2569 | /pretty-hash/1.0.1: 2570 | dev: false 2571 | resolution: 2572 | integrity: sha1-FuBXkYje9WvbVliSvNBaXWUySAc= 2573 | /pretty-ms/2.1.0: 2574 | dependencies: 2575 | is-finite: 1.0.2 2576 | parse-ms: 1.0.1 2577 | plur: 1.0.0 2578 | dev: false 2579 | engines: 2580 | node: '>=0.10.0' 2581 | resolution: 2582 | integrity: sha1-QlfCVt8/sLRR1q/6qwIYhBJpgdw= 2583 | /process-nextick-args/1.0.7: 2584 | dev: false 2585 | resolution: 2586 | integrity: sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= 2587 | /process-nextick-args/2.0.0: 2588 | dev: false 2589 | resolution: 2590 | integrity: sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== 2591 | /process/0.11.10: 2592 | dev: false 2593 | engines: 2594 | node: '>= 0.6.0' 2595 | resolution: 2596 | integrity: sha1-czIwDoQBYb2j5podHZGn1LwW8YI= 2597 | /process/0.5.2: 2598 | dev: false 2599 | engines: 2600 | node: '>= 0.6.0' 2601 | resolution: 2602 | integrity: sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8= 2603 | /property-is-enumerable-x/1.1.0: 2604 | dependencies: 2605 | to-object-x: 1.5.0 2606 | to-property-key-x: 2.0.2 2607 | dev: false 2608 | resolution: 2609 | integrity: sha512-22cKy3w3OpRswU6to9iKWDDlg+F9vF2REcwGlGW23jyLjHb1U/jJEWA44sWupOnkhGfDgotU6Lw+N2oyhNi+5A== 2610 | /protocol-buffers-encodings/1.1.0: 2611 | dependencies: 2612 | signed-varint: 2.0.1 2613 | varint: 5.0.0 2614 | dev: false 2615 | resolution: 2616 | integrity: sha512-SmjEuAf3hc3h3rWZ6V1YaaQw2MNJWK848gLJgzx/sefOJdNLujKinJVXIS0q2cBQpQn2Q32TinawZyDZPzm4kQ== 2617 | /proxy-addr/2.0.3: 2618 | dependencies: 2619 | forwarded: 0.1.2 2620 | ipaddr.js: 1.6.0 2621 | dev: false 2622 | engines: 2623 | node: '>= 0.10' 2624 | resolution: 2625 | integrity: sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ== 2626 | /pseudomap/1.0.2: 2627 | dev: false 2628 | resolution: 2629 | integrity: sha1-8FKijacOYYkX7wqKw0wa5aaChrM= 2630 | /public-encrypt/4.0.0: 2631 | dependencies: 2632 | bn.js: 4.11.8 2633 | browserify-rsa: 4.0.1 2634 | create-hash: 1.1.3 2635 | parse-asn1: 5.1.0 2636 | randombytes: 2.0.6 2637 | dev: false 2638 | resolution: 2639 | integrity: sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY= 2640 | /pump/1.0.3: 2641 | dependencies: 2642 | end-of-stream: 1.4.1 2643 | once: 1.4.0 2644 | dev: false 2645 | resolution: 2646 | integrity: sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw== 2647 | /punycode/1.3.2: 2648 | dev: false 2649 | resolution: 2650 | integrity: sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= 2651 | /punycode/1.4.1: 2652 | dev: false 2653 | resolution: 2654 | integrity: sha1-wNWmOycYgArY4esPpSachN1BhF4= 2655 | /qs/6.5.1: 2656 | dev: false 2657 | engines: 2658 | node: '>=0.6' 2659 | resolution: 2660 | integrity: sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A== 2661 | /query-string/4.3.4: 2662 | dependencies: 2663 | object-assign: 4.1.1 2664 | strict-uri-encode: 1.1.0 2665 | dev: false 2666 | engines: 2667 | node: '>=0.10.0' 2668 | resolution: 2669 | integrity: sha1-u7aTucqRXCMlFbIosaArYJBD2+s= 2670 | /querystring-es3/0.2.1: 2671 | dev: false 2672 | engines: 2673 | node: '>=0.4.x' 2674 | resolution: 2675 | integrity: sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= 2676 | /querystring/0.2.0: 2677 | dev: false 2678 | engines: 2679 | node: '>=0.4.x' 2680 | resolution: 2681 | integrity: sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= 2682 | /quote-stream/1.0.2: 2683 | dependencies: 2684 | buffer-equal: 0.0.1 2685 | minimist: 1.2.0 2686 | through2: 2.0.3 2687 | dev: false 2688 | resolution: 2689 | integrity: sha1-hJY/jJwmuULhU/7rU6rnRlK34LI= 2690 | /random-access-file/1.8.1: 2691 | dependencies: 2692 | buffer-alloc-unsafe: 1.0.0 2693 | debug: 2.6.9 2694 | inherits: 2.0.3 2695 | mkdirp: 0.5.1 2696 | thunky: 1.0.2 2697 | dev: false 2698 | resolution: 2699 | integrity: sha512-+Uhk0Of+dWHWjpbL2hizcwSV1UomcN3S0iUGV6BTZ2Js1BP9jHx3E5CT7y0eLbqTQNkVi4iehkHmia7Mdqa47w== 2700 | /random-access-file/2.0.1: 2701 | dependencies: 2702 | mkdirp: 0.5.1 2703 | random-access-storage: 1.1.1 2704 | dev: false 2705 | resolution: 2706 | integrity: sha512-nb4fClpzoUY+v1SHrro+9yykN90eMA1rc+xM39tnZ5R3BgFY+J/NxPZ0KuUpishEsvnwou9Fvm2wa3cjeuG7vg== 2707 | /random-access-idb/1.0.4: 2708 | dependencies: 2709 | abstract-random-access: 1.1.2 2710 | buffer-alloc: 1.1.0 2711 | buffer-from: 0.1.1 2712 | inherits: 2.0.3 2713 | mutexify: 1.2.0 2714 | next-tick: 1.0.0 2715 | once: 1.4.0 2716 | dev: false 2717 | resolution: 2718 | integrity: sha1-ZzQcDfjmWt9DLuQu/99hpSjw+Ck= 2719 | /random-access-memory/2.4.0: 2720 | dependencies: 2721 | process-nextick-args: 1.0.7 2722 | dev: false 2723 | resolution: 2724 | integrity: sha1-cvPYZbS1WiWYeUc+L7LeNWnGnuI= 2725 | /random-access-storage/1.1.1: 2726 | dependencies: 2727 | inherits: 2.0.3 2728 | dev: false 2729 | resolution: 2730 | integrity: sha512-YQK8Qb2d2QSjIcrKb1W4szghj4cvWTCjRN6T8Fhp0+tXHHgY14EIHxY5HJhbeBAl5sMxhQ8+6guUgerJniyuWw== 2731 | /randomatic/1.1.7: 2732 | dependencies: 2733 | is-number: 3.0.0 2734 | kind-of: 4.0.0 2735 | dev: false 2736 | engines: 2737 | node: '>= 0.10.0' 2738 | resolution: 2739 | integrity: sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how== 2740 | /randombytes/2.0.6: 2741 | dependencies: 2742 | safe-buffer: 5.1.1 2743 | dev: false 2744 | resolution: 2745 | integrity: sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A== 2746 | /randomfill/1.0.4: 2747 | dependencies: 2748 | randombytes: 2.0.6 2749 | safe-buffer: 5.1.1 2750 | dev: false 2751 | resolution: 2752 | integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== 2753 | /range-parser/1.2.0: 2754 | dev: false 2755 | engines: 2756 | node: '>= 0.6' 2757 | resolution: 2758 | integrity: sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= 2759 | /raw-body/2.3.2: 2760 | dependencies: 2761 | bytes: 3.0.0 2762 | http-errors: 1.6.2 2763 | iconv-lite: 0.4.19 2764 | unpipe: 1.0.0 2765 | dev: false 2766 | engines: 2767 | node: '>= 0.8' 2768 | resolution: 2769 | integrity: sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k= 2770 | /read-only-stream/2.0.0: 2771 | dependencies: 2772 | readable-stream: 2.3.4 2773 | dev: false 2774 | resolution: 2775 | integrity: sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A= 2776 | /readable-stream/1.0.34: 2777 | dependencies: 2778 | core-util-is: 1.0.2 2779 | inherits: 2.0.3 2780 | isarray: 0.0.1 2781 | string_decoder: 0.10.31 2782 | dev: false 2783 | resolution: 2784 | integrity: sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= 2785 | /readable-stream/2.0.6: 2786 | dependencies: 2787 | core-util-is: 1.0.2 2788 | inherits: 2.0.3 2789 | isarray: 1.0.0 2790 | process-nextick-args: 1.0.7 2791 | string_decoder: 0.10.31 2792 | util-deprecate: 1.0.2 2793 | dev: false 2794 | resolution: 2795 | integrity: sha1-j5A0HmilPMySh4jaz80Rs265t44= 2796 | /readable-stream/2.3.4: 2797 | dependencies: 2798 | core-util-is: 1.0.2 2799 | inherits: 2.0.3 2800 | isarray: 1.0.0 2801 | process-nextick-args: 2.0.0 2802 | safe-buffer: 5.1.1 2803 | string_decoder: 1.0.3 2804 | util-deprecate: 1.0.2 2805 | dev: false 2806 | resolution: 2807 | integrity: sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ== 2808 | /readdirp/2.1.0: 2809 | dependencies: 2810 | graceful-fs: 4.1.11 2811 | minimatch: 3.0.4 2812 | readable-stream: 2.3.4 2813 | set-immediate-shim: 1.0.1 2814 | dev: false 2815 | engines: 2816 | node: '>=0.6' 2817 | resolution: 2818 | integrity: sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg= 2819 | /regex-cache/0.4.4: 2820 | dependencies: 2821 | is-equal-shallow: 0.1.3 2822 | dev: false 2823 | engines: 2824 | node: '>=0.10.0' 2825 | resolution: 2826 | integrity: sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== 2827 | /reload-css/1.0.2: 2828 | dependencies: 2829 | query-string: 4.3.4 2830 | dev: false 2831 | resolution: 2832 | integrity: sha1-avsRFi4jFP7M2tbcX96CH9cxgzE= 2833 | /remove-array-items/1.0.0: 2834 | dev: false 2835 | resolution: 2836 | integrity: sha1-B79CyzMvTPboXq2DteToltIyayE= 2837 | /remove-trailing-separator/1.1.0: 2838 | dev: false 2839 | resolution: 2840 | integrity: sha1-wkvOKig62tW8P1jg1IJJuSN52O8= 2841 | /repeat-element/1.1.2: 2842 | dev: false 2843 | engines: 2844 | node: '>=0.10.0' 2845 | resolution: 2846 | integrity: sha1-7wiaF40Ug7quTZPrmLT55OEdmQo= 2847 | /repeat-string/1.6.1: 2848 | dev: false 2849 | engines: 2850 | node: '>=0.10' 2851 | resolution: 2852 | integrity: sha1-jcrkcOHIirwtYA//Sndihtp15jc= 2853 | /replace-comments-x/2.0.0: 2854 | dependencies: 2855 | require-coercible-to-string-x: 1.0.2 2856 | to-string-x: 1.4.5 2857 | dev: false 2858 | resolution: 2859 | integrity: sha512-+vMP4jqU+8HboLWms6YMNEiaZG5hh1oR6ENCnGYDF/UQ7aYiJUK/8tcl3+KZAHRCKKa3gqzrfiarlUBHQSgRlg== 2860 | /require-coercible-to-string-x/1.0.2: 2861 | dependencies: 2862 | require-object-coercible-x: 1.4.3 2863 | to-string-x: 1.4.5 2864 | dev: false 2865 | resolution: 2866 | integrity: sha512-GZ3BSCL0n/zhho8ITganW9FGPh0Kxhq71nCjck8Qau/30Wf4Po8a3XpQdzEMFiXCwZ/0m0E3lKSdSG8gkcIofQ== 2867 | /require-object-coercible-x/1.4.3: 2868 | dependencies: 2869 | is-nil-x: 1.4.2 2870 | dev: false 2871 | resolution: 2872 | integrity: sha512-5wEaS+NIiU5HLJQTqBQ+6XHtX7yplUS374j/H/nRDlc7rMWfENqp026jnUHWAOCZ+ekixkXuFHEnTF28oqqVLA== 2873 | /resolve/1.1.7: 2874 | dev: false 2875 | resolution: 2876 | integrity: sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= 2877 | /resolve/1.5.0: 2878 | dependencies: 2879 | path-parse: 1.0.5 2880 | dev: false 2881 | resolution: 2882 | integrity: sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw== 2883 | /resp-modifier/6.0.2: 2884 | dependencies: 2885 | debug: 2.6.9 2886 | minimatch: 3.0.4 2887 | dev: false 2888 | engines: 2889 | node: '>= 0.8.0' 2890 | resolution: 2891 | integrity: sha1-sSTeXE+6/LpUH0j/pzlw9KpFa08= 2892 | /right-now/1.0.0: 2893 | dev: false 2894 | resolution: 2895 | integrity: sha1-bolgne69fc2vja7Mmuo5z1haCRg= 2896 | /ripemd160/2.0.1: 2897 | dependencies: 2898 | hash-base: 2.0.2 2899 | inherits: 2.0.3 2900 | dev: false 2901 | resolution: 2902 | integrity: sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc= 2903 | /rusha/0.8.13: 2904 | dev: false 2905 | resolution: 2906 | integrity: sha1-mghOe4YLF7/zAVuSxnpqM2GRUTo= 2907 | /safe-buffer/5.0.1: 2908 | dev: false 2909 | resolution: 2910 | integrity: sha1-0mPKVGls2KMGtcplUekt5XkY++c= 2911 | /safe-buffer/5.1.1: 2912 | dev: false 2913 | resolution: 2914 | integrity: sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== 2915 | /scroll-to-anchor/1.1.0: 2916 | dev: false 2917 | resolution: 2918 | integrity: sha1-yZuNLl2VBWdSeHyngJWrdbUgs/0= 2919 | /send/0.16.1: 2920 | dependencies: 2921 | debug: 2.6.9 2922 | depd: 1.1.2 2923 | destroy: 1.0.4 2924 | encodeurl: 1.0.2 2925 | escape-html: 1.0.3 2926 | etag: 1.8.1 2927 | fresh: 0.5.2 2928 | http-errors: 1.6.2 2929 | mime: 1.4.1 2930 | ms: 2.0.0 2931 | on-finished: 2.3.0 2932 | range-parser: 1.2.0 2933 | statuses: 1.3.1 2934 | dev: false 2935 | engines: 2936 | node: '>= 0.8.0' 2937 | resolution: 2938 | integrity: sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A== 2939 | /send/0.16.2: 2940 | dependencies: 2941 | debug: 2.6.9 2942 | depd: 1.1.2 2943 | destroy: 1.0.4 2944 | encodeurl: 1.0.2 2945 | escape-html: 1.0.3 2946 | etag: 1.8.1 2947 | fresh: 0.5.2 2948 | http-errors: 1.6.2 2949 | mime: 1.4.1 2950 | ms: 2.0.0 2951 | on-finished: 2.3.0 2952 | range-parser: 1.2.0 2953 | statuses: 1.4.0 2954 | dev: false 2955 | engines: 2956 | node: '>= 0.8.0' 2957 | resolution: 2958 | integrity: sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== 2959 | /serve-static/1.13.1: 2960 | dependencies: 2961 | encodeurl: 1.0.2 2962 | escape-html: 1.0.3 2963 | parseurl: 1.3.2 2964 | send: 0.16.1 2965 | dev: false 2966 | engines: 2967 | node: '>= 0.8.0' 2968 | resolution: 2969 | integrity: sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ== 2970 | /serve-static/1.13.2: 2971 | dependencies: 2972 | encodeurl: 1.0.2 2973 | escape-html: 1.0.3 2974 | parseurl: 1.3.2 2975 | send: 0.16.2 2976 | dev: false 2977 | engines: 2978 | node: '>= 0.8.0' 2979 | resolution: 2980 | integrity: sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== 2981 | /set-immediate-shim/1.0.1: 2982 | dev: false 2983 | engines: 2984 | node: '>=0.10.0' 2985 | resolution: 2986 | integrity: sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= 2987 | /setprototypeof/1.0.3: 2988 | dev: false 2989 | resolution: 2990 | integrity: sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ= 2991 | /setprototypeof/1.1.0: 2992 | dev: false 2993 | resolution: 2994 | integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== 2995 | /sha.js/2.4.10: 2996 | dependencies: 2997 | inherits: 2.0.3 2998 | safe-buffer: 5.1.1 2999 | dev: false 3000 | resolution: 3001 | integrity: sha512-vnwmrFDlOExK4Nm16J2KMWHLrp14lBrjxMxBJpu++EnsuBmpiYaM/MEs46Vxxm/4FvdP5yTwuCTO9it5FSjrqA== 3002 | /shallow-copy/0.0.1: 3003 | dev: false 3004 | resolution: 3005 | integrity: sha1-QV9CcC1z2BAzApLMXuhurhoRoXA= 3006 | /shasum/1.0.2: 3007 | dependencies: 3008 | json-stable-stringify: 0.0.1 3009 | sha.js: 2.4.10 3010 | dev: false 3011 | resolution: 3012 | integrity: sha1-5wEjENj0F/TetXEhUOVni4euVl8= 3013 | /shebang-command/1.2.0: 3014 | dependencies: 3015 | shebang-regex: 1.0.0 3016 | dev: false 3017 | engines: 3018 | node: '>=0.10.0' 3019 | resolution: 3020 | integrity: sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 3021 | /shebang-regex/1.0.0: 3022 | dev: false 3023 | engines: 3024 | node: '>=0.10.0' 3025 | resolution: 3026 | integrity: sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 3027 | /sheetify/7.3.0: 3028 | dependencies: 3029 | acorn-node: 1.3.0 3030 | fast-json-parse: 1.0.3 3031 | findup: 0.1.5 3032 | insert-css: 2.0.0 3033 | map-limit: 0.0.1 3034 | postcss: 5.2.18 3035 | postcss-prefix: 2.1.1 3036 | resolve: 1.5.0 3037 | stack-trace: 0.0.9 3038 | static-eval: 1.1.1 3039 | style-resolve: 1.1.0 3040 | through2: 2.0.3 3041 | transform-ast: 2.4.0 3042 | xtend: 4.0.1 3043 | dev: false 3044 | resolution: 3045 | integrity: sha512-afIikrPdtNtZoB2RrftRj5x7gWiQ15DcQ08ovAxYwJ+GpnOm532DTKL05/1XJNQTOKQ/wZ7jyPOYxsPlaK4WOQ== 3046 | /shell-quote/1.6.1: 3047 | dependencies: 3048 | array-filter: 0.0.1 3049 | array-map: 0.0.0 3050 | array-reduce: 0.0.0 3051 | jsonify: 0.0.0 3052 | dev: false 3053 | resolution: 3054 | integrity: sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c= 3055 | /signal-exit/3.0.2: 3056 | dev: false 3057 | resolution: 3058 | integrity: sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= 3059 | /signed-varint/2.0.1: 3060 | dependencies: 3061 | varint: 5.0.0 3062 | dev: false 3063 | resolution: 3064 | integrity: sha1-UKmYnafJjCxh2tEZvJdHDvhSgSk= 3065 | /simple-html-index/1.5.0: 3066 | dependencies: 3067 | from2-string: 1.1.0 3068 | dev: false 3069 | resolution: 3070 | integrity: sha1-LJPurrrAAdihNfwAIr1K3o9YmW8= 3071 | /simple-sha1/2.1.0: 3072 | dependencies: 3073 | rusha: 0.8.13 3074 | dev: false 3075 | resolution: 3076 | integrity: sha1-lCe7lv8SY8wQqEFM7dUaGLkZ6LM= 3077 | /siphash24/1.1.0: 3078 | dependencies: 3079 | nanoassert: 1.1.0 3080 | dev: false 3081 | resolution: 3082 | integrity: sha512-nDCEEZKb6m7OxxG/5wwaLy2R+KpyLcOnGjTJlFXG+14FUmpDD1FCFV/MjsYATjShsqPkSkl1BVevI0TCehdsTw== 3083 | /sodium-javascript/0.5.4: 3084 | dependencies: 3085 | blake2b: 2.1.2 3086 | nanoassert: 1.1.0 3087 | siphash24: 1.1.0 3088 | xsalsa20: 1.0.2 3089 | dev: false 3090 | resolution: 3091 | integrity: sha512-YEQtgtDpDlKYGinla+F1HfZ1e3CtYCnsvJ5n2llbFFXmMDeIac4auOIkxuvt7dN9G0/ELBDAEgbzHKbEoP6GWw== 3092 | /sodium-native/2.1.4: 3093 | dependencies: 3094 | ini: 1.3.5 3095 | nan: 2.9.2 3096 | node-gyp-build: 3.2.2 3097 | dev: false 3098 | optional: true 3099 | resolution: 3100 | integrity: sha512-EiCWFVWp1useIOg+S4YZOsNv16dN+2J6RI2PKDiubhyrcP/YjK5O9XswkuEZUpgL0UMZb3S+u/J1eu9iXq412g== 3101 | /sodium-universal/2.0.0: 3102 | dependencies: 3103 | sodium-javascript: 0.5.4 3104 | dev: false 3105 | optionalDependencies: 3106 | sodium-native: 2.1.4 3107 | resolution: 3108 | integrity: sha512-csdVyakzHJRyCevY4aZC2Eacda8paf+4nmRGF2N7KxCLKY2Ajn72JsExaQlJQ2BiXJncp44p3T+b80cU+2TTsg== 3109 | /sorted-indexof/1.0.0: 3110 | dev: false 3111 | resolution: 3112 | integrity: sha1-F8dC/3zxh+L1mhXfm4HxemLOCJk= 3113 | /source-map/0.5.7: 3114 | dev: false 3115 | engines: 3116 | node: '>=0.10.0' 3117 | resolution: 3118 | integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 3119 | /source-map/0.6.1: 3120 | dev: false 3121 | engines: 3122 | node: '>=0.10.0' 3123 | optional: true 3124 | resolution: 3125 | integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 3126 | /sparse-bitfield/3.0.3: 3127 | dependencies: 3128 | memory-pager: 1.1.0 3129 | dev: false 3130 | resolution: 3131 | integrity: sha1-/0rm5oZWBWuks+eSqzM004JzyhE= 3132 | /split2/0.2.1: 3133 | dependencies: 3134 | through2: 0.6.5 3135 | dev: false 3136 | resolution: 3137 | integrity: sha1-At2smtwD7Au3jBKC7Aecpuha6QA= 3138 | /stack-trace/0.0.9: 3139 | dev: false 3140 | resolution: 3141 | integrity: sha1-qPbq7KkGdMMz58Q5U/J1tFFRBpU= 3142 | /stacked/1.1.1: 3143 | dev: false 3144 | resolution: 3145 | integrity: sha1-LH+jjMfjejQRp3zY55LeRI+faXU= 3146 | /static-eval/1.1.1: 3147 | dependencies: 3148 | escodegen: 1.9.1 3149 | dev: false 3150 | resolution: 3151 | integrity: sha1-yoEwIQNUzxPZpyK8fpI3eEV7sZI= 3152 | /static-eval/2.0.0: 3153 | dependencies: 3154 | escodegen: 1.9.1 3155 | dev: false 3156 | resolution: 3157 | integrity: sha512-6flshd3F1Gwm+Ksxq463LtFd1liC77N/PX1FVVc3OzL3hAmo2fwHFbuArkcfi7s9rTNsLEhcRmXGFZhlgy40uw== 3158 | /static-module/2.2.0: 3159 | dependencies: 3160 | concat-stream: 1.6.1 3161 | convert-source-map: 1.5.1 3162 | duplexer2: 0.1.4 3163 | escodegen: 1.9.1 3164 | falafel: 2.1.0 3165 | has: 1.0.1 3166 | magic-string: 0.22.4 3167 | merge-source-map: 1.0.4 3168 | object-inspect: 1.4.1 3169 | quote-stream: 1.0.2 3170 | readable-stream: 2.3.4 3171 | shallow-copy: 0.0.1 3172 | static-eval: 2.0.0 3173 | through2: 2.0.3 3174 | dev: false 3175 | resolution: 3176 | integrity: sha512-LSwwmrb1QBl3WJa3R9J4AkqrNtp+uvA0n0m+SJMkUyCnTPX/l69gT4Xq/LFZY12VS4rB9Qf9agN/8farqpR/Rw== 3177 | /statuses/1.3.1: 3178 | dev: false 3179 | engines: 3180 | node: '>= 0.6' 3181 | resolution: 3182 | integrity: sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4= 3183 | /statuses/1.4.0: 3184 | dev: false 3185 | engines: 3186 | node: '>= 0.6' 3187 | resolution: 3188 | integrity: sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== 3189 | /stdout-stream/1.4.0: 3190 | dependencies: 3191 | readable-stream: 2.3.4 3192 | dev: false 3193 | resolution: 3194 | integrity: sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s= 3195 | /stream-browserify/2.0.1: 3196 | dependencies: 3197 | inherits: 2.0.3 3198 | readable-stream: 2.3.4 3199 | dev: false 3200 | resolution: 3201 | integrity: sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds= 3202 | /stream-collector/1.0.1: 3203 | dependencies: 3204 | once: 1.4.0 3205 | dev: false 3206 | resolution: 3207 | integrity: sha1-TU5V8XE1YSGyxfZVn5RHBaso2xU= 3208 | /stream-combiner2/1.1.1: 3209 | dependencies: 3210 | duplexer2: 0.1.4 3211 | readable-stream: 2.3.4 3212 | dev: false 3213 | resolution: 3214 | integrity: sha1-+02KFCDqNidk4hrUeAOXvry0HL4= 3215 | /stream-each/1.2.2: 3216 | dependencies: 3217 | end-of-stream: 1.4.1 3218 | stream-shift: 1.0.0 3219 | dev: false 3220 | resolution: 3221 | integrity: sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA== 3222 | /stream-http/2.8.0: 3223 | dependencies: 3224 | builtin-status-codes: 3.0.0 3225 | inherits: 2.0.3 3226 | readable-stream: 2.3.4 3227 | to-arraybuffer: 1.0.1 3228 | xtend: 4.0.1 3229 | dev: false 3230 | resolution: 3231 | integrity: sha512-sZOFxI/5xw058XIRHl4dU3dZ+TTOIGJR78Dvo0oEAejIt4ou27k+3ne1zYmCV+v7UucbxIFQuOgnkTVHh8YPnw== 3232 | /stream-shift/1.0.0: 3233 | dev: false 3234 | resolution: 3235 | integrity: sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= 3236 | /stream-splicer/2.0.0: 3237 | dependencies: 3238 | inherits: 2.0.3 3239 | readable-stream: 2.3.4 3240 | dev: false 3241 | resolution: 3242 | integrity: sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM= 3243 | /strict-uri-encode/1.1.0: 3244 | dev: false 3245 | engines: 3246 | node: '>=0.10.0' 3247 | resolution: 3248 | integrity: sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= 3249 | /string_decoder/0.10.31: 3250 | dev: false 3251 | resolution: 3252 | integrity: sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= 3253 | /string_decoder/1.0.3: 3254 | dependencies: 3255 | safe-buffer: 5.1.1 3256 | dev: false 3257 | resolution: 3258 | integrity: sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ== 3259 | /strip-ansi/0.3.0: 3260 | dependencies: 3261 | ansi-regex: 0.2.1 3262 | dev: false 3263 | engines: 3264 | node: '>=0.10.0' 3265 | resolution: 3266 | integrity: sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA= 3267 | /strip-ansi/3.0.1: 3268 | dependencies: 3269 | ansi-regex: 2.1.1 3270 | dev: false 3271 | engines: 3272 | node: '>=0.10.0' 3273 | resolution: 3274 | integrity: sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= 3275 | /strip-eof/1.0.0: 3276 | dev: false 3277 | engines: 3278 | node: '>=0.10.0' 3279 | resolution: 3280 | integrity: sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= 3281 | /style-resolve/1.1.0: 3282 | dependencies: 3283 | resolve: 1.5.0 3284 | xtend: 4.0.1 3285 | dev: false 3286 | resolution: 3287 | integrity: sha512-TCt/cEeLTrnprw4uGaUyjHiQOLXPBdbr16dNEsPEI6DjEcvk408pTtYQ88M4Wv930zOTe/Q0fcvquSOTEeb5OQ== 3288 | /subarg/1.0.0: 3289 | dependencies: 3290 | minimist: 1.2.0 3291 | dev: false 3292 | resolution: 3293 | integrity: sha1-9izxdYHplrSPyWVpn1TAauJouNI= 3294 | /supports-color/0.2.0: 3295 | dev: false 3296 | engines: 3297 | node: '>=0.10.0' 3298 | resolution: 3299 | integrity: sha1-2S3iaU6z9nMjlz1649i1W0wiGQo= 3300 | /supports-color/1.3.1: 3301 | dev: false 3302 | engines: 3303 | node: '>=0.8.0' 3304 | resolution: 3305 | integrity: sha1-FXWN8J2P87SswwdTn6vicJXhBC0= 3306 | /supports-color/2.0.0: 3307 | dev: false 3308 | engines: 3309 | node: '>=0.8.0' 3310 | resolution: 3311 | integrity: sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= 3312 | /supports-color/3.2.3: 3313 | dependencies: 3314 | has-flag: 1.0.0 3315 | dev: false 3316 | engines: 3317 | node: '>=0.8.0' 3318 | resolution: 3319 | integrity: sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= 3320 | /syntax-error/1.4.0: 3321 | dependencies: 3322 | acorn-node: 1.3.0 3323 | dev: false 3324 | resolution: 3325 | integrity: sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w== 3326 | /term-color/1.0.1: 3327 | dependencies: 3328 | ansi-styles: 2.0.1 3329 | supports-color: 1.3.1 3330 | dev: false 3331 | resolution: 3332 | integrity: sha1-OOGSVTpHPjXkFgT/UZmEa/gRejo= 3333 | /through/2.3.8: 3334 | dev: false 3335 | resolution: 3336 | integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 3337 | /through2/0.6.5: 3338 | dependencies: 3339 | readable-stream: 1.0.34 3340 | xtend: 4.0.1 3341 | dev: false 3342 | resolution: 3343 | integrity: sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg= 3344 | /through2/2.0.3: 3345 | dependencies: 3346 | readable-stream: 2.3.4 3347 | xtend: 4.0.1 3348 | dev: false 3349 | resolution: 3350 | integrity: sha1-AARWmzfHx0ujnEPzzteNGtlBQL4= 3351 | /thunky/0.1.0: 3352 | dev: false 3353 | resolution: 3354 | integrity: sha1-vzAUaCTituZ7Dy16Ssi+smkIaE4= 3355 | /thunky/1.0.2: 3356 | dev: false 3357 | resolution: 3358 | integrity: sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E= 3359 | /timers-browserify/1.4.2: 3360 | dependencies: 3361 | process: 0.11.10 3362 | dev: false 3363 | engines: 3364 | node: '>=0.6.0' 3365 | resolution: 3366 | integrity: sha1-ycWLV1voQHN1y14kYtrO50NZ9B0= 3367 | /to-arraybuffer/1.0.1: 3368 | dev: false 3369 | resolution: 3370 | integrity: sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= 3371 | /to-boolean-x/1.0.3: 3372 | dev: false 3373 | resolution: 3374 | integrity: sha512-kQiMyJUgFprL8J+0CfgJuaSFKJMs3EvFe27/6aj/hVzVZT0HY4aA1QjPldLNxzBmjhLcapp7CctYHuD8QqtS3g== 3375 | /to-buffer/1.1.0: 3376 | dev: false 3377 | resolution: 3378 | integrity: sha1-N1vAPtrlw1qPoLP+laHzmF2x3Po= 3379 | /to-integer-x/3.0.0: 3380 | dependencies: 3381 | is-finite-x: 3.0.4 3382 | is-nan-x: 1.0.3 3383 | math-sign-x: 3.0.0 3384 | to-number-x: 2.0.0 3385 | dev: false 3386 | resolution: 3387 | integrity: sha512-794L2Lpwjtynm7RxahJi2YdbRY75gTxUW27TMuN26UgwPkmJb/+HPhkFEFbz+E4vNoiP0dxq5tq5fkXoXLaK/w== 3388 | /to-number-x/2.0.0: 3389 | dependencies: 3390 | cached-constructors-x: 1.0.2 3391 | nan-x: 1.0.2 3392 | parse-int-x: 2.0.0 3393 | to-primitive-x: 1.1.0 3394 | trim-x: 3.0.0 3395 | dev: false 3396 | resolution: 3397 | integrity: sha512-lGOnCoccUoSzjZ/9Uen8TC4+VFaQcFGhTroWTv2tYWxXgyJV1zqAZ8hEIMkez/Eo790fBMOjidTnQ/OJSCvAoQ== 3398 | /to-object-x/1.5.0: 3399 | dependencies: 3400 | cached-constructors-x: 1.0.2 3401 | require-object-coercible-x: 1.4.3 3402 | dev: false 3403 | resolution: 3404 | integrity: sha512-AKn5GQcdWky+s20vjWkt+Wa6y3dxQH3yQyMBhOfBOPldUwqwhgvlqcIg5H092ntNc+TX8/Cxzs1kMHH19pyCnA== 3405 | /to-primitive-x/1.1.0: 3406 | dependencies: 3407 | has-symbol-support-x: 1.4.2 3408 | is-date-object: 1.0.1 3409 | is-function-x: 3.3.0 3410 | is-nil-x: 1.4.2 3411 | is-primitive: 2.0.0 3412 | is-symbol: 1.0.1 3413 | require-object-coercible-x: 1.4.3 3414 | validate.io-undefined: 1.0.3 3415 | dev: false 3416 | resolution: 3417 | integrity: sha512-gyMY0gi3wjK3e4MUBKqv9Zl8QGcWguIkaUr2VJmoBEsOpDcpDZSEyljR773eVG4maS48uX7muLkoQoh/BA82OQ== 3418 | /to-property-key-x/2.0.2: 3419 | dependencies: 3420 | has-symbol-support-x: 1.4.2 3421 | to-primitive-x: 1.1.0 3422 | to-string-x: 1.4.5 3423 | dev: false 3424 | resolution: 3425 | integrity: sha512-YISLpZFYIazNm0P8hLsKEEUEZ3m8U3+eDysJZqTu3+B9tQp+2TrMpaEGT8Agh4fZ5LSoums60/glNEzk5ozqrg== 3426 | /to-string-symbols-supported-x/1.0.2: 3427 | dependencies: 3428 | cached-constructors-x: 1.0.2 3429 | has-symbol-support-x: 1.4.2 3430 | is-symbol: 1.0.1 3431 | dev: false 3432 | resolution: 3433 | integrity: sha512-3MRqhIhSNVDsVAk4M6WNcuBZrAQe54W13xrXX6RzxXS+pA4nj6DQ96RegQS5z9BSNyYbFsBsPvMVDIpP+a/5RA== 3434 | /to-string-tag-x/1.4.3: 3435 | dependencies: 3436 | lodash.isnull: 3.0.0 3437 | validate.io-undefined: 1.0.3 3438 | dev: false 3439 | resolution: 3440 | integrity: sha512-5+0EZ6dOVt/XArXmkooxPzWxmOR081HM/uXitUow7h11WYg5pPo15uYqDWuqO7ZY+O3Atn/dG26wcJCK+mFevg== 3441 | /to-string-x/1.4.5: 3442 | dependencies: 3443 | cached-constructors-x: 1.0.2 3444 | is-symbol: 1.0.1 3445 | dev: false 3446 | resolution: 3447 | integrity: sha512-5xzlZDyDa9BUWNjNzZzHgKQ95PnV7qjvEhbqpFaj1ixaHgfJXOFaa3xdMJ+WLYd4hhaMJaxt8Pt5uKaWXfruXA== 3448 | /transform-ast/2.4.0: 3449 | dependencies: 3450 | acorn-node: 1.3.0 3451 | convert-source-map: 1.5.1 3452 | is-buffer: 1.1.6 3453 | magic-string: 0.21.3 3454 | merge-source-map: 1.0.4 3455 | dev: false 3456 | resolution: 3457 | integrity: sha512-vo/ALXqfvGTcyc8JJepHKAt+sYwVgLCOX2t85aB3En/YS+DgOB6rfMSSDygBDNQW7qpOg/IQm6AizXTlLWQQpA== 3458 | /trim-left-x/3.0.0: 3459 | dependencies: 3460 | cached-constructors-x: 1.0.2 3461 | require-coercible-to-string-x: 1.0.2 3462 | white-space-x: 3.0.1 3463 | dev: false 3464 | resolution: 3465 | integrity: sha512-+m6cqkppI+CxQBTwWEZliOHpOBnCArGyMnS1WCLb6IRgukhTkiQu/TNEN5Lj2eM9jk8ewJsc7WxFZfmwNpRXWQ== 3466 | /trim-right-x/3.0.0: 3467 | dependencies: 3468 | cached-constructors-x: 1.0.2 3469 | require-coercible-to-string-x: 1.0.2 3470 | white-space-x: 3.0.1 3471 | dev: false 3472 | resolution: 3473 | integrity: sha512-iIqEsWEbWVodqdixJHi4FoayJkUxhoL4AvSNGp4FF4FfQKRPGizt8++/RnyC9od75y7P/S6EfONoVqP+NddiKA== 3474 | /trim-x/3.0.0: 3475 | dependencies: 3476 | trim-left-x: 3.0.0 3477 | trim-right-x: 3.0.0 3478 | dev: false 3479 | resolution: 3480 | integrity: sha512-w8s38RAUScQ6t3XqMkS75iz5ZkIYLQpVnv2lp3IuTS36JdlVzC54oe6okOf4Wz3UH4rr3XAb2xR3kR5Xei82fw== 3481 | /tty-browserify/0.0.1: 3482 | dev: false 3483 | resolution: 3484 | integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== 3485 | /type-check/0.3.2: 3486 | dependencies: 3487 | prelude-ls: 1.1.2 3488 | dev: false 3489 | engines: 3490 | node: '>= 0.8.0' 3491 | resolution: 3492 | integrity: sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= 3493 | /type-is/1.6.16: 3494 | dependencies: 3495 | media-typer: 0.3.0 3496 | mime-types: 2.1.18 3497 | dev: false 3498 | engines: 3499 | node: '>= 0.6' 3500 | resolution: 3501 | integrity: sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q== 3502 | /typedarray/0.0.6: 3503 | dev: false 3504 | resolution: 3505 | integrity: sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= 3506 | /uint64be/2.0.1: 3507 | dev: false 3508 | resolution: 3509 | integrity: sha1-oxDZTk5eCwKpXWeOMzI/gCvchCg= 3510 | /ultron/1.0.2: 3511 | dev: false 3512 | resolution: 3513 | integrity: sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po= 3514 | /ultron/1.1.1: 3515 | dev: false 3516 | resolution: 3517 | integrity: sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== 3518 | /umd/3.0.1: 3519 | dev: false 3520 | resolution: 3521 | integrity: sha1-iuVW4RAR9jwllnCKiDclnwGz1g4= 3522 | /uniq/1.0.1: 3523 | dev: false 3524 | resolution: 3525 | integrity: sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= 3526 | /unixify/1.0.0: 3527 | dependencies: 3528 | normalize-path: 2.1.1 3529 | dev: false 3530 | engines: 3531 | node: '>=0.10.0' 3532 | resolution: 3533 | integrity: sha1-OmQcjC/7zk2mg6XHDwOkYpQMIJA= 3534 | /unordered-array-remove/1.0.2: 3535 | dev: false 3536 | resolution: 3537 | integrity: sha1-xUbo+I4xegzyZEyX7LV9umbSUO8= 3538 | /unordered-set/1.1.0: 3539 | dev: false 3540 | resolution: 3541 | integrity: sha1-K6fvMW7dC5WQzFR8dPdqLxZP7Mo= 3542 | /unordered-set/2.0.0: 3543 | dev: false 3544 | resolution: 3545 | integrity: sha1-mFon6XW6oguCY66np5HpMAlBqew= 3546 | /unpipe/1.0.0: 3547 | dev: false 3548 | engines: 3549 | node: '>= 0.8' 3550 | resolution: 3551 | integrity: sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 3552 | /url-trim/1.0.0: 3553 | dev: false 3554 | resolution: 3555 | integrity: sha1-QAV+LxZLiOXaynJp2kfm0d2Detw= 3556 | /url/0.11.0: 3557 | dependencies: 3558 | punycode: 1.3.2 3559 | querystring: 0.2.0 3560 | dev: false 3561 | resolution: 3562 | integrity: sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= 3563 | /util-deprecate/1.0.2: 3564 | dev: false 3565 | resolution: 3566 | integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 3567 | /util/0.10.3: 3568 | dependencies: 3569 | inherits: 2.0.1 3570 | dev: false 3571 | resolution: 3572 | integrity: sha1-evsa/lCAUkZInj23/g7TeTNqwPk= 3573 | /utils-merge/1.0.1: 3574 | dev: false 3575 | engines: 3576 | node: '>= 0.4.0' 3577 | resolution: 3578 | integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= 3579 | /utp-native/1.6.2: 3580 | dependencies: 3581 | nan: 2.9.2 3582 | node-gyp-build: 3.2.2 3583 | readable-stream: 2.3.4 3584 | dev: false 3585 | optional: true 3586 | resolution: 3587 | integrity: sha512-z724NhTLcRQeBBM0W9npDpwCZvsj2veD3/NKFjKfdS5AlTr4EQRIzl85JupKNAc1PjlhjOWIzObvJrQq3FjLqg== 3588 | /validate.io-undefined/1.0.3: 3589 | dev: false 3590 | resolution: 3591 | integrity: sha1-fif8uzFbhB54JDQxiXZxkp4gt/Q= 3592 | /varint/3.0.1: 3593 | dev: false 3594 | resolution: 3595 | integrity: sha1-nT9T4DbAqxIACnS8LSTL8JOlgdk= 3596 | /varint/4.0.1: 3597 | dev: false 3598 | resolution: 3599 | integrity: sha1-SQgpuULSSEY7KzUJeZXDv3NxmOk= 3600 | /varint/5.0.0: 3601 | dev: false 3602 | resolution: 3603 | integrity: sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8= 3604 | /vary/1.1.2: 3605 | dev: false 3606 | engines: 3607 | node: '>= 0.8' 3608 | resolution: 3609 | integrity: sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= 3610 | /vlq/0.2.3: 3611 | dev: false 3612 | resolution: 3613 | integrity: sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow== 3614 | /vm-browserify/0.0.4: 3615 | dependencies: 3616 | indexof: 0.0.1 3617 | dev: false 3618 | resolution: 3619 | integrity: sha1-XX6kW7755Kb/ZflUOOCofDV9WnM= 3620 | /watchify-middleware/1.8.0: 3621 | dependencies: 3622 | concat-stream: 1.6.1 3623 | debounce: 1.1.0 3624 | events: 1.1.1 3625 | object-assign: 4.1.1 3626 | strip-ansi: 3.0.1 3627 | watchify: 3.10.0 3628 | dev: false 3629 | resolution: 3630 | integrity: sha512-INYU5/3zTZtWQvJKPelr47j0JeLTZK4GUDF0PoMltMPzMUEh/lW6g1t+Qe/tGHxm70AUc0NQrth3k3PTfOU9Nw== 3631 | /watchify/3.10.0: 3632 | dependencies: 3633 | anymatch: 1.3.2 3634 | browserify: 15.2.0 3635 | chokidar: 1.7.0 3636 | defined: 1.0.0 3637 | outpipe: 1.1.1 3638 | through2: 2.0.3 3639 | xtend: 4.0.1 3640 | dev: false 3641 | resolution: 3642 | integrity: sha512-SRSumWalHAxciSaEtua1HFqB8L+et5ieHjJRuNssqj4qXz4pJoR6cAeFWni3reXyOY3cVE6b55sJ8WYR43abBQ== 3643 | /wayfarer/6.6.3: 3644 | dependencies: 3645 | xtend: 4.0.1 3646 | dev: false 3647 | resolution: 3648 | integrity: sha512-DiScqFrKfETMeJ0OTmSv9Cncw/Yq3+pSs2+AlqLvgINpLlbnyts8dvFEdX3ggHdpt1nmQ7YE26mfpHXBowo0yQ== 3649 | /websocket-stream/5.1.1: 3650 | dependencies: 3651 | duplexify: 3.5.3 3652 | inherits: 2.0.3 3653 | readable-stream: 2.3.4 3654 | safe-buffer: 5.1.1 3655 | ws: 3.3.3 3656 | xtend: 4.0.1 3657 | dev: false 3658 | resolution: 3659 | integrity: sha512-ypQ50zVCnikSvJcRFWaZh7xeCufSje5+mbJRq3mdvdNx+06TD98C+bQsSKc7FkI6y1PVuNbzkenGywxlFiQeUQ== 3660 | /which/1.3.0: 3661 | dependencies: 3662 | isexe: 2.0.0 3663 | dev: false 3664 | resolution: 3665 | integrity: sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg== 3666 | /white-space-x/3.0.1: 3667 | dev: false 3668 | resolution: 3669 | integrity: sha512-BwMFXQNPna/4RsNPOgldVYn+FkEv+lc3wUiFzuaW6Z2DH/oSk1UrRD6SBqDgWQO4JU+aBq3PVuPD9Vz0j7mh0w== 3670 | /wordwrap/1.0.0: 3671 | dev: false 3672 | resolution: 3673 | integrity: sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= 3674 | /wrappy/1.0.2: 3675 | dev: false 3676 | resolution: 3677 | integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 3678 | /ws/1.1.5: 3679 | dependencies: 3680 | options: 0.0.6 3681 | ultron: 1.0.2 3682 | dev: false 3683 | resolution: 3684 | integrity: sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w== 3685 | /ws/2.3.1: 3686 | dependencies: 3687 | safe-buffer: 5.0.1 3688 | ultron: 1.1.1 3689 | dev: false 3690 | resolution: 3691 | integrity: sha1-a5Sz5EfLajY/eF6vlK9jWejoHIA= 3692 | /ws/3.3.3: 3693 | dependencies: 3694 | async-limiter: 1.0.0 3695 | safe-buffer: 5.1.1 3696 | ultron: 1.1.1 3697 | dev: false 3698 | resolution: 3699 | integrity: sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== 3700 | /xsalsa20/1.0.2: 3701 | dev: false 3702 | resolution: 3703 | integrity: sha512-g1DFmZ5JJ9Qzvt4dMw6m9IydqoCSP381ucU5zm46Owbk3bwmqAr8eEJirOPc7PrXRn45drzOpAyDp8jsnoyXyw== 3704 | /xtend/4.0.1: 3705 | dev: false 3706 | engines: 3707 | node: '>=0.4' 3708 | resolution: 3709 | integrity: sha1-pcbVMr5lbiPbgg77lDofBJmNY68= 3710 | /yallist/2.1.2: 3711 | dev: false 3712 | resolution: 3713 | integrity: sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= 3714 | registry: 'https://registry.npmjs.org/' 3715 | shrinkwrapMinorVersion: 4 3716 | shrinkwrapVersion: 3 3717 | specifiers: 3718 | brfs: ^1.5.0 3719 | budo: ^11.1.7 3720 | choo: ^6.8.0 3721 | codemirror: ^5.35.0 3722 | express: ^4.16.2 3723 | express-ws: ^3.0.0 3724 | hypercore: ^6.12.2 3725 | hypercore-archiver: ^4.4.1 3726 | hyperdiscovery: ^7.0.0 3727 | hyperdrive: ^9.12.3 3728 | nanocomponent: ^6.5.1 3729 | pretty-hash: ^1.0.1 3730 | random-access-idb: ^1.0.4 3731 | random-access-memory: ^2.4.0 3732 | sheetify: ^7.2.0 3733 | to-buffer: ^1.1.0 3734 | websocket-stream: ^5.1.1 3735 | --------------------------------------------------------------------------------