IBM-Blockchain-Archive / SDK-Demo

Sample Node.js program to demonstrate the HFC SDK APIs interacting with Starter and High Security Bluemix networks
29 stars 64 forks source link

RangeError: byte length of X should be a multiple of N #28

Open pfuntner opened 7 years ago

pfuntner commented 7 years ago

I'm trying to drive the HFC Demo periodically against a Blockchain 0.6 starter network to gauge the health of the network. The demo usually works fine but occasionally I encounter one of these errors:

Environment:

Hello-Blockchain@0.0.1 /home/ibmadmin/tmp/hfc-work/hfc-space/new/SDK-Demo └─┬ hfc@0.6.5 ├── aes-js@1.0.0 ├── asn1@0.2.3 (git+https://github.com/mcavage/node-asn1.git#2c2a19e285a609adfca36a0114bb5b86cf4ac61b) ├── asn1js@1.2.12 ├── bn.js@4.11.6 ├── crypto@0.0.3 ├─┬ debug@2.6.1 │ └── ms@0.7.2 ├─┬ elliptic@6.4.0 │ ├── brorand@1.1.0 │ ├── hash.js@1.0.3 │ ├── hmac-drbg@1.0.0 │ ├── inherits@2.0.3 │ ├── minimalistic-assert@1.0.0 │ └── minimalistic-crypto-utils@1.0.1 ├─┬ es6-set@0.1.4 │ ├── d@0.1.1 │ ├── es5-ext@0.10.12 │ ├── es6-iterator@2.0.0 │ ├── es6-symbol@3.1.0 │ └── event-emitter@0.3.4 ├── events@1.1.1 ├── fs@0.0.2 ├─┬ grpc@1.0.0 │ ├── arguejs@0.2.3 │ ├── lodash@3.10.1 │ ├── nan@2.5.1 │ ├─┬ node-pre-gyp@0.6.29 │ │ ├─┬ mkdirp@0.5.1 │ │ │ └── minimist@0.0.8 │ │ ├─┬ nopt@3.0.6 │ │ │ └── abbrev@1.0.9 │ │ ├─┬ npmlog@3.1.2 │ │ │ ├─┬ are-we-there-yet@1.1.2 │ │ │ │ ├── delegates@1.0.0 │ │ │ │ └─┬ readable-stream@2.1.5 │ │ │ │ ├── buffer-shims@1.0.0 │ │ │ │ ├── core-util-is@1.0.2 │ │ │ │ ├── inherits@2.0.1 │ │ │ │ ├── isarray@1.0.0 │ │ │ │ ├── process-nextick-args@1.0.7 │ │ │ │ ├── string_decoder@0.10.31 │ │ │ │ └── util-deprecate@1.0.2 │ │ │ ├── console-control-strings@1.1.0 │ │ │ ├─┬ gauge@2.6.0 │ │ │ │ ├── aproba@1.0.4 │ │ │ │ ├── has-color@0.1.7 │ │ │ │ ├── has-unicode@2.0.1 │ │ │ │ ├── object-assign@4.1.0 │ │ │ │ ├── signal-exit@3.0.0 │ │ │ │ ├─┬ string-width@1.0.2 │ │ │ │ │ ├─┬ code-point-at@1.0.0 │ │ │ │ │ │ └── number-is-nan@1.0.0 │ │ │ │ │ └─┬ is-fullwidth-code-point@1.0.0 │ │ │ │ │ └── number-is-nan@1.0.0 │ │ │ │ ├─┬ strip-ansi@3.0.1 │ │ │ │ │ └── ansi-regex@2.0.0 │ │ │ │ └── wide-align@1.1.0 │ │ │ └── set-blocking@2.0.0 │ │ ├─┬ rc@1.1.6 │ │ │ ├── deep-extend@0.4.1 │ │ │ ├── ini@1.3.4 │ │ │ ├── minimist@1.2.0 │ │ │ └── strip-json-comments@1.0.4 │ │ ├─┬ request@2.74.0 │ │ │ ├── aws-sign2@0.6.0 │ │ │ ├── aws4@1.4.1 │ │ │ ├─┬ bl@1.1.2 │ │ │ │ └─┬ readable-stream@2.0.6 │ │ │ │ ├── core-util-is@1.0.2 │ │ │ │ ├── inherits@2.0.1 │ │ │ │ ├── isarray@1.0.0 │ │ │ │ ├── process-nextick-args@1.0.7 │ │ │ │ ├── string_decoder@0.10.31 │ │ │ │ └── util-deprecate@1.0.2 │ │ │ ├── caseless@0.11.0 │ │ │ ├─┬ combined-stream@1.0.5 │ │ │ │ └── delayed-stream@1.0.0 │ │ │ ├── extend@3.0.0 │ │ │ ├── forever-agent@0.6.1 │ │ │ ├─┬ form-data@1.0.0-rc4 │ │ │ │ └── async@1.5.2 │ │ │ ├─┬ har-validator@2.0.6 │ │ │ │ ├─┬ chalk@1.1.3 │ │ │ │ │ ├── ansi-styles@2.2.1 │ │ │ │ │ ├── escape-string-regexp@1.0.5 │ │ │ │ │ ├─┬ has-ansi@2.0.0 │ │ │ │ │ │ └── ansi-regex@2.0.0 │ │ │ │ │ ├─┬ strip-ansi@3.0.1 │ │ │ │ │ │ └── ansi-regex@2.0.0 │ │ │ │ │ └── supports-color@2.0.0 │ │ │ │ ├─┬ commander@2.9.0 │ │ │ │ │ └── graceful-readlink@1.0.1 │ │ │ │ ├─┬ is-my-json-valid@2.13.1 │ │ │ │ │ ├── generate-function@2.0.0 │ │ │ │ │ ├─┬ generate-object-property@1.2.0 │ │ │ │ │ │ └── is-property@1.0.2 │ │ │ │ │ ├── jsonpointer@2.0.0 │ │ │ │ │ └── xtend@4.0.1 │ │ │ │ └─┬ pinkie-promise@2.0.1 │ │ │ │ └── pinkie@2.0.4 │ │ │ ├─┬ hawk@3.1.3 │ │ │ │ ├── boom@2.10.1 │ │ │ │ ├── cryptiles@2.0.5 │ │ │ │ ├── hoek@2.16.3 │ │ │ │ └── sntp@1.0.9 │ │ │ ├─┬ http-signature@1.1.1 │ │ │ │ ├── assert-plus@0.2.0 │ │ │ │ ├─┬ jsprim@1.3.0 │ │ │ │ │ ├── extsprintf@1.0.2 │ │ │ │ │ ├── json-schema@0.2.2 │ │ │ │ │ └── verror@1.3.6 │ │ │ │ └─┬ sshpk@1.9.2 │ │ │ │ ├── asn1@0.2.3 │ │ │ │ ├── assert-plus@1.0.0 │ │ │ │ ├── dashdash@1.14.0 │ │ │ │ ├── ecc-jsbn@0.1.1 │ │ │ │ ├── getpass@0.1.6 │ │ │ │ ├── jodid25519@1.0.2 │ │ │ │ ├── jsbn@0.1.0 │ │ │ │ └── tweetnacl@0.13.3 │ │ │ ├── is-typedarray@1.0.0 │ │ │ ├── isstream@0.1.2 │ │ │ ├── json-stringify-safe@5.0.1 │ │ │ ├─┬ mime-types@2.1.11 │ │ │ │ └── mime-db@1.23.0 │ │ │ ├── node-uuid@1.4.7 │ │ │ ├── oauth-sign@0.8.2 │ │ │ ├── qs@6.2.1 │ │ │ ├── stringstream@0.0.5 │ │ │ ├── tough-cookie@2.3.1 │ │ │ └── tunnel-agent@0.4.3 │ │ ├─┬ rimraf@2.5.4 │ │ │ └─┬ glob@7.0.5 │ │ │ ├── fs.realpath@1.0.0 │ │ │ ├─┬ inflight@1.0.5 │ │ │ │ └── wrappy@1.0.2 │ │ │ ├── inherits@2.0.1 │ │ │ ├─┬ minimatch@3.0.3 │ │ │ │ └─┬ brace-expansion@1.1.6 │ │ │ │ ├── balanced-match@0.4.2 │ │ │ │ └── concat-map@0.0.1 │ │ │ ├─┬ once@1.3.3 │ │ │ │ └── wrappy@1.0.2 │ │ │ └── path-is-absolute@1.0.0 │ │ ├── semver@5.2.0 │ │ ├─┬ tar@2.2.1 │ │ │ ├── block-stream@0.0.9 │ │ │ ├─┬ fstream@1.0.10 │ │ │ │ └── graceful-fs@4.1.5 │ │ │ └── inherits@2.0.1 │ │ └─┬ tar-pack@3.1.4 │ │ ├─┬ debug@2.2.0 │ │ │ └── ms@0.7.1 │ │ ├─┬ fstream@1.0.10 │ │ │ ├── graceful-fs@4.1.5 │ │ │ └── inherits@2.0.1 │ │ ├─┬ fstream-ignore@1.0.5 │ │ │ ├── inherits@2.0.1 │ │ │ └─┬ minimatch@3.0.3 │ │ │ └─┬ brace-expansion@1.1.6 │ │ │ ├── balanced-match@0.4.2 │ │ │ └── concat-map@0.0.1 │ │ ├─┬ once@1.3.3 │ │ │ └── wrappy@1.0.2 │ │ ├─┬ readable-stream@2.1.5 │ │ │ ├── buffer-shims@1.0.0 │ │ │ ├── core-util-is@1.0.2 │ │ │ ├── inherits@2.0.1 │ │ │ ├── isarray@1.0.0 │ │ │ ├── process-nextick-args@1.0.7 │ │ │ ├── string_decoder@0.10.31 │ │ │ └── util-deprecate@1.0.2 │ │ └── uid-number@0.0.6 │ └─┬ protobufjs@4.1.3 │ ├─┬ ascli@1.0.1 │ │ ├── colour@0.7.1 │ │ └── optjs@3.2.2 │ ├─┬ bytebuffer@4.1.0 │ │ ├── bufferview@1.0.1 │ │ └── long@2.4.0 │ ├─┬ glob@5.0.15 │ │ └── inflight@1.0.6 │ └─┬ yargs@3.32.0 │ ├── camelcase@2.1.1 │ ├─┬ cliui@3.2.0 │ │ ├─┬ strip-ansi@3.0.1 │ │ │ └── ansi-regex@2.1.1 │ │ └── wrap-ansi@2.1.0 │ ├── decamelize@1.2.0 │ ├─┬ os-locale@1.4.0 │ │ └─┬ lcid@1.0.0 │ │ └── invert-kv@1.0.0 │ ├─┬ string-width@1.0.2 │ │ ├── code-point-at@1.1.0 │ │ └─┬ is-fullwidth-code-point@1.0.0 │ │ └── number-is-nan@1.0.1 │ ├── window-size@0.1.4 │ └── y18n@3.2.1 ├─┬ hashtable@2.0.2 │ └── nan@2.5.1 ├── js-sha3@0.5.7 ├── json-stringify-safe@5.0.1 ├── jsrsasign@5.1.0 ├── jssha@2.2.0 ├── node-uuid@1.4.7 ├─┬ node.extend@1.1.6 │ └── is@3.2.1 ├── pkijs@1.3.33 ├── sjcl@1.0.3 ├── sjcl-codec@0.1.1 ├── sleep@3.0.1 ├─┬ tar-fs@1.15.1 │ ├── chownr@1.0.1 │ ├─┬ mkdirp@0.5.1 │ │ └── minimist@0.0.8 │ ├─┬ pump@1.0.2 │ │ ├─┬ end-of-stream@1.1.0 │ │ │ └── once@1.3.3 │ │ └─┬ once@1.4.0 │ │ └── wrappy@1.0.2 │ └─┬ tar-stream@1.5.2 │ ├── bl@1.2.0 │ ├─┬ readable-stream@2.2.3 │ │ ├── buffer-shims@1.0.0 │ │ ├── core-util-is@1.0.2 │ │ ├── isarray@1.0.0 │ │ ├── process-nextick-args@1.0.7 │ │ ├── string_decoder@0.10.31 │ │ └── util-deprecate@1.0.2 │ └── xtend@4.0.1 ├─┬ typedoc@0.4.5 │ ├─┬ fs-extra@0.30.0 │ │ ├── graceful-fs@4.1.11 │ │ ├── jsonfile@2.4.0 │ │ ├── klaw@1.3.1 │ │ ├── path-is-absolute@1.0.1 │ │ └─┬ rimraf@2.6.1 │ │ └── glob@7.1.1 │ ├─┬ handlebars@4.0.5 │ │ ├── async@1.5.2 │ │ ├─┬ optimist@0.6.1 │ │ │ └── wordwrap@0.0.3 │ │ ├─┬ source-map@0.4.4 │ │ │ └── amdefine@1.0.1 │ │ └─┬ uglify-js@2.8.1 │ │ ├── async@0.2.10 │ │ ├── source-map@0.5.6 │ │ ├── uglify-to-browserify@1.0.2 │ │ └─┬ yargs@3.10.0 │ │ ├── camelcase@1.2.1 │ │ ├─┬ cliui@2.1.0 │ │ │ ├─┬ center-align@0.1.3 │ │ │ │ ├─┬ align-text@0.1.4 │ │ │ │ │ ├─┬ kind-of@3.1.0 │ │ │ │ │ │ └── is-buffer@1.1.4 │ │ │ │ │ ├── longest@1.0.1 │ │ │ │ │ └── repeat-string@1.6.1 │ │ │ │ └── lazy-cache@1.0.4 │ │ │ ├── right-align@0.1.3 │ │ │ └── wordwrap@0.0.2 │ │ └── window-size@0.1.0 │ ├── highlight.js@9.9.0 │ ├── lodash@4.17.4 │ ├── marked@0.3.6 │ ├─┬ minimatch@3.0.3 │ │ └─┬ brace-expansion@1.1.6 │ │ ├── balanced-match@0.4.2 │ │ └── concat-map@0.0.1 │ ├── progress@1.1.8 │ ├─┬ shelljs@0.7.6 │ │ ├─┬ glob@7.1.1 │ │ │ └── fs.realpath@1.0.0 │ │ ├── interpret@1.0.1 │ │ └─┬ rechoir@0.6.2 │ │ └─┬ resolve@1.3.2 │ │ └── path-parse@1.0.5 │ └── typedoc-default-themes@0.4.2 ├── typescript@1.8.10 ├─┬ url@0.11.0 │ ├── punycode@1.3.2 │ └── querystring@0.2.0 ├─┬ util@0.10.3 │ └── inherits@2.0.1 └── uuidv4@0.3.1


* Ubuntu 16.04.1 LTS
SteveKimmel commented 7 years ago

Getting the same error trying to deploy the sample chaincode via the SDK as described here: https://console.ng.bluemix.net/docs/services/blockchain/etn_sdk.html

Mac OS 10.12.4 Node 6.10.3

Deploying chaincode ... hfc Member.deploy +1ms hfc TransactionContext.deploy +1ms hfc Received deploy request: {"fcn":"init","args":["a","100","b","200"],"chaincodePath":"chaincode","certificatePath":"/certs/peer/cert.pem"} +0ms hfc [TransactionContext] No TCert cached. Retrieving one. +0ms hfc Member.getNextTCert: key=null +0ms hfc Member.getNextTCert: key=null, creating new getter +0ms hfc shouldGetTCerts: yes, we have no tcerts +1ms hfc Warning: problem parsing certificate bytes; retrying ... RangeError: byte length of Uint32Array should be a multiple of 4 at new Uint32Array (native) at in_window.org.pkijs.asn1.UNIVERSALSTRING.fromBuffer (/Users/main_account/node_modules/asn1js/org/pkijs/asn1.js:3438:66) at in_window.org.pkijs.asn1.UNIVERSALSTRING.fromBER (/Users/main_account/node_modules/asn1js/org/pkijs/asn1.js:3407:71) at fromBER_raw (/Users/main_account/node_modules/asn1js/org/pkijs/asn1.js:4968:39) at Object.in_window.org.pkijs.fromBER (/Users/main_account/node_modules/asn1js/org/pkijs/asn1.js:4998:16) at in_window.org.pkijs.simpl.EXTENSION.fromSchema (/Users/main_account/node_modules/pkijs/org/pkijs/x509_simpl.js:3636:36) at new in_window.org.pkijs.simpl.EXTENSION (/Users/main_account/node_modules/pkijs/org/pkijs/x509_simpl.js:3589:70) at in_window.org.pkijs.simpl.CERT.fromSchema (/Users/main_account/node_modules/pkijs/org/pkijs/x509_simpl.js:3939:38) at new in_window.org.pkijs.simpl.CERT (/Users/main_account/node_modules/pkijs/org/pkijs/x509_simpl.js:3855:65) at new X509Certificate (/Users/main_account/node_modules/hfc/lib/crypto.js:475:26) +2s hfc Warning: problem parsing certificate bytes; retrying ... RangeError: byte length of Uint16Array should be a multiple of 2 at new Uint16Array (native) at in_window.org.pkijs.asn1.BMPSTRING.fromBuffer (/Users/main_account/node_modules/asn1js/org/pkijs/asn1.js:3290:66) at in_window.org.pkijs.asn1.BMPSTRING.fromBER (/Users/main_account/node_modules/asn1js/org/pkijs/asn1.js:3259:65) at fromBER_raw (/Users/main_account/node_modules/asn1js/org/pkijs/asn1.js:4968:39) at Object.in_window.org.pkijs.fromBER (/Users/main_account/node_modules/asn1js/org/pkijs/asn1.js:4998:16) at in_window.org.pkijs.simpl.EXTENSION.fromSchema (/Users/main_account/node_modules/pkijs/org/pkijs/x509_simpl.js:3636:36) at new in_window.org.pkijs.simpl.EXTENSION (/Users/main_account/node_modules/pkijs/org/pkijs/x509_simpl.js:3589:70) at in_window.org.pkijs.simpl.CERT.fromSchema (/Users/main_account/node_modules/pkijs/org/pkijs/x509_simpl.js:3939:38) at new in_window.org.pkijs.simpl.CERT (/Users/main_account/node_modules/pkijs/org/pkijs/x509_simpl.js:3855:65) at new X509Certificate (/Users/main_account/node_modules/hfc/lib/crypto.js:475:26) +386ms hfc Got a TCert successfully, continue... +468ms hfc newBuildOrDeployTransaction +0ms

SteveKimmel commented 7 years ago

/usr/local/lib └─┬ npm@4.5.0 ├── abbrev@1.1.0 ├── ansi-regex@2.1.1 ├── ansicolors@0.3.2 ├── ansistyles@0.1.3 ├── aproba@1.1.1 ├── archy@1.0.0 ├── asap@2.0.5 ├── bluebird@3.5.0 ├── call-limit@1.1.0 ├── chownr@1.0.1 ├─┬ cmd-shim@2.0.2 │ ├── graceful-fs@4.1.11 deduped │ └── mkdirp@0.5.1 deduped ├─┬ columnify@1.5.4 │ ├── strip-ansi@3.0.1 deduped │ └─┬ wcwidth@1.0.0 │ └─┬ defaults@1.0.3 │ └── clone@1.0.2 ├─┬ config-chain@1.1.11 │ ├── ini@1.3.4 deduped │ └── proto-list@1.2.4 ├── debuglog@1.0.1 ├─┬ dezalgo@1.0.3 │ ├── asap@2.0.5 deduped │ └── wrappy@1.0.2 deduped ├── editor@1.0.0 ├─┬ fs-vacuum@1.2.10 │ ├── graceful-fs@4.1.11 deduped │ ├── path-is-inside@1.0.2 deduped │ └── rimraf@2.6.1 deduped ├─┬ fs-write-stream-atomic@1.0.10 │ ├── graceful-fs@4.1.11 deduped │ ├── iferr@0.1.5 deduped │ ├── imurmurhash@0.1.4 deduped │ └── readable-stream@2.2.6 deduped ├─┬ fstream@1.0.11 │ ├── graceful-fs@4.1.11 deduped │ ├── inherits@2.0.3 deduped │ ├── mkdirp@0.5.1 deduped │ └── rimraf@2.6.1 deduped ├─┬ fstream-npm@1.2.0 │ ├─┬ fstream-ignore@1.0.5 │ │ ├── fstream@1.0.11 deduped │ │ ├── inherits@2.0.3 deduped │ │ └─┬ minimatch@3.0.3 │ │ └─┬ brace-expansion@1.1.6 │ │ ├── balanced-match@0.4.2 │ │ └── concat-map@0.0.1 │ └── inherits@2.0.3 deduped ├─┬ glob@7.1.1 │ ├── fs.realpath@1.0.0 │ ├── inflight@1.0.6 deduped │ ├── inherits@2.0.3 deduped │ ├─┬ minimatch@3.0.3 │ │ └─┬ brace-expansion@1.1.6 │ │ ├── balanced-match@0.4.2 │ │ └── concat-map@0.0.1 │ ├── once@1.4.0 deduped │ └── path-is-absolute@1.0.1 ├── graceful-fs@4.1.11 ├── has-unicode@2.0.1 ├── hosted-git-info@2.4.1 ├── iferr@0.1.5 ├── imurmurhash@0.1.4 ├─┬ inflight@1.0.6 │ ├── once@1.4.0 deduped │ └── wrappy@1.0.2 deduped ├── inherits@2.0.3 ├── ini@1.3.4 ├─┬ init-package-json@1.9.5 │ ├── glob@7.1.1 deduped │ ├── npm-package-arg@4.2.1 deduped │ ├─┬ promzard@0.3.0 │ │ └── read@1.0.7 deduped │ ├── read@1.0.7 deduped │ ├── read-package-json@2.0.5 deduped │ ├── semver@5.3.0 deduped │ ├── validate-npm-package-license@3.0.1 deduped │ └── validate-npm-package-name@3.0.0 deduped ├─┬ JSONStream@1.3.1 │ ├── jsonparse@1.3.0 │ └── through@2.3.8 ├── lazy-property@1.0.0 ├── lockfile@1.0.3 ├── lodash._baseindexof@3.1.0 ├─┬ lodash._baseuniq@4.6.0 │ ├── lodash._createset@4.0.3 │ └── lodash._root@3.0.1 ├── lodash._bindcallback@3.0.1 ├── lodash._cacheindexof@3.0.2 ├─┬ lodash._createcache@3.1.2 │ └── lodash._getnative@3.9.1 deduped ├── lodash._getnative@3.9.1 ├── lodash.clonedeep@4.5.0 ├── lodash.restparam@3.6.1 ├── lodash.union@4.6.0 ├── lodash.uniq@4.5.0 ├── lodash.without@4.4.0 ├─┬ mississippi@1.3.0 │ ├─┬ concat-stream@1.6.0 │ │ ├── inherits@2.0.3 deduped │ │ ├── readable-stream@2.2.6 deduped │ │ └── typedarray@0.0.6 │ ├─┬ duplexify@3.5.0 │ │ ├─┬ end-of-stream@1.0.0 │ │ │ └─┬ once@1.3.3 │ │ │ └── wrappy@1.0.2 deduped │ │ ├── inherits@2.0.3 deduped │ │ ├── readable-stream@2.2.6 deduped │ │ └── stream-shift@1.0.0 │ ├─┬ end-of-stream@1.1.0 │ │ └─┬ once@1.3.3 │ │ └── wrappy@1.0.2 deduped │ ├─┬ flush-write-stream@1.0.2 │ │ ├── inherits@2.0.3 deduped │ │ └── readable-stream@2.2.6 deduped │ ├─┬ from2@2.3.0 │ │ ├── inherits@2.0.3 deduped │ │ └── readable-stream@2.2.6 deduped │ ├─┬ parallel-transform@1.1.0 │ │ ├── cyclist@0.2.2 │ │ ├── inherits@2.0.3 deduped │ │ └── readable-stream@2.2.6 deduped │ ├─┬ pump@1.0.2 │ │ ├── end-of-stream@1.1.0 deduped │ │ └── once@1.4.0 deduped │ ├─┬ pumpify@1.3.5 │ │ ├── duplexify@3.5.0 deduped │ │ ├── inherits@2.0.3 deduped │ │ └── pump@1.0.2 deduped │ ├─┬ stream-each@1.2.0 │ │ ├── end-of-stream@1.1.0 deduped │ │ └── stream-shift@1.0.0 │ └─┬ through2@2.0.3 │ ├── readable-stream@2.2.6 deduped │ └── xtend@4.0.1 ├─┬ mkdirp@0.5.1 │ └── minimist@0.0.8 ├─┬ move-concurrently@1.0.1 │ ├── aproba@1.1.1 deduped │ ├─┬ copy-concurrently@1.0.3 │ │ ├── aproba@1.1.1 deduped │ │ ├── fs-write-stream-atomic@1.0.10 deduped │ │ ├── iferr@0.1.5 deduped │ │ ├── mkdirp@0.5.1 deduped │ │ ├── rimraf@2.6.1 deduped │ │ └── run-queue@1.0.3 deduped │ ├── fs-write-stream-atomic@1.0.10 deduped │ ├── mkdirp@0.5.1 deduped │ ├── rimraf@2.6.1 deduped │ └─┬ run-queue@1.0.3 │ └── aproba@1.1.1 deduped ├─┬ node-gyp@3.6.0 │ ├── fstream@1.0.11 deduped │ ├── glob@7.1.1 deduped │ ├── graceful-fs@4.1.11 deduped │ ├─┬ minimatch@3.0.3 │ │ └─┬ brace-expansion@1.1.6 │ │ ├── balanced-match@0.4.2 │ │ └── concat-map@0.0.1 │ ├── mkdirp@0.5.1 deduped │ ├─┬ nopt@3.0.6 │ │ └── abbrev@1.1.0 deduped │ ├── npmlog@4.0.2 deduped │ ├── osenv@0.1.4 deduped │ ├── request@2.81.0 deduped │ ├── rimraf@2.6.1 deduped │ ├── semver@5.3.0 deduped │ ├── tar@2.2.1 deduped │ └── which@1.2.14 deduped ├─┬ nopt@4.0.1 │ ├── abbrev@1.1.0 deduped │ └─┬ osenv@0.1.4 │ ├── os-homedir@1.0.2 │ └── os-tmpdir@1.0.2 ├── normalize-git-url@3.0.2 ├─┬ normalize-package-data@2.3.6 │ ├── hosted-git-info@2.4.1 deduped │ ├─┬ is-builtin-module@1.0.0 │ │ └── builtin-modules@1.1.1 │ ├── semver@5.3.0 deduped │ └── validate-npm-package-license@3.0.1 deduped ├── npm-cache-filename@1.0.2 ├─┬ npm-install-checks@3.0.0 │ └── semver@5.3.0 deduped ├─┬ npm-package-arg@4.2.1 │ ├── hosted-git-info@2.4.1 deduped │ └── semver@5.3.0 deduped ├─┬ npm-registry-client@8.1.0 │ ├─┬ concat-stream@1.6.0 │ │ ├── inherits@2.0.3 deduped │ │ ├── readable-stream@2.2.6 deduped │ │ └── typedarray@0.0.6 │ ├── graceful-fs@4.1.11 deduped │ ├── normalize-package-data@2.3.6 deduped │ ├── npm-package-arg@4.2.1 deduped │ ├── npmlog@4.0.2 deduped │ ├── once@1.4.0 deduped │ ├── request@2.81.0 deduped │ ├── retry@0.10.1 deduped │ ├── semver@5.3.0 deduped │ └── slide@1.1.6 deduped ├── npm-user-validate@0.1.5 ├─┬ npmlog@4.0.2 │ ├─┬ are-we-there-yet@1.1.2 │ │ ├── delegates@1.0.0 │ │ └── readable-stream@2.2.6 deduped │ ├── console-control-strings@1.1.0 │ ├─┬ gauge@2.7.2 │ │ ├── aproba@1.1.1 deduped │ │ ├── console-control-strings@1.1.0 deduped │ │ ├── has-unicode@2.0.1 deduped │ │ ├── object-assign@4.1.0 │ │ ├── signal-exit@3.0.2 │ │ ├─┬ string-width@1.0.2 │ │ │ ├── code-point-at@1.1.0 │ │ │ ├─┬ is-fullwidth-code-point@1.0.0 │ │ │ │ └── number-is-nan@1.0.1 │ │ │ └── strip-ansi@3.0.1 deduped │ │ ├── strip-ansi@3.0.1 deduped │ │ ├── supports-color@0.2.0 │ │ └─┬ wide-align@1.1.0 │ │ └── string-width@1.0.2 deduped │ └── set-blocking@2.0.0 ├─┬ once@1.4.0 │ └── wrappy@1.0.2 deduped ├── opener@1.4.3 ├─┬ osenv@0.1.4 │ ├── os-homedir@1.0.2 │ └── os-tmpdir@1.0.2 ├── path-is-inside@1.0.2 ├─┬ read@1.0.7 │ └── mute-stream@0.0.5 ├─┬ read-cmd-shim@1.0.1 │ └── graceful-fs@4.1.11 deduped ├─┬ read-installed@4.0.3 │ ├── debuglog@1.0.1 deduped │ ├── graceful-fs@4.1.11 deduped │ ├── read-package-json@2.0.5 deduped │ ├── readdir-scoped-modules@1.0.2 deduped │ ├── semver@5.3.0 deduped │ ├── slide@1.1.6 deduped │ └── util-extend@1.0.3 ├─┬ read-package-json@2.0.5 │ ├── glob@7.1.1 deduped │ ├── graceful-fs@4.1.11 deduped │ ├─┬ json-parse-helpfulerror@1.0.3 │ │ └── jju@1.3.0 │ └── normalize-package-data@2.3.6 deduped ├─┬ read-package-tree@5.1.5 │ ├── debuglog@1.0.1 deduped │ ├── dezalgo@1.0.3 deduped │ ├── once@1.4.0 deduped │ ├── read-package-json@2.0.5 deduped │ └── readdir-scoped-modules@1.0.2 deduped ├─┬ readable-stream@2.2.6 │ ├── buffer-shims@1.0.0 │ ├── core-util-is@1.0.2 │ ├── inherits@2.0.3 deduped │ ├── isarray@1.0.0 │ ├── process-nextick-args@1.0.7 │ ├── string_decoder@0.10.31 │ └── util-deprecate@1.0.2 ├─┬ readdir-scoped-modules@1.0.2 │ ├── debuglog@1.0.1 deduped │ ├── dezalgo@1.0.3 deduped │ ├── graceful-fs@4.1.11 deduped │ └── once@1.4.0 deduped ├─┬ realize-package-specifier@3.0.3 │ ├── dezalgo@1.0.3 deduped │ └── npm-package-arg@4.2.1 deduped ├─┬ request@2.81.0 │ ├── aws-sign2@0.6.0 │ ├── aws4@1.6.0 │ ├── caseless@0.12.0 │ ├─┬ combined-stream@1.0.5 │ │ └── delayed-stream@1.0.0 │ ├── extend@3.0.0 │ ├── forever-agent@0.6.1 │ ├─┬ form-data@2.1.2 │ │ ├── asynckit@0.4.0 │ │ ├── combined-stream@1.0.5 deduped │ │ └── mime-types@2.1.14 deduped │ ├─┬ har-validator@4.2.1 │ │ ├─┬ ajv@4.11.4 │ │ │ ├── co@4.6.0 │ │ │ └─┬ json-stable-stringify@1.0.1 │ │ │ └── jsonify@0.0.0 │ │ └── har-schema@1.0.5 │ ├─┬ hawk@3.1.3 │ │ ├─┬ boom@2.10.1 │ │ │ └── hoek@2.16.3 deduped │ │ ├─┬ cryptiles@2.0.5 │ │ │ └── boom@2.10.1 deduped │ │ ├── hoek@2.16.3 │ │ └─┬ sntp@1.0.9 │ │ └── hoek@2.16.3 deduped │ ├─┬ http-signature@1.1.1 │ │ ├── assert-plus@0.2.0 │ │ ├─┬ jsprim@1.3.1 │ │ │ ├── extsprintf@1.0.2 │ │ │ ├── json-schema@0.2.3 │ │ │ └─┬ verror@1.3.6 │ │ │ └── extsprintf@1.0.2 deduped │ │ └─┬ sshpk@1.11.0 │ │ ├── asn1@0.2.3 │ │ ├── assert-plus@1.0.0 │ │ ├─┬ bcrypt-pbkdf@1.0.1 │ │ │ └── tweetnacl@0.14.5 deduped │ │ ├─┬ dashdash@1.14.1 │ │ │ └── assert-plus@1.0.0 deduped │ │ ├─┬ ecc-jsbn@0.1.1 │ │ │ └── jsbn@0.1.1 deduped │ │ ├─┬ getpass@0.1.6 │ │ │ └── assert-plus@1.0.0 deduped │ │ ├─┬ jodid25519@1.0.2 │ │ │ └── jsbn@0.1.1 deduped │ │ ├── jsbn@0.1.1 │ │ └── tweetnacl@0.14.5 │ ├── is-typedarray@1.0.0 │ ├── isstream@0.1.2 │ ├── json-stringify-safe@5.0.1 │ ├─┬ mime-types@2.1.14 │ │ └── mime-db@1.26.0 │ ├── oauth-sign@0.8.2 │ ├── performance-now@0.2.0 │ ├── qs@6.4.0 │ ├── safe-buffer@5.0.1 │ ├── stringstream@0.0.5 │ ├─┬ tough-cookie@2.3.2 │ │ └── punycode@1.4.1 │ ├─┬ tunnel-agent@0.6.0 │ │ └── safe-buffer@5.0.1 deduped │ └── uuid@3.0.1 deduped ├── retry@0.10.1 ├─┬ rimraf@2.6.1 │ └── glob@7.1.1 deduped ├── semver@5.3.0 ├─┬ sha@2.0.1 │ ├── graceful-fs@4.1.11 deduped │ └── readable-stream@2.2.6 deduped ├── slide@1.1.6 ├── sorted-object@2.0.1 ├─┬ sorted-union-stream@2.1.3 │ ├─┬ from2@1.3.0 │ │ ├── inherits@2.0.3 deduped │ │ └─┬ readable-stream@1.1.14 │ │ ├── core-util-is@1.0.2 │ │ ├── inherits@2.0.3 deduped │ │ ├── isarray@0.0.1 │ │ └── string_decoder@0.10.31 │ └── stream-iterate@1.1.1 ├─┬ strip-ansi@3.0.1 │ └── ansi-regex@2.1.1 deduped ├─┬ tar@2.2.1 │ ├─┬ block-stream@0.0.8 │ │ └── inherits@2.0.3 deduped │ ├── fstream@1.0.11 deduped │ └── inherits@2.0.3 deduped ├── text-table@0.2.0 ├── uid-number@0.0.6 ├── umask@1.1.0 ├─┬ unique-filename@1.1.0 │ └─┬ unique-slug@2.0.0 │ └── imurmurhash@0.1.4 deduped ├── unpipe@1.0.0 ├─┬ update-notifier@2.1.0 │ ├─┬ boxen@1.0.0 │ │ ├─┬ ansi-align@1.1.0 │ │ │ └─┬ string-width@1.0.2 │ │ │ ├── code-point-at@1.1.0 │ │ │ ├─┬ is-fullwidth-code-point@1.0.0 │ │ │ │ └── number-is-nan@1.0.1 │ │ │ └── strip-ansi@3.0.1 deduped │ │ ├── camelcase@4.0.0 │ │ ├── chalk@1.1.3 deduped │ │ ├── cli-boxes@1.0.0 │ │ ├─┬ string-width@2.0.0 │ │ │ ├── is-fullwidth-code-point@2.0.0 │ │ │ └── strip-ansi@3.0.1 deduped │ │ ├─┬ term-size@0.1.1 │ │ │ └─┬ execa@0.4.0 │ │ │ ├─┬ cross-spawn-async@2.2.5 │ │ │ │ ├─┬ lru-cache@4.0.2 │ │ │ │ │ ├── pseudomap@1.0.2 │ │ │ │ │ └── yallist@2.0.0 │ │ │ │ └── which@1.2.14 deduped │ │ │ ├── is-stream@1.1.0 │ │ │ ├─┬ npm-run-path@1.0.0 │ │ │ │ └── path-key@1.0.0 deduped │ │ │ ├── object-assign@4.1.1 │ │ │ ├── path-key@1.0.0 │ │ │ └── strip-eof@1.0.0 │ │ └─┬ widest-line@1.0.0 │ │ └─┬ string-width@1.0.2 │ │ ├── code-point-at@1.1.0 │ │ ├─┬ is-fullwidth-code-point@1.0.0 │ │ │ └── number-is-nan@1.0.1 │ │ └── strip-ansi@3.0.1 deduped │ ├─┬ chalk@1.1.3 │ │ ├── ansi-styles@2.2.1 │ │ ├── escape-string-regexp@1.0.5 │ │ ├─┬ has-ansi@2.0.0 │ │ │ └── ansi-regex@2.1.1 deduped │ │ ├── strip-ansi@3.0.1 deduped │ │ └── supports-color@2.0.0 │ ├─┬ configstore@3.0.0 │ │ ├─┬ dot-prop@4.1.1 │ │ │ └── is-obj@1.0.1 │ │ ├── graceful-fs@4.1.11 deduped │ │ ├── mkdirp@0.5.1 deduped │ │ ├─┬ unique-string@1.0.0 │ │ │ └── crypto-random-string@1.0.0 │ │ ├── write-file-atomic@1.3.1 deduped │ │ └── xdg-basedir@3.0.0 deduped │ ├── is-npm@1.0.0 │ ├─┬ latest-version@3.0.0 │ │ └─┬ package-json@3.1.0 │ │ ├─┬ got@6.7.1 │ │ │ ├─┬ create-error-class@3.0.2 │ │ │ │ └── capture-stack-trace@1.0.0 │ │ │ ├── duplexer3@0.1.4 │ │ │ ├── get-stream@3.0.0 │ │ │ ├── is-redirect@1.0.0 │ │ │ ├── is-retry-allowed@1.1.0 │ │ │ ├── is-stream@1.1.0 │ │ │ ├── lowercase-keys@1.0.0 │ │ │ ├── safe-buffer@5.0.1 │ │ │ ├── timed-out@4.0.1 │ │ │ ├── unzip-response@2.0.1 │ │ │ └─┬ url-parse-lax@1.0.0 │ │ │ └── prepend-http@1.0.4 │ │ ├─┬ registry-auth-token@3.1.0 │ │ │ └─┬ rc@1.1.7 │ │ │ ├── deep-extend@0.4.1 │ │ │ ├── ini@1.3.4 deduped │ │ │ ├── minimist@1.2.0 │ │ │ └── strip-json-comments@2.0.1 │ │ ├─┬ registry-url@3.1.0 │ │ │ └─┬ rc@1.1.7 │ │ │ ├── deep-extend@0.4.1 │ │ │ ├── ini@1.3.4 deduped │ │ │ ├── minimist@1.2.0 │ │ │ └── strip-json-comments@2.0.1 │ │ └── semver@5.3.0 deduped │ ├── lazy-req@2.0.0 │ ├─┬ semver-diff@2.1.0 │ │ └── semver@5.3.0 deduped │ └── xdg-basedir@3.0.0 ├── uuid@3.0.1 ├─┬ validate-npm-package-license@3.0.1 │ ├─┬ spdx-correct@1.0.2 │ │ └── spdx-license-ids@1.2.0 │ └─┬ spdx-expression-parse@1.0.2 │ ├── spdx-exceptions@1.0.4 │ └── spdx-license-ids@1.2.0 ├─┬ validate-npm-package-name@3.0.0 │ └── builtins@1.0.3 ├─┬ which@1.2.14 │ └── isexe@2.0.0 ├── wrappy@1.0.2 └─┬ write-file-atomic@1.3.1 ├── graceful-fs@4.1.11 deduped ├── imurmurhash@0.1.4 deduped └── slide@1.1.6 deduped