Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/npm-cli.js4
-rw-r--r--node_modules/update-notifier/check.js22
-rw-r--r--node_modules/update-notifier/index.js148
-rw-r--r--node_modules/update-notifier/node_modules/boxen/index.js139
-rw-r--r--node_modules/update-notifier/node_modules/boxen/license21
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/CHANGELOG.md21
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/LICENSE13
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/README.md79
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/index.js61
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/index.js37
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/license21
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/code-point-at/index.js32
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/code-point-at/license21
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/code-point-at/package.json106
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/code-point-at/readme.md32
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/index.js46
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/license21
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/index.js4
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/license21
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/package.json103
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/readme.md28
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/package.json108
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/readme.md39
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/package.json123
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/readme.md42
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/package.json107
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/camelcase/index.js49
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/camelcase/license21
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/camelcase/package.json110
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/camelcase/readme.md57
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/cli-boxes/boxes.json50
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/cli-boxes/index.js2
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/cli-boxes/license21
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/cli-boxes/package.json107
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/cli-boxes/readme.md94
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/string-width/index.js35
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/string-width/license21
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/string-width/node_modules/is-fullwidth-code-point/index.js46
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/string-width/node_modules/is-fullwidth-code-point/license21
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/string-width/node_modules/is-fullwidth-code-point/package.json113
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/string-width/node_modules/is-fullwidth-code-point/readme.md39
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/string-width/package.json125
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/string-width/readme.md42
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/index.js70
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/license21
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/index.js172
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/license21
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/.editorconfig15
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/.npmignore3
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/.travis.yml7
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/LICENSE19
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/README.md58
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/appveyor.yml30
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/index.js27
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/lib/enoent.js51
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/lib/parse.js128
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/lib/resolveCommand.js38
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/LICENSE15
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/README.md148
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/lib/lru-cache.js469
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/pseudomap/LICENSE15
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/pseudomap/README.md60
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/pseudomap/map.js9
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/pseudomap/package.json85
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/pseudomap/pseudomap.js113
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/pseudomap/test/basic.js86
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/.npmignore4
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/.travis.yml7
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/CONTRIBUTING.md4
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/LICENSE15
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/README.md204
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/package.json85
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/test/basic.js188
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/yallist.js360
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/package.json103
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/package.json111
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/is-stream/index.js21
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/is-stream/license21
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/is-stream/package.json106
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/is-stream/readme.md42
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/npm-run-path/index.js23
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/npm-run-path/license21
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/npm-run-path/package.json105
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/npm-run-path/readme.md66
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/object-assign/index.js90
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/object-assign/license21
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/object-assign/package.json118
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/object-assign/readme.md61
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/path-key/index.js15
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/path-key/license21
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/path-key/package.json101
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/path-key/readme.md51
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/strip-eof/index.js15
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/strip-eof/license21
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/strip-eof/package.json103
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/strip-eof/readme.md28
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/package.json124
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/readme.md137
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/package.json115
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/readme.md41
-rwxr-xr-xnode_modules/update-notifier/node_modules/boxen/node_modules/term-size/vendor/resizebin0 -> 67056 bytes
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/term-size/vendor/win-term-size.exebin0 -> 17408 bytes
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/index.js8
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/license21
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/index.js37
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/license21
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/code-point-at/index.js32
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/code-point-at/license21
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/code-point-at/package.json118
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/code-point-at/readme.md32
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/index.js46
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/license21
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/index.js4
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/license21
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/package.json115
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/readme.md28
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/package.json120
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/readme.md39
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/package.json123
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/readme.md42
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/package.json119
-rw-r--r--node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/readme.md34
-rw-r--r--node_modules/update-notifier/node_modules/boxen/package.json119
-rw-r--r--node_modules/update-notifier/node_modules/boxen/readme.md175
-rw-r--r--node_modules/update-notifier/node_modules/chalk/index.js116
-rw-r--r--node_modules/update-notifier/node_modules/chalk/license21
-rw-r--r--node_modules/update-notifier/node_modules/chalk/node_modules/ansi-styles/index.js65
-rw-r--r--node_modules/update-notifier/node_modules/chalk/node_modules/ansi-styles/license21
-rw-r--r--node_modules/update-notifier/node_modules/chalk/node_modules/ansi-styles/package.json114
-rw-r--r--node_modules/update-notifier/node_modules/chalk/node_modules/ansi-styles/readme.md86
-rw-r--r--node_modules/update-notifier/node_modules/chalk/node_modules/escape-string-regexp/index.js11
-rw-r--r--node_modules/update-notifier/node_modules/chalk/node_modules/escape-string-regexp/license21
-rw-r--r--node_modules/update-notifier/node_modules/chalk/node_modules/escape-string-regexp/package.json109
-rw-r--r--node_modules/update-notifier/node_modules/chalk/node_modules/escape-string-regexp/readme.md27
-rw-r--r--node_modules/update-notifier/node_modules/chalk/node_modules/has-ansi/index.js4
-rw-r--r--node_modules/update-notifier/node_modules/chalk/node_modules/has-ansi/license21
-rw-r--r--node_modules/update-notifier/node_modules/chalk/node_modules/has-ansi/package.json118
-rw-r--r--node_modules/update-notifier/node_modules/chalk/node_modules/has-ansi/readme.md36
-rw-r--r--node_modules/update-notifier/node_modules/chalk/node_modules/supports-color/index.js50
-rw-r--r--node_modules/update-notifier/node_modules/chalk/node_modules/supports-color/license21
-rw-r--r--node_modules/update-notifier/node_modules/chalk/node_modules/supports-color/package.json113
-rw-r--r--node_modules/update-notifier/node_modules/chalk/node_modules/supports-color/readme.md36
-rw-r--r--node_modules/update-notifier/node_modules/chalk/package.json143
-rw-r--r--node_modules/update-notifier/node_modules/chalk/readme.md213
-rw-r--r--node_modules/update-notifier/node_modules/configstore/index.js98
-rw-r--r--node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/index.js120
-rw-r--r--node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/license21
-rw-r--r--node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/node_modules/is-obj/index.js5
-rw-r--r--node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/node_modules/is-obj/license21
-rw-r--r--node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/node_modules/is-obj/package.json101
-rw-r--r--node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/node_modules/is-obj/readme.md34
-rw-r--r--node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/package.json115
-rw-r--r--node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/readme.md91
-rw-r--r--node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/index.js4
-rw-r--r--node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/license21
-rw-r--r--node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/node_modules/crypto-random-string/index.js10
-rw-r--r--node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/node_modules/crypto-random-string/license21
-rw-r--r--node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/node_modules/crypto-random-string/package.json111
-rw-r--r--node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/node_modules/crypto-random-string/readme.md49
-rw-r--r--node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/package.json111
-rw-r--r--node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/readme.md32
-rw-r--r--node_modules/update-notifier/node_modules/configstore/package.json134
-rw-r--r--node_modules/update-notifier/node_modules/configstore/readme.md114
-rw-r--r--node_modules/update-notifier/node_modules/is-npm/index.js4
-rw-r--r--node_modules/update-notifier/node_modules/is-npm/package.json94
-rw-r--r--node_modules/update-notifier/node_modules/is-npm/readme.md30
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/index.js4
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/license21
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/index.js51
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/license21
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/index.js364
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/license21
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/index.js44
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/license21
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/node_modules/capture-stack-trace/index.js18
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/node_modules/capture-stack-trace/package.json91
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/node_modules/capture-stack-trace/readme.md36
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/package.json95
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/readme.md54
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/duplexer3/LICENSE.md26
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/duplexer3/README.md115
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/duplexer3/index.js76
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/duplexer3/package.json96
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/get-stream/buffer-stream.js51
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/get-stream/index.js51
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/get-stream/license21
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/get-stream/package.json120
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/get-stream/readme.md117
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-redirect/index.js14
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-redirect/license21
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-redirect/package.json99
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-redirect/readme.md28
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-retry-allowed/index.js60
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-retry-allowed/license21
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-retry-allowed/package.json98
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-retry-allowed/readme.md42
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-stream/index.js21
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-stream/license21
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-stream/package.json118
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-stream/readme.md42
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/lowercase-keys/index.js11
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/lowercase-keys/package.json98
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/lowercase-keys/readme.md33
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/.travis.yml7
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/LICENSE21
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/README.md581
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/browser.js1
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/index.js58
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/package.json103
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/test.js99
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/timed-out/index.js55
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/timed-out/license21
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/timed-out/package.json104
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/timed-out/readme.md42
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/unzip-response/index.js36
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/unzip-response/license21
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/unzip-response/package.json109
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/unzip-response/readme.md29
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/index.js14
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/license21
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/node_modules/prepend-http/index.js14
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/node_modules/prepend-http/license21
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/node_modules/prepend-http/package.json103
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/node_modules/prepend-http/readme.md31
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/package.json104
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/readme.md100
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/package.json141
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/readme.md335
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/.npmignore6
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/CHANGELOG.md57
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/LICENSE21
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/README.md57
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/base64.js20
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/index.js92
l---------node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/.bin/rc1
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/.npmignore3
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/LICENSE.APACHE215
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/LICENSE.BSD26
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/LICENSE.MIT24
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/README.md149
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/browser.js7
-rwxr-xr-xnode_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/index.js60
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/lib/utils.js102
l---------node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/.bin/strip-json-comments1
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/deep-extend/CHANGELOG.md21
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/deep-extend/LICENSE20
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/deep-extend/README.md90
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/deep-extend/index.js1
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/deep-extend/lib/deep-extend.js144
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/deep-extend/package.json120
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/.travis.yml8
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/LICENSE18
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/example/parse.js2
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/index.js235
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/package.json105
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/readme.markdown91
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/all_bool.js32
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/bool.js166
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/dash.js31
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/default_bool.js35
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/dotted.js22
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/kv_short.js16
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/long.js31
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/num.js36
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/parse.js197
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/parse_modified.js9
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/short.js67
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/stop_early.js15
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/unknown.js102
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/whitespace.js8
-rwxr-xr-xnode_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/strip-json-comments/cli.js41
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/strip-json-comments/license21
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/strip-json-comments/package.json112
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/strip-json-comments/readme.md80
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/strip-json-comments/strip-json-comments.js73
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/package.json96
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/test/ini.js15
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/test/nested-env-vars.js38
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/test/test.js59
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/package.json110
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/registry-url.js5
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/test/auth-token.test.js325
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/test/registry-url.test.js64
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/index.js6
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/license21
l---------node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/.bin/rc1
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/.npmignore3
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/LICENSE.APACHE215
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/LICENSE.BSD26
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/LICENSE.MIT24
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/README.md149
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/browser.js7
-rwxr-xr-xnode_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/index.js60
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/lib/utils.js102
l---------node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/.bin/strip-json-comments1
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/deep-extend/CHANGELOG.md21
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/deep-extend/LICENSE20
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/deep-extend/README.md90
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/deep-extend/index.js1
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/deep-extend/lib/deep-extend.js144
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/deep-extend/package.json132
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/.travis.yml8
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/LICENSE18
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/example/parse.js2
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/index.js235
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/package.json117
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/readme.markdown91
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/all_bool.js32
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/bool.js166
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/dash.js31
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/default_bool.js35
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/dotted.js22
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/kv_short.js16
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/long.js31
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/num.js36
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/parse.js197
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/parse_modified.js9
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/short.js67
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/stop_early.js15
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/unknown.js102
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/whitespace.js8
-rwxr-xr-xnode_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/strip-json-comments/cli.js41
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/strip-json-comments/license21
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/strip-json-comments/package.json124
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/strip-json-comments/readme.md80
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/strip-json-comments/strip-json-comments.js73
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/package.json108
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/test/ini.js15
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/test/nested-env-vars.js38
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/test/test.js59
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/package.json109
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/readme.md50
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/package.json116
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/readme.md62
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/package.json109
-rw-r--r--node_modules/update-notifier/node_modules/latest-version/readme.md40
-rw-r--r--node_modules/update-notifier/node_modules/lazy-req/index.js53
-rw-r--r--node_modules/update-notifier/node_modules/lazy-req/license21
-rw-r--r--node_modules/update-notifier/node_modules/lazy-req/package.json111
-rw-r--r--node_modules/update-notifier/node_modules/lazy-req/readme.md64
-rw-r--r--node_modules/update-notifier/node_modules/semver-diff/index.js27
-rw-r--r--node_modules/update-notifier/node_modules/semver-diff/license21
-rw-r--r--node_modules/update-notifier/node_modules/semver-diff/package.json97
-rw-r--r--node_modules/update-notifier/node_modules/semver-diff/readme.md52
-rw-r--r--node_modules/update-notifier/node_modules/xdg-basedir/index.js28
-rw-r--r--node_modules/update-notifier/node_modules/xdg-basedir/license21
-rw-r--r--node_modules/update-notifier/node_modules/xdg-basedir/package.json109
-rw-r--r--node_modules/update-notifier/node_modules/xdg-basedir/readme.md60
-rw-r--r--node_modules/update-notifier/package.json149
-rw-r--r--node_modules/update-notifier/readme.md168
-rw-r--r--npm-shrinkwrap.json387
-rw-r--r--package.json2
352 files changed, 22733 insertions, 0 deletions
diff --git a/bin/npm-cli.js b/bin/npm-cli.js
index 8c8fa8031..1f68099bf 100755
--- a/bin/npm-cli.js
+++ b/bin/npm-cli.js
@@ -25,6 +25,10 @@
unsupported.checkForUnsupportedNode()
+ var updater = require('update-notifier')
+ var pkg = require('../package.json')
+ updater({pkg: pkg}).notify({defer: true})
+
var path = require('path')
var npm = require('../lib/npm.js')
var npmconf = require('../lib/config/core.js')
diff --git a/node_modules/update-notifier/check.js b/node_modules/update-notifier/check.js
new file mode 100644
index 000000000..521f84af8
--- /dev/null
+++ b/node_modules/update-notifier/check.js
@@ -0,0 +1,22 @@
+/* eslint-disable unicorn/no-process-exit */
+'use strict';
+let updateNotifier = require('.');
+
+const options = JSON.parse(process.argv[2]);
+
+updateNotifier = new updateNotifier.UpdateNotifier(options);
+
+updateNotifier.checkNpm().then(update => {
+ // Only update the last update check time on success
+ updateNotifier.config.set('lastUpdateCheck', Date.now());
+
+ if (update.type && update.type !== 'latest') {
+ updateNotifier.config.set('update', update);
+ }
+
+ // Call process exit explicitly to terminate the child process
+ // Otherwise the child process will run forever, according to the Node.js docs
+ process.exit();
+}).catch(() => {
+ process.exit(1);
+});
diff --git a/node_modules/update-notifier/index.js b/node_modules/update-notifier/index.js
new file mode 100644
index 000000000..95156fdc8
--- /dev/null
+++ b/node_modules/update-notifier/index.js
@@ -0,0 +1,148 @@
+'use strict';
+const spawn = require('child_process').spawn;
+const path = require('path');
+const format = require('util').format;
+const lazyRequire = require('lazy-req')(require);
+
+const configstore = lazyRequire('configstore');
+const chalk = lazyRequire('chalk');
+const semverDiff = lazyRequire('semver-diff');
+const latestVersion = lazyRequire('latest-version');
+const isNpm = lazyRequire('is-npm');
+const boxen = lazyRequire('boxen');
+const xdgBasedir = lazyRequire('xdg-basedir');
+const ONE_DAY = 1000 * 60 * 60 * 24;
+
+class UpdateNotifier {
+ constructor(options) {
+ this.options = options = options || {};
+ options.pkg = options.pkg || {};
+
+ // Reduce pkg to the essential keys. with fallback to deprecated options
+ // TODO: Remove deprecated options at some point far into the future
+ options.pkg = {
+ name: options.pkg.name || options.packageName,
+ version: options.pkg.version || options.packageVersion
+ };
+
+ if (!options.pkg.name || !options.pkg.version) {
+ throw new Error('pkg.name and pkg.version required');
+ }
+
+ this.packageName = options.pkg.name;
+ this.packageVersion = options.pkg.version;
+ this.updateCheckInterval = typeof options.updateCheckInterval === 'number' ? options.updateCheckInterval : ONE_DAY;
+ this.hasCallback = typeof options.callback === 'function';
+ this.callback = options.callback || (() => {});
+
+ if (!this.hasCallback) {
+ try {
+ const ConfigStore = configstore();
+ this.config = new ConfigStore(`update-notifier-${this.packageName}`, {
+ optOut: false,
+ // Init with the current time so the first check is only
+ // after the set interval, so not to bother users right away
+ lastUpdateCheck: Date.now()
+ });
+ } catch (err) {
+ // Expecting error code EACCES or EPERM
+ const msg =
+ chalk().yellow(format(' %s update check failed ', options.pkg.name)) +
+ format('\n Try running with %s or get access ', chalk().cyan('sudo')) +
+ '\n to the local update config store via \n' +
+ chalk().cyan(format(' sudo chown -R $USER:$(id -gn $USER) %s ', xdgBasedir().config));
+
+ process.on('exit', () => {
+ console.error('\n' + boxen()(msg, {align: 'center'}));
+ });
+ }
+ }
+ }
+ check() {
+ if (this.hasCallback) {
+ this.checkNpm()
+ .then(update => this.callback(null, update))
+ .catch(err => this.callback(err));
+ return;
+ }
+
+ if (
+ !this.config ||
+ this.config.get('optOut') ||
+ 'NO_UPDATE_NOTIFIER' in process.env ||
+ process.argv.indexOf('--no-update-notifier') !== -1
+ ) {
+ return;
+ }
+
+ this.update = this.config.get('update');
+
+ if (this.update) {
+ this.config.delete('update');
+ }
+
+ // Only check for updates on a set interval
+ if (Date.now() - this.config.get('lastUpdateCheck') < this.updateCheckInterval) {
+ return;
+ }
+
+ // Spawn a detached process, passing the options as an environment property
+ spawn(process.execPath, [path.join(__dirname, 'check.js'), JSON.stringify(this.options)], {
+ detached: true,
+ stdio: 'ignore'
+ }).unref();
+ }
+ checkNpm() {
+ return latestVersion()(this.packageName).then(latestVersion => {
+ return {
+ latest: latestVersion,
+ current: this.packageVersion,
+ type: semverDiff()(this.packageVersion, latestVersion) || 'latest',
+ name: this.packageName
+ };
+ });
+ }
+ notify(opts) {
+ if (!process.stdout.isTTY || isNpm() || !this.update) {
+ return this;
+ }
+
+ opts = opts || {};
+
+ opts.message = opts.message || 'Update available ' + chalk().dim(this.update.current) + chalk().reset(' → ') +
+ chalk().green(this.update.latest) + ' \nRun ' + chalk().cyan('npm i -g ' + this.packageName) + ' to update';
+
+ opts.boxenOpts = opts.boxenOpts || {
+ padding: 1,
+ margin: 1,
+ align: 'center',
+ borderColor: 'yellow',
+ borderStyle: 'round'
+ };
+
+ const message = '\n' + boxen()(opts.message, opts.boxenOpts);
+
+ if (opts.defer === false) {
+ console.error(message);
+ } else {
+ process.on('exit', () => {
+ console.error(message);
+ });
+
+ process.on('SIGINT', () => {
+ console.error('');
+ process.exit();
+ });
+ }
+
+ return this;
+ }
+}
+
+module.exports = options => {
+ const updateNotifier = new UpdateNotifier(options);
+ updateNotifier.check();
+ return updateNotifier;
+};
+
+module.exports.UpdateNotifier = UpdateNotifier;
diff --git a/node_modules/update-notifier/node_modules/boxen/index.js b/node_modules/update-notifier/node_modules/boxen/index.js
new file mode 100644
index 000000000..95d81d561
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/index.js
@@ -0,0 +1,139 @@
+'use strict';
+const stringWidth = require('string-width');
+const chalk = require('chalk');
+const widestLine = require('widest-line');
+const cliBoxes = require('cli-boxes');
+const camelCase = require('camelcase');
+const ansiAlign = require('ansi-align');
+const termSize = require('term-size');
+
+const getObject = detail => {
+ let obj;
+
+ if (typeof detail === 'number') {
+ obj = {
+ top: detail,
+ right: detail * 3,
+ bottom: detail,
+ left: detail * 3
+ };
+ } else {
+ obj = Object.assign({
+ top: 0,
+ right: 0,
+ bottom: 0,
+ left: 0
+ }, detail);
+ }
+
+ return obj;
+};
+
+const getBorderChars = borderStyle => {
+ const sides = [
+ 'topLeft',
+ 'topRight',
+ 'bottomRight',
+ 'bottomLeft',
+ 'vertical',
+ 'horizontal'
+ ];
+
+ let chars;
+
+ if (typeof borderStyle === 'string') {
+ chars = cliBoxes[borderStyle];
+
+ if (!chars) {
+ throw new TypeError(`Invalid border style: ${borderStyle}`);
+ }
+ } else {
+ sides.forEach(key => {
+ if (!borderStyle[key] || typeof borderStyle[key] !== 'string') {
+ throw new TypeError(`Invalid border style: ${key}`);
+ }
+ });
+
+ chars = borderStyle;
+ }
+
+ return chars;
+};
+
+const getBackgroundColorName = x => camelCase('bg', x);
+
+module.exports = (text, opts) => {
+ opts = Object.assign({
+ padding: 0,
+ borderStyle: 'single',
+ dimBorder: false,
+ align: 'left',
+ float: 'left'
+ }, opts);
+
+ if (opts.backgroundColor) {
+ opts.backgroundColor = getBackgroundColorName(opts.backgroundColor);
+ }
+
+ if (opts.borderColor && !chalk[opts.borderColor]) {
+ throw new Error(`${opts.borderColor} is not a valid borderColor`);
+ }
+
+ if (opts.backgroundColor && !chalk[opts.backgroundColor]) {
+ throw new Error(`${opts.backgroundColor} is not a valid backgroundColor`);
+ }
+
+ const chars = getBorderChars(opts.borderStyle);
+ const padding = getObject(opts.padding);
+ const margin = getObject(opts.margin);
+
+ const colorizeBorder = x => {
+ const ret = opts.borderColor ? chalk[opts.borderColor](x) : x;
+ return opts.dimBorder ? chalk.dim(ret) : ret;
+ };
+
+ const colorizeContent = x => opts.backgroundColor ? chalk[opts.backgroundColor](x) : x;
+
+ text = ansiAlign(text, {align: opts.align});
+
+ const NL = '\n';
+ const PAD = ' ';
+
+ let lines = text.split(NL);
+
+ if (padding.top > 0) {
+ lines = Array(padding.top).fill('').concat(lines);
+ }
+
+ if (padding.bottom > 0) {
+ lines = lines.concat(Array(padding.bottom).fill(''));
+ }
+
+ const contentWidth = widestLine(text) + padding.left + padding.right;
+ const paddingLeft = PAD.repeat(padding.left);
+ const columns = termSize().columns;
+ let marginLeft = PAD.repeat(margin.left);
+
+ if (opts.float === 'center') {
+ const padWidth = (columns - contentWidth) / 2;
+ marginLeft = PAD.repeat(padWidth);
+ } else if (opts.float === 'right') {
+ let padWidth = Math.max(columns - contentWidth - 2, 0);
+ padWidth = padWidth < 0 ? 0 : padWidth;
+ marginLeft = PAD.repeat(padWidth);
+ }
+
+ const horizontal = chars.horizontal.repeat(contentWidth);
+ const top = colorizeBorder(NL.repeat(margin.top) + marginLeft + chars.topLeft + horizontal + chars.topRight);
+ const bottom = colorizeBorder(marginLeft + chars.bottomLeft + horizontal + chars.bottomRight + NL.repeat(margin.bottom));
+ const side = colorizeBorder(chars.vertical);
+
+ const middle = lines.map(line => {
+ const paddingRight = PAD.repeat(contentWidth - stringWidth(line) - padding.left);
+ return marginLeft + side + colorizeContent(paddingLeft + line + paddingRight) + side;
+ }).join(NL);
+
+ return top + NL + middle + NL + bottom;
+};
+
+module.exports._borderStyles = cliBoxes;
diff --git a/node_modules/update-notifier/node_modules/boxen/license b/node_modules/update-notifier/node_modules/boxen/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/CHANGELOG.md b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/CHANGELOG.md
new file mode 100644
index 000000000..a2927e22e
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/CHANGELOG.md
@@ -0,0 +1,21 @@
+# Change Log
+
+All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+
+<a name="1.1.0"></a>
+# [1.1.0](https://github.com/nexdrew/ansi-align/compare/v1.0.0...v1.1.0) (2016-06-06)
+
+
+### Features
+
+* support left-alignment as no-op ([#3](https://github.com/nexdrew/ansi-align/issues/3)) ([e581db6](https://github.com/nexdrew/ansi-align/commit/e581db6))
+
+
+
+<a name="1.0.0"></a>
+# 1.0.0 (2016-04-30)
+
+
+### Features
+
+* initial commit ([1914d90](https://github.com/nexdrew/ansi-align/commit/1914d90))
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/LICENSE b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/LICENSE
new file mode 100644
index 000000000..ab601b657
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/LICENSE
@@ -0,0 +1,13 @@
+Copyright (c) 2016, Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any purpose
+with or without fee is hereby granted, provided that the above copyright notice
+and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+THIS SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/README.md b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/README.md
new file mode 100644
index 000000000..3aafc67f3
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/README.md
@@ -0,0 +1,79 @@
+# ansi-align
+
+> align-text with ANSI support for CLIs
+
+[![Build Status](https://travis-ci.org/nexdrew/ansi-align.svg?branch=master)](https://travis-ci.org/nexdrew/ansi-align)
+[![Coverage Status](https://coveralls.io/repos/github/nexdrew/ansi-align/badge.svg?branch=master)](https://coveralls.io/github/nexdrew/ansi-align?branch=master)
+[![Standard Version](https://img.shields.io/badge/release-standard%20version-brightgreen.svg)](https://github.com/conventional-changelog/standard-version)
+
+Easily center- or right- align a block of text, carefully ignoring ANSI escape codes.
+
+E.g. turn this:
+
+<img width="281" alt="ansi text block no alignment :(" src="https://cloud.githubusercontent.com/assets/1929625/14937509/7c3076dc-0ed7-11e6-8c16-4f6a4ccc8346.png">
+
+Into this:
+
+<img width="278" alt="ansi text block center aligned!" src="https://cloud.githubusercontent.com/assets/1929625/14937510/7c3ca0b0-0ed7-11e6-8f0a-541ca39b6e0a.png">
+
+## Install
+
+```sh
+npm install --save ansi-align
+```
+
+```js
+var ansiAlign = require('ansi-align')
+```
+
+## API
+
+### `ansiAlign(text, [opts])`
+
+Align the given text per the line with the greatest [`string-width`](https://github.com/sindresorhus/string-width), returning a new string (or array).
+
+#### Arguments
+
+- `text`: required, string or array
+
+ The text to align. If a string is given, it will be split using either the `opts.split` value or `'\n'` by default. If an array is given, a different array of modified strings will be returned.
+
+- `opts`: optional, object
+
+ Options to change behavior, see below.
+
+#### Options
+
+- `opts.align`: string, default `'center'`
+
+ The alignment mode. Use `'center'` for center-alignment, `'right'` for right-alignment, or `'left'` for left-alignment. Note that the given `text` is assumed to be left-aligned already, so specifying `align: 'left'` just returns the `text` as is (no-op).
+
+- `opts.split`: string or RegExp, default `'\n'`
+
+ The separator to use when splitting the text. Only used if text is given as a string.
+
+- `opts.pad`: string, default `' '`
+
+ The value used to left-pad (prepend to) lines of lesser width. Will be repeated as necessary to adjust alignment to the line with the greatest width.
+
+### `ansiAlign.center(text)`
+
+Alias for `ansiAlign(text, { align: 'center' })`.
+
+### `ansiAlign.right(text)`
+
+Alias for `ansiAlign(text, { align: 'right' })`.
+
+### `ansiAlign.left(text)`
+
+Alias for `ansiAlign(text, { align: 'left' })`, which is a no-op.
+
+## Similar Packages
+
+- [`center-align`](https://github.com/jonschlinkert/center-align): Very close to this package, except it doesn't support ANSI codes.
+- [`left-pad`](https://github.com/camwest/left-pad): Great for left-padding but does not support center alignment or ANSI codes.
+- Pretty much anything by the [chalk](https://github.com/chalk) team
+
+## License
+
+ISC © Contributors
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/index.js b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/index.js
new file mode 100644
index 000000000..16a98fc38
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/index.js
@@ -0,0 +1,61 @@
+'use strict'
+
+var stringWidth = require('string-width')
+
+function ansiAlign (text, opts) {
+ if (!text) return text
+
+ opts = opts || {}
+ var align = opts.align || 'center'
+
+ // short-circuit `align: 'left'` as no-op
+ if (align === 'left') return text
+
+ var split = opts.split || '\n'
+ var pad = opts.pad || ' '
+ var widthDiffFn = align !== 'right' ? halfDiff : fullDiff
+
+ var returnString = false
+ if (!Array.isArray(text)) {
+ returnString = true
+ text = String(text).split(split)
+ }
+
+ var width
+ var maxWidth = 0
+ text = text.map(function (str) {
+ str = String(str)
+ width = stringWidth(str)
+ maxWidth = Math.max(width, maxWidth)
+ return {
+ str: str,
+ width: width
+ }
+ }).map(function (obj) {
+ return new Array(widthDiffFn(maxWidth, obj.width) + 1).join(pad) + obj.str
+ })
+
+ return returnString ? text.join(split) : text
+}
+
+ansiAlign.left = function left (text) {
+ return ansiAlign(text, { align: 'left' })
+}
+
+ansiAlign.center = function center (text) {
+ return ansiAlign(text, { align: 'center' })
+}
+
+ansiAlign.right = function right (text) {
+ return ansiAlign(text, { align: 'right' })
+}
+
+module.exports = ansiAlign
+
+function halfDiff (maxWidth, curWidth) {
+ return Math.floor((maxWidth - curWidth) / 2)
+}
+
+function fullDiff (maxWidth, curWidth) {
+ return maxWidth - curWidth
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/index.js b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/index.js
new file mode 100644
index 000000000..b9bec6244
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/index.js
@@ -0,0 +1,37 @@
+'use strict';
+var stripAnsi = require('strip-ansi');
+var codePointAt = require('code-point-at');
+var isFullwidthCodePoint = require('is-fullwidth-code-point');
+
+// https://github.com/nodejs/io.js/blob/cff7300a578be1b10001f2d967aaedc88aee6402/lib/readline.js#L1345
+module.exports = function (str) {
+ if (typeof str !== 'string' || str.length === 0) {
+ return 0;
+ }
+
+ var width = 0;
+
+ str = stripAnsi(str);
+
+ for (var i = 0; i < str.length; i++) {
+ var code = codePointAt(str, i);
+
+ // ignore control characters
+ if (code <= 0x1f || (code >= 0x7f && code <= 0x9f)) {
+ continue;
+ }
+
+ // surrogates
+ if (code >= 0x10000) {
+ i++;
+ }
+
+ if (isFullwidthCodePoint(code)) {
+ width += 2;
+ } else {
+ width++;
+ }
+ }
+
+ return width;
+};
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/license b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/code-point-at/index.js b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/code-point-at/index.js
new file mode 100644
index 000000000..0432fe6a3
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/code-point-at/index.js
@@ -0,0 +1,32 @@
+/* eslint-disable babel/new-cap, xo/throw-new-error */
+'use strict';
+module.exports = function (str, pos) {
+ if (str === null || str === undefined) {
+ throw TypeError();
+ }
+
+ str = String(str);
+
+ var size = str.length;
+ var i = pos ? Number(pos) : 0;
+
+ if (Number.isNaN(i)) {
+ i = 0;
+ }
+
+ if (i < 0 || i >= size) {
+ return undefined;
+ }
+
+ var first = str.charCodeAt(i);
+
+ if (first >= 0xD800 && first <= 0xDBFF && size > i + 1) {
+ var second = str.charCodeAt(i + 1);
+
+ if (second >= 0xDC00 && second <= 0xDFFF) {
+ return ((first - 0xD800) * 0x400) + second - 0xDC00 + 0x10000;
+ }
+ }
+
+ return first;
+};
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/code-point-at/license b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/code-point-at/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/code-point-at/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/code-point-at/package.json b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/code-point-at/package.json
new file mode 100644
index 000000000..9fa9bf0f1
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/code-point-at/package.json
@@ -0,0 +1,106 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "code-point-at@^1.0.0",
+ "scope": null,
+ "escapedName": "code-point-at",
+ "name": "code-point-at",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width"
+ ]
+ ],
+ "_from": "code-point-at@>=1.0.0 <2.0.0",
+ "_id": "code-point-at@1.1.0",
+ "_inCache": true,
+ "_location": "/update-notifier/boxen/ansi-align/string-width/code-point-at",
+ "_nodeVersion": "4.6.1",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/code-point-at-1.1.0.tgz_1478169780337_0.8445875702891499"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.15.9",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "code-point-at@^1.0.0",
+ "scope": null,
+ "escapedName": "code-point-at",
+ "name": "code-point-at",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/boxen/ansi-align/string-width"
+ ],
+ "_resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "_shasum": "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77",
+ "_shrinkwrap": null,
+ "_spec": "code-point-at@^1.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/code-point-at/issues"
+ },
+ "dependencies": {},
+ "description": "ES2015 `String#codePointAt()` ponyfill",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "^0.16.0"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77",
+ "tarball": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "f8f21c8df2d40248fef1b36ca9076e59c0c34791",
+ "homepage": "https://github.com/sindresorhus/code-point-at#readme",
+ "keywords": [
+ "es2015",
+ "ponyfill",
+ "polyfill",
+ "shim",
+ "string",
+ "str",
+ "code",
+ "point",
+ "at",
+ "codepoint",
+ "unicode"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "code-point-at",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/code-point-at.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "1.1.0"
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/code-point-at/readme.md b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/code-point-at/readme.md
new file mode 100644
index 000000000..4c97730e6
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/code-point-at/readme.md
@@ -0,0 +1,32 @@
+# code-point-at [![Build Status](https://travis-ci.org/sindresorhus/code-point-at.svg?branch=master)](https://travis-ci.org/sindresorhus/code-point-at)
+
+> ES2015 [`String#codePointAt()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/codePointAt) [ponyfill](https://ponyfill.com)
+
+
+## Install
+
+```
+$ npm install --save code-point-at
+```
+
+
+## Usage
+
+```js
+var codePointAt = require('code-point-at');
+
+codePointAt('🐴');
+//=> 128052
+
+codePointAt('abc', 2);
+//=> 99
+```
+
+## API
+
+### codePointAt(input, [position])
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/index.js b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/index.js
new file mode 100644
index 000000000..a7d3e3855
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/index.js
@@ -0,0 +1,46 @@
+'use strict';
+var numberIsNan = require('number-is-nan');
+
+module.exports = function (x) {
+ if (numberIsNan(x)) {
+ return false;
+ }
+
+ // https://github.com/nodejs/io.js/blob/cff7300a578be1b10001f2d967aaedc88aee6402/lib/readline.js#L1369
+
+ // code points are derived from:
+ // http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt
+ if (x >= 0x1100 && (
+ x <= 0x115f || // Hangul Jamo
+ 0x2329 === x || // LEFT-POINTING ANGLE BRACKET
+ 0x232a === x || // RIGHT-POINTING ANGLE BRACKET
+ // CJK Radicals Supplement .. Enclosed CJK Letters and Months
+ (0x2e80 <= x && x <= 0x3247 && x !== 0x303f) ||
+ // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A
+ 0x3250 <= x && x <= 0x4dbf ||
+ // CJK Unified Ideographs .. Yi Radicals
+ 0x4e00 <= x && x <= 0xa4c6 ||
+ // Hangul Jamo Extended-A
+ 0xa960 <= x && x <= 0xa97c ||
+ // Hangul Syllables
+ 0xac00 <= x && x <= 0xd7a3 ||
+ // CJK Compatibility Ideographs
+ 0xf900 <= x && x <= 0xfaff ||
+ // Vertical Forms
+ 0xfe10 <= x && x <= 0xfe19 ||
+ // CJK Compatibility Forms .. Small Form Variants
+ 0xfe30 <= x && x <= 0xfe6b ||
+ // Halfwidth and Fullwidth Forms
+ 0xff01 <= x && x <= 0xff60 ||
+ 0xffe0 <= x && x <= 0xffe6 ||
+ // Kana Supplement
+ 0x1b000 <= x && x <= 0x1b001 ||
+ // Enclosed Ideographic Supplement
+ 0x1f200 <= x && x <= 0x1f251 ||
+ // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane
+ 0x20000 <= x && x <= 0x3fffd)) {
+ return true;
+ }
+
+ return false;
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/license b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/index.js b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/index.js
new file mode 100644
index 000000000..79be4b9cb
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/index.js
@@ -0,0 +1,4 @@
+'use strict';
+module.exports = Number.isNaN || function (x) {
+ return x !== x;
+};
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/license b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/package.json b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/package.json
new file mode 100644
index 000000000..89ebb69f3
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/package.json
@@ -0,0 +1,103 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "number-is-nan@^1.0.0",
+ "scope": null,
+ "escapedName": "number-is-nan",
+ "name": "number-is-nan",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point"
+ ]
+ ],
+ "_from": "number-is-nan@>=1.0.0 <2.0.0",
+ "_id": "number-is-nan@1.0.1",
+ "_inCache": true,
+ "_location": "/update-notifier/boxen/ansi-align/string-width/is-fullwidth-code-point/number-is-nan",
+ "_nodeVersion": "4.5.0",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/number-is-nan-1.0.1.tgz_1475212313367_0.9480371843092144"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.15.9",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "number-is-nan@^1.0.0",
+ "scope": null,
+ "escapedName": "number-is-nan",
+ "name": "number-is-nan",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/boxen/ansi-align/string-width/is-fullwidth-code-point"
+ ],
+ "_resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "_shasum": "097b602b53422a522c1afb8790318336941a011d",
+ "_shrinkwrap": null,
+ "_spec": "number-is-nan@^1.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/number-is-nan/issues"
+ },
+ "dependencies": {},
+ "description": "ES2015 Number.isNaN() ponyfill",
+ "devDependencies": {
+ "ava": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "097b602b53422a522c1afb8790318336941a011d",
+ "tarball": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "ed9cdac3f428cc929b61bb230da42c87477af4b9",
+ "homepage": "https://github.com/sindresorhus/number-is-nan#readme",
+ "keywords": [
+ "es2015",
+ "ecmascript",
+ "ponyfill",
+ "polyfill",
+ "shim",
+ "number",
+ "is",
+ "nan",
+ "not"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "number-is-nan",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/number-is-nan.git"
+ },
+ "scripts": {
+ "test": "ava"
+ },
+ "version": "1.0.1"
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/readme.md b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/readme.md
new file mode 100644
index 000000000..246350871
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/readme.md
@@ -0,0 +1,28 @@
+# number-is-nan [![Build Status](https://travis-ci.org/sindresorhus/number-is-nan.svg?branch=master)](https://travis-ci.org/sindresorhus/number-is-nan)
+
+> ES2015 [`Number.isNaN()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN) [ponyfill](https://ponyfill.com)
+
+
+## Install
+
+```
+$ npm install --save number-is-nan
+```
+
+
+## Usage
+
+```js
+var numberIsNan = require('number-is-nan');
+
+numberIsNan(NaN);
+//=> true
+
+numberIsNan('unicorn');
+//=> false
+```
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/package.json b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/package.json
new file mode 100644
index 000000000..0c2a3acb5
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/package.json
@@ -0,0 +1,108 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "is-fullwidth-code-point@^1.0.0",
+ "scope": null,
+ "escapedName": "is-fullwidth-code-point",
+ "name": "is-fullwidth-code-point",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width"
+ ]
+ ],
+ "_from": "is-fullwidth-code-point@>=1.0.0 <2.0.0",
+ "_id": "is-fullwidth-code-point@1.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/boxen/ansi-align/string-width/is-fullwidth-code-point",
+ "_nodeVersion": "0.12.5",
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.11.2",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "is-fullwidth-code-point@^1.0.0",
+ "scope": null,
+ "escapedName": "is-fullwidth-code-point",
+ "name": "is-fullwidth-code-point",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/boxen/ansi-align/string-width"
+ ],
+ "_resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "_shasum": "ef9e31386f031a7f0d643af82fde50c457ef00cb",
+ "_shrinkwrap": null,
+ "_spec": "is-fullwidth-code-point@^1.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/is-fullwidth-code-point/issues"
+ },
+ "dependencies": {
+ "number-is-nan": "^1.0.0"
+ },
+ "description": "Check if the character represented by a given Unicode code point is fullwidth",
+ "devDependencies": {
+ "ava": "0.0.4",
+ "code-point-at": "^1.0.0"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "ef9e31386f031a7f0d643af82fde50c457ef00cb",
+ "tarball": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "f2152d357f41f82785436d428e4f8ede143b7548",
+ "homepage": "https://github.com/sindresorhus/is-fullwidth-code-point",
+ "keywords": [
+ "fullwidth",
+ "full-width",
+ "full",
+ "width",
+ "unicode",
+ "character",
+ "char",
+ "string",
+ "str",
+ "codepoint",
+ "code",
+ "point",
+ "is",
+ "detect",
+ "check"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "is-fullwidth-code-point",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/is-fullwidth-code-point.git"
+ },
+ "scripts": {
+ "test": "node test.js"
+ },
+ "version": "1.0.0"
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/readme.md b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/readme.md
new file mode 100644
index 000000000..4936464b1
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point/readme.md
@@ -0,0 +1,39 @@
+# is-fullwidth-code-point [![Build Status](https://travis-ci.org/sindresorhus/is-fullwidth-code-point.svg?branch=master)](https://travis-ci.org/sindresorhus/is-fullwidth-code-point)
+
+> Check if the character represented by a given [Unicode code point](https://en.wikipedia.org/wiki/Code_point) is [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms)
+
+
+## Install
+
+```
+$ npm install --save is-fullwidth-code-point
+```
+
+
+## Usage
+
+```js
+var isFullwidthCodePoint = require('is-fullwidth-code-point');
+
+isFullwidthCodePoint('谢'.codePointAt());
+//=> true
+
+isFullwidthCodePoint('a'.codePointAt());
+//=> false
+```
+
+
+## API
+
+### isFullwidthCodePoint(input)
+
+#### input
+
+Type: `number`
+
+[Code point](https://en.wikipedia.org/wiki/Code_point) of a character.
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/package.json b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/package.json
new file mode 100644
index 000000000..8da6845cd
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/package.json
@@ -0,0 +1,123 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "string-width@^1.0.1",
+ "scope": null,
+ "escapedName": "string-width",
+ "name": "string-width",
+ "rawSpec": "^1.0.1",
+ "spec": ">=1.0.1 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align"
+ ]
+ ],
+ "_from": "string-width@>=1.0.1 <2.0.0",
+ "_id": "string-width@1.0.2",
+ "_inCache": true,
+ "_location": "/update-notifier/boxen/ansi-align/string-width",
+ "_nodeVersion": "4.4.5",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/string-width-1.0.2.tgz_1471188233009_0.6573935742489994"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.15.5",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "string-width@^1.0.1",
+ "scope": null,
+ "escapedName": "string-width",
+ "name": "string-width",
+ "rawSpec": "^1.0.1",
+ "spec": ">=1.0.1 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/boxen/ansi-align"
+ ],
+ "_resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "_shasum": "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3",
+ "_shrinkwrap": null,
+ "_spec": "string-width@^1.0.1",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/string-width/issues"
+ },
+ "dependencies": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ },
+ "description": "Get the visual width of a string - the number of columns required to display it",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3",
+ "tarball": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "282cf3d53918a92cc3ee0778dcf938039bcbc47b",
+ "homepage": "https://github.com/sindresorhus/string-width#readme",
+ "keywords": [
+ "string",
+ "str",
+ "character",
+ "char",
+ "unicode",
+ "width",
+ "visual",
+ "column",
+ "columns",
+ "fullwidth",
+ "full-width",
+ "full",
+ "ansi",
+ "escape",
+ "codes",
+ "cli",
+ "command-line",
+ "terminal",
+ "console",
+ "cjk",
+ "chinese",
+ "japanese",
+ "korean",
+ "fixed-width"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "string-width",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/string-width.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "1.0.2"
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/readme.md b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/readme.md
new file mode 100644
index 000000000..1ab42c935
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/readme.md
@@ -0,0 +1,42 @@
+# string-width [![Build Status](https://travis-ci.org/sindresorhus/string-width.svg?branch=master)](https://travis-ci.org/sindresorhus/string-width)
+
+> Get the visual width of a string - the number of columns required to display it
+
+Some Unicode characters are [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms) and use double the normal width. [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) are stripped and doesn't affect the width.
+
+Useful to be able to measure the actual width of command-line output.
+
+
+## Install
+
+```
+$ npm install --save string-width
+```
+
+
+## Usage
+
+```js
+const stringWidth = require('string-width');
+
+stringWidth('古');
+//=> 2
+
+stringWidth('\u001b[1m古\u001b[22m');
+//=> 2
+
+stringWidth('a');
+//=> 1
+```
+
+
+## Related
+
+- [string-width-cli](https://github.com/sindresorhus/string-width-cli) - CLI for this module
+- [string-length](https://github.com/sindresorhus/string-length) - Get the real length of a string
+- [widest-line](https://github.com/sindresorhus/widest-line) - Get the visual width of the widest line in a string
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/package.json b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/package.json
new file mode 100644
index 000000000..177b51b53
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/package.json
@@ -0,0 +1,107 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "ansi-align@^1.1.0",
+ "scope": null,
+ "escapedName": "ansi-align",
+ "name": "ansi-align",
+ "rawSpec": "^1.1.0",
+ "spec": ">=1.1.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen"
+ ]
+ ],
+ "_from": "ansi-align@>=1.1.0 <2.0.0",
+ "_id": "ansi-align@1.1.0",
+ "_inCache": true,
+ "_location": "/update-notifier/boxen/ansi-align",
+ "_nodeVersion": "5.11.0",
+ "_npmOperationalInternal": {
+ "host": "packages-16-east.internal.npmjs.com",
+ "tmp": "tmp/ansi-align-1.1.0.tgz_1465244078324_0.3411616289522499"
+ },
+ "_npmUser": {
+ "name": "nexdrew",
+ "email": "andrew@npmjs.com"
+ },
+ "_npmVersion": "3.8.8",
+ "_phantomChildren": {
+ "strip-ansi": "3.0.1"
+ },
+ "_requested": {
+ "raw": "ansi-align@^1.1.0",
+ "scope": null,
+ "escapedName": "ansi-align",
+ "name": "ansi-align",
+ "rawSpec": "^1.1.0",
+ "spec": ">=1.1.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/boxen"
+ ],
+ "_resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-1.1.0.tgz",
+ "_shasum": "2f0c1658829739add5ebb15e6b0c6e3423f016ba",
+ "_shrinkwrap": null,
+ "_spec": "ansi-align@^1.1.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen",
+ "author": {
+ "name": "nexdrew"
+ },
+ "bugs": {
+ "url": "https://github.com/nexdrew/ansi-align/issues"
+ },
+ "dependencies": {
+ "string-width": "^1.0.1"
+ },
+ "description": "align-text with ANSI support for CLIs",
+ "devDependencies": {
+ "ava": "^0.15.2",
+ "chalk": "^1.1.3",
+ "coveralls": "^2.11.9",
+ "nyc": "^6.4.4",
+ "standard": "^7.1.2",
+ "standard-version": "^2.3.0"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "2f0c1658829739add5ebb15e6b0c6e3423f016ba",
+ "tarball": "https://registry.npmjs.org/ansi-align/-/ansi-align-1.1.0.tgz"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "839c4e214a5690d7463dda32cf76d2ac15826f7a",
+ "homepage": "https://github.com/nexdrew/ansi-align#readme",
+ "keywords": [
+ "ansi",
+ "align",
+ "cli",
+ "center",
+ "pad"
+ ],
+ "license": "ISC",
+ "main": "index.js",
+ "maintainers": [
+ {
+ "name": "nexdrew",
+ "email": "andrew@npmjs.com"
+ }
+ ],
+ "name": "ansi-align",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/nexdrew/ansi-align.git"
+ },
+ "scripts": {
+ "coverage": "nyc report --reporter=text-lcov | coveralls",
+ "pretest": "standard",
+ "release": "standard-version",
+ "test": "nyc ava"
+ },
+ "version": "1.1.0"
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/camelcase/index.js b/node_modules/update-notifier/node_modules/boxen/node_modules/camelcase/index.js
new file mode 100644
index 000000000..e3d2a4562
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/camelcase/index.js
@@ -0,0 +1,49 @@
+'use strict';
+
+function preserveCamelCase(str) {
+ let isLastCharLower = false;
+ let isLastCharUpper = false;
+ let isLastLastCharUpper = false;
+
+ for (let i = 0; i < str.length; i++) {
+ const c = str.charAt(i);
+
+ if (isLastCharLower && (/[a-zA-Z]/).test(c) && c.toUpperCase() === c) {
+ str = str.substr(0, i) + '-' + str.substr(i);
+ isLastCharLower = false;
+ isLastLastCharUpper = isLastCharUpper;
+ isLastCharUpper = true;
+ i++;
+ } else if (isLastCharUpper && isLastLastCharUpper && (/[a-zA-Z]/).test(c) && c.toLowerCase() === c) {
+ str = str.substr(0, i - 1) + '-' + str.substr(i - 1);
+ isLastLastCharUpper = isLastCharUpper;
+ isLastCharUpper = false;
+ isLastCharLower = true;
+ } else {
+ isLastCharLower = c.toLowerCase() === c;
+ isLastLastCharUpper = isLastCharUpper;
+ isLastCharUpper = c.toUpperCase() === c;
+ }
+ }
+
+ return str;
+}
+
+module.exports = function () {
+ let str = [].map.call(arguments, x => x.trim()).filter(x => x.length).join('-');
+
+ if (str.length === 0) {
+ return '';
+ }
+
+ if (str.length === 1) {
+ return str.toLowerCase();
+ }
+
+ str = preserveCamelCase(str);
+
+ return str
+ .replace(/^[_.\- ]+/, '')
+ .toLowerCase()
+ .replace(/[_.\- ]+(\w|$)/g, (m, p1) => p1.toUpperCase());
+};
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/camelcase/license b/node_modules/update-notifier/node_modules/boxen/node_modules/camelcase/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/camelcase/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/camelcase/package.json b/node_modules/update-notifier/node_modules/boxen/node_modules/camelcase/package.json
new file mode 100644
index 000000000..5ca75e731
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/camelcase/package.json
@@ -0,0 +1,110 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "camelcase@^4.0.0",
+ "scope": null,
+ "escapedName": "camelcase",
+ "name": "camelcase",
+ "rawSpec": "^4.0.0",
+ "spec": ">=4.0.0 <5.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen"
+ ]
+ ],
+ "_from": "camelcase@>=4.0.0 <5.0.0",
+ "_id": "camelcase@4.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/boxen/camelcase",
+ "_nodeVersion": "4.6.1",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/camelcase-4.0.0.tgz_1478620489451_0.9916922175325453"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.15.9",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "camelcase@^4.0.0",
+ "scope": null,
+ "escapedName": "camelcase",
+ "name": "camelcase",
+ "rawSpec": "^4.0.0",
+ "spec": ">=4.0.0 <5.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/boxen"
+ ],
+ "_resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.0.0.tgz",
+ "_shasum": "8b0f90d44be5e281b903b9887349b92595ef07f2",
+ "_shrinkwrap": null,
+ "_spec": "camelcase@^4.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/camelcase/issues"
+ },
+ "dependencies": {},
+ "description": "Convert a dash/dot/underscore/space separated string to camelCase: foo-bar → fooBar",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "8b0f90d44be5e281b903b9887349b92595ef07f2",
+ "tarball": "https://registry.npmjs.org/camelcase/-/camelcase-4.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "b1f77b8185bc99f32ba6fcf7a9ffd87a802f1152",
+ "homepage": "https://github.com/sindresorhus/camelcase#readme",
+ "keywords": [
+ "camelcase",
+ "camel-case",
+ "camel",
+ "case",
+ "dash",
+ "hyphen",
+ "dot",
+ "underscore",
+ "separator",
+ "string",
+ "text",
+ "convert"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "camelcase",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/camelcase.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "4.0.0",
+ "xo": {
+ "esnext": true
+ }
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/camelcase/readme.md b/node_modules/update-notifier/node_modules/boxen/node_modules/camelcase/readme.md
new file mode 100644
index 000000000..0610dc627
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/camelcase/readme.md
@@ -0,0 +1,57 @@
+# camelcase [![Build Status](https://travis-ci.org/sindresorhus/camelcase.svg?branch=master)](https://travis-ci.org/sindresorhus/camelcase)
+
+> Convert a dash/dot/underscore/space separated string to camelCase: `foo-bar` → `fooBar`
+
+
+## Install
+
+```
+$ npm install --save camelcase
+```
+
+
+## Usage
+
+```js
+const camelCase = require('camelcase');
+
+camelCase('foo-bar');
+//=> 'fooBar'
+
+camelCase('foo_bar');
+//=> 'fooBar'
+
+camelCase('Foo-Bar');
+//=> 'fooBar'
+
+camelCase('--foo.bar');
+//=> 'fooBar'
+
+camelCase('__foo__bar__');
+//=> 'fooBar'
+
+camelCase('foo bar');
+//=> 'fooBar'
+
+console.log(process.argv[3]);
+//=> '--foo-bar'
+camelCase(process.argv[3]);
+//=> 'fooBar'
+
+camelCase('foo', 'bar');
+//=> 'fooBar'
+
+camelCase('__foo__', '--bar');
+//=> 'fooBar'
+```
+
+
+## Related
+
+- [decamelize](https://github.com/sindresorhus/decamelize) - The inverse of this module
+- [uppercamelcase](https://github.com/SamVerschueren/uppercamelcase) - Like this module, but to PascalCase instead of camelCase
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/cli-boxes/boxes.json b/node_modules/update-notifier/node_modules/boxen/node_modules/cli-boxes/boxes.json
new file mode 100644
index 000000000..4a093c9a1
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/cli-boxes/boxes.json
@@ -0,0 +1,50 @@
+{
+ "single": {
+ "topLeft": "┌",
+ "topRight": "┐",
+ "bottomRight": "┘",
+ "bottomLeft": "└",
+ "vertical": "│",
+ "horizontal": "─"
+ },
+ "double": {
+ "topLeft": "╔",
+ "topRight": "╗",
+ "bottomRight": "╝",
+ "bottomLeft": "╚",
+ "vertical": "║",
+ "horizontal": "═"
+ },
+ "round": {
+ "topLeft": "╭",
+ "topRight": "╮",
+ "bottomRight": "╯",
+ "bottomLeft": "╰",
+ "vertical": "│",
+ "horizontal": "─"
+ },
+ "single-double": {
+ "topLeft": "╓",
+ "topRight": "╖",
+ "bottomRight": "╜",
+ "bottomLeft": "╙",
+ "vertical": "║",
+ "horizontal": "─"
+ },
+ "double-single": {
+ "topLeft": "╒",
+ "topRight": "╕",
+ "bottomRight": "╛",
+ "bottomLeft": "╘",
+ "vertical": "│",
+ "horizontal": "═"
+ },
+ "classic": {
+ "topLeft": "+",
+ "topRight": "+",
+ "bottomRight": "+",
+ "bottomLeft": "+",
+ "vertical": "|",
+ "horizontal": "-"
+ }
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/cli-boxes/index.js b/node_modules/update-notifier/node_modules/boxen/node_modules/cli-boxes/index.js
new file mode 100644
index 000000000..1d7c81f40
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/cli-boxes/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('./boxes.json');
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/cli-boxes/license b/node_modules/update-notifier/node_modules/boxen/node_modules/cli-boxes/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/cli-boxes/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/cli-boxes/package.json b/node_modules/update-notifier/node_modules/boxen/node_modules/cli-boxes/package.json
new file mode 100644
index 000000000..467f590cd
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/cli-boxes/package.json
@@ -0,0 +1,107 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "cli-boxes@^1.0.0",
+ "scope": null,
+ "escapedName": "cli-boxes",
+ "name": "cli-boxes",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen"
+ ]
+ ],
+ "_from": "cli-boxes@>=1.0.0 <2.0.0",
+ "_id": "cli-boxes@1.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/boxen/cli-boxes",
+ "_nodeVersion": "4.3.0",
+ "_npmOperationalInternal": {
+ "host": "packages-9-west.internal.npmjs.com",
+ "tmp": "tmp/cli-boxes-1.0.0.tgz_1456820449966_0.9008902586065233"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.14.12",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "cli-boxes@^1.0.0",
+ "scope": null,
+ "escapedName": "cli-boxes",
+ "name": "cli-boxes",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/boxen"
+ ],
+ "_resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
+ "_shasum": "4fa917c3e59c94a004cd61f8ee509da651687143",
+ "_shrinkwrap": null,
+ "_spec": "cli-boxes@^1.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/cli-boxes/issues"
+ },
+ "dependencies": {},
+ "description": "Boxes for use in the terminal",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "4fa917c3e59c94a004cd61f8ee509da651687143",
+ "tarball": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js",
+ "boxes.json"
+ ],
+ "gitHead": "30c6977f9c053c2e2de7bed9395512f90cd6e5ae",
+ "homepage": "https://github.com/sindresorhus/cli-boxes",
+ "keywords": [
+ "cli",
+ "box",
+ "boxes",
+ "terminal",
+ "term",
+ "console",
+ "ascii",
+ "unicode",
+ "border",
+ "text",
+ "json"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "cli-boxes",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/cli-boxes.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "1.0.0"
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/cli-boxes/readme.md b/node_modules/update-notifier/node_modules/boxen/node_modules/cli-boxes/readme.md
new file mode 100644
index 000000000..b81816bcc
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/cli-boxes/readme.md
@@ -0,0 +1,94 @@
+# cli-boxes [![Build Status](https://travis-ci.org/sindresorhus/cli-boxes.svg?branch=master)](https://travis-ci.org/sindresorhus/cli-boxes)
+
+> Boxes for use in the terminal
+
+The list of boxes is just a [JSON file](boxes.json) and can be used wherever.
+
+
+## Install
+
+```
+$ npm install --save cli-boxes
+```
+
+
+## Usage
+
+```js
+const cliBoxes = require('cli-boxes');
+
+console.log(cliBoxes.single);
+/*
+{
+ "topLeft": "┌",
+ "topRight": "┐",
+ "bottomRight": "┘",
+ "bottomLeft": "└",
+ "vertical": "│",
+ "horizontal": "─"
+}
+*/
+```
+
+
+## API
+
+### cliBoxes
+
+#### `single`
+
+```
+┌────┐
+│ │
+└────┘
+```
+
+#### `double`
+
+```
+╔════╗
+║ ║
+╚════╝
+```
+
+#### `round`
+
+```
+╭────╮
+│ │
+╰────╯
+```
+
+#### `single-double`
+
+```
+╓────╖
+║ ║
+╙────╜
+```
+
+#### `double-single`
+
+```
+╒════╕
+│ │
+╘════╛
+```
+
+#### `classic`
+
+```
++----+
+| |
++----+
+```
+
+
+## Related
+
+- [boxen](https://github.com/sindresorhus/boxen) - Create boxes in the terminal
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/string-width/index.js b/node_modules/update-notifier/node_modules/boxen/node_modules/string-width/index.js
new file mode 100644
index 000000000..25a8943c1
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/string-width/index.js
@@ -0,0 +1,35 @@
+'use strict';
+const stripAnsi = require('strip-ansi');
+const isFullwidthCodePoint = require('is-fullwidth-code-point');
+
+module.exports = str => {
+ if (typeof str !== 'string' || str.length === 0) {
+ return 0;
+ }
+
+ let width = 0;
+
+ str = stripAnsi(str);
+
+ for (let i = 0; i < str.length; i++) {
+ const code = str.codePointAt(i);
+
+ // ignore control characters
+ if (code <= 0x1f || (code >= 0x7f && code <= 0x9f)) {
+ continue;
+ }
+
+ // surrogates
+ if (code >= 0x10000) {
+ i++;
+ }
+
+ if (isFullwidthCodePoint(code)) {
+ width += 2;
+ } else {
+ width++;
+ }
+ }
+
+ return width;
+};
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/string-width/license b/node_modules/update-notifier/node_modules/boxen/node_modules/string-width/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/string-width/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/string-width/node_modules/is-fullwidth-code-point/index.js b/node_modules/update-notifier/node_modules/boxen/node_modules/string-width/node_modules/is-fullwidth-code-point/index.js
new file mode 100644
index 000000000..d506327c3
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/string-width/node_modules/is-fullwidth-code-point/index.js
@@ -0,0 +1,46 @@
+'use strict';
+/* eslint-disable yoda */
+module.exports = x => {
+ if (Number.isNaN(x)) {
+ return false;
+ }
+
+ // code points are derived from:
+ // http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt
+ if (
+ x >= 0x1100 && (
+ x <= 0x115f || // Hangul Jamo
+ x === 0x2329 || // LEFT-POINTING ANGLE BRACKET
+ x === 0x232a || // RIGHT-POINTING ANGLE BRACKET
+ // CJK Radicals Supplement .. Enclosed CJK Letters and Months
+ (0x2e80 <= x && x <= 0x3247 && x !== 0x303f) ||
+ // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A
+ (0x3250 <= x && x <= 0x4dbf) ||
+ // CJK Unified Ideographs .. Yi Radicals
+ (0x4e00 <= x && x <= 0xa4c6) ||
+ // Hangul Jamo Extended-A
+ (0xa960 <= x && x <= 0xa97c) ||
+ // Hangul Syllables
+ (0xac00 <= x && x <= 0xd7a3) ||
+ // CJK Compatibility Ideographs
+ (0xf900 <= x && x <= 0xfaff) ||
+ // Vertical Forms
+ (0xfe10 <= x && x <= 0xfe19) ||
+ // CJK Compatibility Forms .. Small Form Variants
+ (0xfe30 <= x && x <= 0xfe6b) ||
+ // Halfwidth and Fullwidth Forms
+ (0xff01 <= x && x <= 0xff60) ||
+ (0xffe0 <= x && x <= 0xffe6) ||
+ // Kana Supplement
+ (0x1b000 <= x && x <= 0x1b001) ||
+ // Enclosed Ideographic Supplement
+ (0x1f200 <= x && x <= 0x1f251) ||
+ // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane
+ (0x20000 <= x && x <= 0x3fffd)
+ )
+ ) {
+ return true;
+ }
+
+ return false;
+};
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/string-width/node_modules/is-fullwidth-code-point/license b/node_modules/update-notifier/node_modules/boxen/node_modules/string-width/node_modules/is-fullwidth-code-point/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/string-width/node_modules/is-fullwidth-code-point/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/string-width/node_modules/is-fullwidth-code-point/package.json b/node_modules/update-notifier/node_modules/boxen/node_modules/string-width/node_modules/is-fullwidth-code-point/package.json
new file mode 100644
index 000000000..414b50f7c
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/string-width/node_modules/is-fullwidth-code-point/package.json
@@ -0,0 +1,113 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "is-fullwidth-code-point@^2.0.0",
+ "scope": null,
+ "escapedName": "is-fullwidth-code-point",
+ "name": "is-fullwidth-code-point",
+ "rawSpec": "^2.0.0",
+ "spec": ">=2.0.0 <3.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/string-width"
+ ]
+ ],
+ "_from": "is-fullwidth-code-point@>=2.0.0 <3.0.0",
+ "_id": "is-fullwidth-code-point@2.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/boxen/string-width/is-fullwidth-code-point",
+ "_nodeVersion": "4.5.0",
+ "_npmOperationalInternal": {
+ "host": "packages-16-east.internal.npmjs.com",
+ "tmp": "tmp/is-fullwidth-code-point-2.0.0.tgz_1474526567505_0.299921662081033"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "3.10.7",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "is-fullwidth-code-point@^2.0.0",
+ "scope": null,
+ "escapedName": "is-fullwidth-code-point",
+ "name": "is-fullwidth-code-point",
+ "rawSpec": "^2.0.0",
+ "spec": ">=2.0.0 <3.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/boxen/string-width"
+ ],
+ "_resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "_shasum": "a3b30a5c4f199183167aaab93beefae3ddfb654f",
+ "_shrinkwrap": null,
+ "_spec": "is-fullwidth-code-point@^2.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/string-width",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/is-fullwidth-code-point/issues"
+ },
+ "dependencies": {},
+ "description": "Check if the character represented by a given Unicode code point is fullwidth",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "a3b30a5c4f199183167aaab93beefae3ddfb654f",
+ "tarball": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "e94a78056056c5546f2bf4c4cf812a2163a46dae",
+ "homepage": "https://github.com/sindresorhus/is-fullwidth-code-point#readme",
+ "keywords": [
+ "fullwidth",
+ "full-width",
+ "full",
+ "width",
+ "unicode",
+ "character",
+ "char",
+ "string",
+ "str",
+ "codepoint",
+ "code",
+ "point",
+ "is",
+ "detect",
+ "check"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "is-fullwidth-code-point",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/is-fullwidth-code-point.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "2.0.0",
+ "xo": {
+ "esnext": true
+ }
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/string-width/node_modules/is-fullwidth-code-point/readme.md b/node_modules/update-notifier/node_modules/boxen/node_modules/string-width/node_modules/is-fullwidth-code-point/readme.md
new file mode 100644
index 000000000..093b0281b
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/string-width/node_modules/is-fullwidth-code-point/readme.md
@@ -0,0 +1,39 @@
+# is-fullwidth-code-point [![Build Status](https://travis-ci.org/sindresorhus/is-fullwidth-code-point.svg?branch=master)](https://travis-ci.org/sindresorhus/is-fullwidth-code-point)
+
+> Check if the character represented by a given [Unicode code point](https://en.wikipedia.org/wiki/Code_point) is [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms)
+
+
+## Install
+
+```
+$ npm install --save is-fullwidth-code-point
+```
+
+
+## Usage
+
+```js
+const isFullwidthCodePoint = require('is-fullwidth-code-point');
+
+isFullwidthCodePoint('谢'.codePointAt());
+//=> true
+
+isFullwidthCodePoint('a'.codePointAt());
+//=> false
+```
+
+
+## API
+
+### isFullwidthCodePoint(input)
+
+#### input
+
+Type: `number`
+
+[Code point](https://en.wikipedia.org/wiki/Code_point) of a character.
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/string-width/package.json b/node_modules/update-notifier/node_modules/boxen/node_modules/string-width/package.json
new file mode 100644
index 000000000..219713617
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/string-width/package.json
@@ -0,0 +1,125 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "string-width@^2.0.0",
+ "scope": null,
+ "escapedName": "string-width",
+ "name": "string-width",
+ "rawSpec": "^2.0.0",
+ "spec": ">=2.0.0 <3.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen"
+ ]
+ ],
+ "_from": "string-width@>=2.0.0 <3.0.0",
+ "_id": "string-width@2.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/boxen/string-width",
+ "_nodeVersion": "4.5.0",
+ "_npmOperationalInternal": {
+ "host": "packages-16-east.internal.npmjs.com",
+ "tmp": "tmp/string-width-2.0.0.tgz_1474527284011_0.7386264291126281"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "3.10.7",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "string-width@^2.0.0",
+ "scope": null,
+ "escapedName": "string-width",
+ "name": "string-width",
+ "rawSpec": "^2.0.0",
+ "spec": ">=2.0.0 <3.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/boxen"
+ ],
+ "_resolved": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz",
+ "_shasum": "635c5436cc72a6e0c387ceca278d4e2eec52687e",
+ "_shrinkwrap": null,
+ "_spec": "string-width@^2.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/string-width/issues"
+ },
+ "dependencies": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^3.0.0"
+ },
+ "description": "Get the visual width of a string - the number of columns required to display it",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "635c5436cc72a6e0c387ceca278d4e2eec52687e",
+ "tarball": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "523d7ba4dbb24d40cde88d2c36bb1c7124ab6f82",
+ "homepage": "https://github.com/sindresorhus/string-width#readme",
+ "keywords": [
+ "string",
+ "str",
+ "character",
+ "char",
+ "unicode",
+ "width",
+ "visual",
+ "column",
+ "columns",
+ "fullwidth",
+ "full-width",
+ "full",
+ "ansi",
+ "escape",
+ "codes",
+ "cli",
+ "command-line",
+ "terminal",
+ "console",
+ "cjk",
+ "chinese",
+ "japanese",
+ "korean",
+ "fixed-width"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "string-width",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/string-width.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "2.0.0",
+ "xo": {
+ "esnext": true
+ }
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/string-width/readme.md b/node_modules/update-notifier/node_modules/boxen/node_modules/string-width/readme.md
new file mode 100644
index 000000000..1ab42c935
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/string-width/readme.md
@@ -0,0 +1,42 @@
+# string-width [![Build Status](https://travis-ci.org/sindresorhus/string-width.svg?branch=master)](https://travis-ci.org/sindresorhus/string-width)
+
+> Get the visual width of a string - the number of columns required to display it
+
+Some Unicode characters are [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms) and use double the normal width. [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) are stripped and doesn't affect the width.
+
+Useful to be able to measure the actual width of command-line output.
+
+
+## Install
+
+```
+$ npm install --save string-width
+```
+
+
+## Usage
+
+```js
+const stringWidth = require('string-width');
+
+stringWidth('古');
+//=> 2
+
+stringWidth('\u001b[1m古\u001b[22m');
+//=> 2
+
+stringWidth('a');
+//=> 1
+```
+
+
+## Related
+
+- [string-width-cli](https://github.com/sindresorhus/string-width-cli) - CLI for this module
+- [string-length](https://github.com/sindresorhus/string-length) - Get the real length of a string
+- [widest-line](https://github.com/sindresorhus/widest-line) - Get the visual width of the widest line in a string
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/index.js b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/index.js
new file mode 100644
index 000000000..c6974e2e3
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/index.js
@@ -0,0 +1,70 @@
+'use strict';
+const path = require('path');
+const execa = require('execa');
+
+const create = (columns, rows) => ({
+ columns: parseInt(columns, 10),
+ rows: parseInt(rows, 10)
+});
+
+module.exports = () => {
+ const env = process.env;
+ const stdout = process.stdout;
+ const stderr = process.stderr;
+
+ if (stdout && stdout.columns && stdout.rows) {
+ return create(stdout.columns, stdout.rows);
+ }
+
+ if (stderr && stderr.columns && stderr.rows) {
+ return create(stderr.columns, stderr.rows);
+ }
+
+ // these values are static, so not the first choice
+ if (env.COLUMNS && env.LINES) {
+ return create(env.COLUMNS, env.LINES);
+ }
+
+ if (process.platform === 'win32') {
+ try {
+ // Binary: https://github.com/sindresorhus/win-term-size
+ const size = execa.sync(path.join(__dirname, 'vendor/win-term-size.exe')).stdout.split(/\r?\n/);
+
+ if (size.length === 2) {
+ return create(size[0], size[1]);
+ }
+ } catch (err) {}
+ } else {
+ if (process.platform === 'darwin') {
+ try {
+ // Binary is from https://www.xquartz.org
+ const size = execa.shellSync(path.join(__dirname, 'vendor/resize'), ['-u']).stdout.match(/\d+/g);
+
+ if (size.length === 2) {
+ return create(size[0], size[1]);
+ }
+ } catch (err) {}
+ }
+
+ // `resize` is preferred as it works even when all file descriptors are redirected
+ // https://linux.die.net/man/1/resize
+ try {
+ const size = execa.sync('resize', ['-u']).stdout.match(/\d+/g);
+
+ if (size.length === 2) {
+ return create(size[0], size[1]);
+ }
+ } catch (err) {}
+
+ try {
+ const columns = execa.sync('tput', ['cols']).stdout;
+ const rows = execa.sync('tput', ['lines']).stdout;
+
+ if (columns && rows) {
+ return create(columns, rows);
+ }
+ } catch (err) {}
+ }
+
+ return create(80, 24);
+};
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/license b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/index.js b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/index.js
new file mode 100644
index 000000000..5f3714a08
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/index.js
@@ -0,0 +1,172 @@
+'use strict';
+var childProcess = require('child_process');
+var crossSpawnAsync = require('cross-spawn-async');
+var stripEof = require('strip-eof');
+var objectAssign = require('object-assign');
+var npmRunPath = require('npm-run-path');
+var isStream = require('is-stream');
+var pathKey = require('path-key')();
+var TEN_MEBIBYTE = 1024 * 1024 * 10;
+
+function handleArgs(cmd, args, opts) {
+ var parsed;
+
+ if (opts && opts.__winShell === true) {
+ delete opts.__winShell;
+ parsed = {
+ command: cmd,
+ args: args,
+ options: opts,
+ file: cmd,
+ original: cmd
+ };
+ } else {
+ parsed = crossSpawnAsync._parse(cmd, args, opts);
+ }
+
+ opts = objectAssign({
+ maxBuffer: TEN_MEBIBYTE,
+ stripEof: true,
+ preferLocal: true,
+ encoding: 'utf8'
+ }, parsed.options);
+
+ if (opts.preferLocal) {
+ opts.env = objectAssign({}, opts.env || process.env);
+ opts.env[pathKey] = npmRunPath({
+ cwd: opts.cwd,
+ path: opts.env[pathKey]
+ });
+ }
+
+ return {
+ cmd: parsed.command,
+ args: parsed.args,
+ opts: opts
+ };
+}
+
+function handleInput(spawned, opts) {
+ var input = opts.input;
+
+ if (input === null || input === undefined) {
+ return;
+ }
+
+ if (isStream(input)) {
+ input.pipe(spawned.stdin);
+ } else {
+ spawned.stdin.end(input);
+ }
+}
+
+function handleOutput(opts, val) {
+ if (opts.stripEof) {
+ val = stripEof(val);
+ }
+
+ return val;
+}
+
+function handleShell(fn, cmd, opts) {
+ var file;
+ var args;
+
+ opts = objectAssign({}, opts);
+
+ if (process.platform === 'win32') {
+ opts.__winShell = true;
+ file = process.env.comspec || 'cmd.exe';
+ args = ['/s', '/c', '"' + cmd + '"'];
+ opts.windowsVerbatimArguments = true;
+ } else {
+ file = '/bin/sh';
+ args = ['-c', cmd];
+ }
+
+ if (opts.shell) {
+ file = opts.shell;
+ }
+
+ return fn(file, args, opts);
+}
+
+module.exports = function (cmd, args, opts) {
+ var spawned;
+
+ var promise = new Promise(function (resolve, reject) {
+ var parsed = handleArgs(cmd, args, opts);
+
+ spawned = childProcess.execFile(parsed.cmd, parsed.args, parsed.opts, function (err, stdout, stderr) {
+ if (err) {
+ err.stdout = stdout;
+ err.stderr = stderr;
+ err.message += stdout;
+ reject(err);
+ return;
+ }
+
+ resolve({
+ stdout: handleOutput(parsed.opts, stdout),
+ stderr: handleOutput(parsed.opts, stderr)
+ });
+ });
+
+ crossSpawnAsync._enoent.hookChildProcess(spawned, parsed);
+
+ handleInput(spawned, parsed.opts);
+ });
+
+ spawned.then = promise.then.bind(promise);
+ spawned.catch = promise.catch.bind(promise);
+
+ return spawned;
+};
+
+module.exports.stdout = function () {
+ // TODO: set `stderr: 'ignore'` when that option is implemented
+ return module.exports.apply(null, arguments).then(function (x) {
+ return x.stdout;
+ });
+};
+
+module.exports.stderr = function () {
+ // TODO: set `stdout: 'ignore'` when that option is implemented
+ return module.exports.apply(null, arguments).then(function (x) {
+ return x.stderr;
+ });
+};
+
+module.exports.shell = function (cmd, opts) {
+ return handleShell(module.exports, cmd, opts);
+};
+
+module.exports.spawn = function (cmd, args, opts) {
+ var parsed = handleArgs(cmd, args, opts);
+ var spawned = childProcess.spawn(parsed.cmd, parsed.args, parsed.opts);
+
+ crossSpawnAsync._enoent.hookChildProcess(spawned, parsed);
+
+ return spawned;
+};
+
+module.exports.sync = function (cmd, args, opts) {
+ var parsed = handleArgs(cmd, args, opts);
+
+ if (isStream(parsed.opts.input)) {
+ throw new TypeError('The `input` option cannot be a stream in sync mode');
+ }
+
+ var result = childProcess.spawnSync(parsed.cmd, parsed.args, parsed.opts);
+
+ if (parsed.opts.stripEof) {
+ result.stdout = stripEof(result.stdout);
+ result.stderr = stripEof(result.stderr);
+ }
+
+ return result;
+};
+
+module.exports.shellSync = function (cmd, opts) {
+ return handleShell(module.exports.sync, cmd, opts);
+};
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/license b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/.editorconfig b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/.editorconfig
new file mode 100644
index 000000000..8bc4f108d
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/.editorconfig
@@ -0,0 +1,15 @@
+root = true
+
+[*]
+indent_style = space
+indent_size = 4
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+[*.md]
+trim_trailing_whitespace = false
+
+[package.json]
+indent_size = 2
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/.npmignore b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/.npmignore
new file mode 100644
index 000000000..93f2f731a
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/.npmignore
@@ -0,0 +1,3 @@
+node_modules/
+npm-debug.*
+test/
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/.travis.yml b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/.travis.yml
new file mode 100644
index 000000000..22e38a0fd
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/.travis.yml
@@ -0,0 +1,7 @@
+language: node_js
+node_js:
+ - '0.10'
+ - '0.12'
+ - '4'
+ - '5'
+ - '6'
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/LICENSE b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/LICENSE
new file mode 100644
index 000000000..e898822ad
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2015 IndigoUnited
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/README.md b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/README.md
new file mode 100644
index 000000000..8b3bd6983
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/README.md
@@ -0,0 +1,58 @@
+# cross-spawn-async
+
+[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Build status][appveyor-image]][appveyor-url] [![Dependency status][david-dm-image]][david-dm-url] [![Dev Dependency status][david-dm-dev-image]][david-dm-dev-url]
+
+[npm-url]:https://npmjs.org/package/cross-spawn-async
+[downloads-image]:http://img.shields.io/npm/dm/cross-spawn-async.svg
+[npm-image]:http://img.shields.io/npm/v/cross-spawn-async.svg
+[travis-url]:https://travis-ci.org/IndigoUnited/node-cross-spawn-async
+[travis-image]:http://img.shields.io/travis/IndigoUnited/node-cross-spawn-async/master.svg
+[appveyor-url]:https://ci.appveyor.com/project/satazor/node-cross-spawn-async
+[appveyor-image]:https://img.shields.io/appveyor/ci/satazor/node-cross-spawn-async/master.svg
+[david-dm-url]:https://david-dm.org/IndigoUnited/node-cross-spawn-async
+[david-dm-image]:https://img.shields.io/david/IndigoUnited/node-cross-spawn-async.svg
+[david-dm-dev-url]:https://david-dm.org/IndigoUnited/node-cross-spawn-async#info=devDependencies
+[david-dm-dev-image]:https://img.shields.io/david/dev/IndigoUnited/node-cross-spawn-async.svg
+
+A cross platform solution to node's spawn.
+
+**This module is deprecated, use [cross-spawn](https://github.com/IndigoUnited/node-cross-spawn) instead which no longer requires a build toolchain.**
+
+
+## Installation
+
+`$ npm install cross-spawn-async`
+
+
+## Why
+
+Node has issues when using spawn on Windows:
+
+- It ignores [PATHEXT](https://github.com/joyent/node/issues/2318)
+- It does not support [shebangs](http://pt.wikipedia.org/wiki/Shebang)
+- It does not allow you to run `del` or `dir`
+- It does not properly escape arguments with spaces or special characters
+
+All these issues are handled correctly by `cross-spawn-async`.
+There are some known modules, such as [win-spawn](https://github.com/ForbesLindesay/win-spawn), that try to solve this but they are either broken or provide faulty escaping of shell arguments.
+
+
+## Usage
+
+Exactly the same way as node's [`spawn`](https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options), so it's a drop in replacement.
+
+```javascript
+var spawn = require('cross-spawn-async');
+
+var child = spawn('npm', ['list', '-g', '-depth', '0'], { stdio: 'inherit' });
+```
+
+
+## Tests
+
+`$ npm test`
+
+
+## License
+
+Released under the [MIT License](http://www.opensource.org/licenses/mit-license.php).
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/appveyor.yml b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/appveyor.yml
new file mode 100644
index 000000000..9b92823ee
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/appveyor.yml
@@ -0,0 +1,30 @@
+# appveyor file
+# http://www.appveyor.com/docs/appveyor-yml
+
+# build version format
+version: "{build}"
+
+# fix lineendings in Windows
+init:
+ - git config --global core.autocrlf input
+
+# what combinations to test
+environment:
+ matrix:
+ - nodejs_version: 0.10
+ - nodejs_version: 0.12
+ - nodejs_version: 4
+ - nodejs_version: 5
+ - nodejs_version: 6
+
+# get the latest stable version of Node 0.STABLE.latest
+install:
+ - ps: Install-Product node $env:nodejs_version
+ - npm install
+
+build: off
+
+test_script:
+ - node --version
+ - npm --version
+ - cmd: npm test --no-color
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/index.js b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/index.js
new file mode 100644
index 000000000..92afff083
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/index.js
@@ -0,0 +1,27 @@
+'use strict';
+
+var cp = require('child_process');
+var parse = require('./lib/parse');
+var enoent = require('./lib/enoent');
+
+function spawn(command, args, options) {
+ var parsed;
+ var spawned;
+
+ // Parse the arguments
+ parsed = parse(command, args, options);
+
+ // Spawn the child process
+ spawned = cp.spawn(parsed.command, parsed.args, parsed.options);
+
+ // Hook into child process "exit" event to emit an error if the command
+ // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16
+ enoent.hookChildProcess(spawned, parsed);
+
+ return spawned;
+}
+
+module.exports = spawn;
+module.exports.spawn = spawn;
+module.exports._parse = parse;
+module.exports._enoent = enoent;
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/lib/enoent.js b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/lib/enoent.js
new file mode 100644
index 000000000..3254833ae
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/lib/enoent.js
@@ -0,0 +1,51 @@
+'use strict';
+
+var isWin = process.platform === 'win32';
+
+function notFoundError(command, syscall) {
+ var err;
+
+ err = new Error(syscall + ' ' + command + ' ENOENT');
+ err.code = err.errno = 'ENOENT';
+ err.syscall = syscall + ' ' + command;
+
+ return err;
+}
+
+function hookChildProcess(cp, parsed) {
+ var originalEmit;
+
+ if (!isWin) {
+ return;
+ }
+
+ originalEmit = cp.emit;
+ cp.emit = function (name, arg1) {
+ var err;
+
+ // If emitting "exit" event and exit code is 1, we need to check if
+ // the command exists and emit an "error" instead
+ // See: https://github.com/IndigoUnited/node-cross-spawn/issues/16
+ if (name === 'exit') {
+ err = verifyENOENT(arg1, parsed, 'spawn');
+
+ if (err) {
+ return originalEmit.call(cp, 'error', err);
+ }
+ }
+
+ return originalEmit.apply(cp, arguments);
+ };
+}
+
+function verifyENOENT(status, parsed, syscall) {
+ if (isWin && status === 1 && !parsed.file) {
+ return notFoundError(parsed.original, syscall);
+ }
+
+ return null;
+}
+
+module.exports.hookChildProcess = hookChildProcess;
+module.exports.verifyENOENT = verifyENOENT;
+module.exports.notFoundError = notFoundError;
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/lib/parse.js b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/lib/parse.js
new file mode 100644
index 000000000..923e05e7a
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/lib/parse.js
@@ -0,0 +1,128 @@
+'use strict';
+
+var fs = require('fs');
+var LRU = require('lru-cache');
+var resolveCommand = require('./resolveCommand');
+
+var isWin = process.platform === 'win32';
+var shebangCache = new LRU({ max: 50, maxAge: 30 * 1000 }); // Cache just for 30sec
+
+function readShebang(command) {
+ var buffer;
+ var fd;
+ var match;
+ var shebang;
+
+ // Check if it is in the cache first
+ if (shebangCache.has(command)) {
+ return shebangCache.get(command);
+ }
+
+ // Read the first 150 bytes from the file
+ buffer = new Buffer(150);
+
+ try {
+ fd = fs.openSync(command, 'r');
+ fs.readSync(fd, buffer, 0, 150, 0);
+ fs.closeSync(fd);
+ } catch (e) { /* empty */ }
+
+ // Check if it is a shebang
+ match = buffer.toString().trim().match(/#!(.+)/i);
+
+ if (match) {
+ shebang = match[1].replace(/\/usr\/bin\/env\s+/i, ''); // Remove /usr/bin/env
+ }
+
+ // Store the shebang in the cache
+ shebangCache.set(command, shebang);
+
+ return shebang;
+}
+
+function escapeArg(arg, quote) {
+ // Convert to string
+ arg = '' + arg;
+
+ // If we are not going to quote the argument,
+ // escape shell metacharacters, including double and single quotes:
+ if (!quote) {
+ arg = arg.replace(/([\(\)%!\^<>&|;,"'\s])/g, '^$1');
+ } else {
+ // Sequence of backslashes followed by a double quote:
+ // double up all the backslashes and escape the double quote
+ arg = arg.replace(/(\\*)"/g, '$1$1\\"');
+
+ // Sequence of backslashes followed by the end of the string
+ // (which will become a double quote later):
+ // double up all the backslashes
+ arg = arg.replace(/(\\*)$/, '$1$1');
+
+ // All other backslashes occur literally
+
+ // Quote the whole thing:
+ arg = '"' + arg + '"';
+ }
+
+ return arg;
+}
+
+function escapeCommand(command) {
+ // Do not escape if this command is not dangerous..
+ // We do this so that commands like "echo" or "ifconfig" work
+ // Quoting them, will make them unaccessible
+ return /^[a-z0-9_-]+$/i.test(command) ? command : escapeArg(command, true);
+}
+
+function parse(command, args, options) {
+ var shebang;
+ var applyQuotes;
+ var file;
+ var original;
+
+ // Normalize arguments, similar to nodejs
+ if (args && !Array.isArray(args)) {
+ options = args;
+ args = null;
+ }
+
+ args = args ? args.slice(0) : []; // Clone array to avoid changing the original
+ options = options || {};
+ original = command;
+
+ if (isWin) {
+ // Detect & add support for shebangs
+ file = resolveCommand(command);
+ file = file || resolveCommand(command, true);
+ shebang = file && readShebang(file);
+
+ if (shebang) {
+ args.unshift(file);
+ command = shebang;
+ }
+
+ // Escape command & arguments
+ applyQuotes = command !== 'echo'; // Do not quote arguments for the special "echo" command
+ command = escapeCommand(command);
+ args = args.map(function (arg) {
+ return escapeArg(arg, applyQuotes);
+ });
+
+ // Use cmd.exe
+ args = ['/s', '/c', '"' + command + (args.length ? ' ' + args.join(' ') : '') + '"'];
+ command = process.env.comspec || 'cmd.exe';
+
+ // Tell node's spawn that the arguments are already escaped
+ options.windowsVerbatimArguments = true;
+ }
+
+ return {
+ command: command,
+ args: args,
+ options: options,
+ file: file,
+ original: original,
+ };
+}
+
+module.exports = parse;
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/lib/resolveCommand.js b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/lib/resolveCommand.js
new file mode 100644
index 000000000..391d3d9b0
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/lib/resolveCommand.js
@@ -0,0 +1,38 @@
+'use strict';
+
+var path = require('path');
+var which = require('which');
+var LRU = require('lru-cache');
+
+var commandCache = new LRU({ max: 50, maxAge: 30 * 1000 }); // Cache just for 30sec
+var hasSepInPathRegExp = new RegExp(process.platform === 'win32' ? /[\/\\]/ : /\//);
+
+function resolveCommand(command, noExtension) {
+ var resolved;
+
+ // If command looks like a file path, make it absolute to make it canonical
+ // and also to circuvent a bug in which, see: https://github.com/npm/node-which/issues/33
+ if (hasSepInPathRegExp.test(command)) {
+ command = path.resolve(command);
+ }
+
+ noExtension = !!noExtension;
+ resolved = commandCache.get(command + '!' + noExtension);
+
+ // Check if its resolved in the cache
+ if (commandCache.has(command)) {
+ return commandCache.get(command);
+ }
+
+ try {
+ resolved = !noExtension ?
+ which.sync(command) :
+ which.sync(command, { pathExt: path.delimiter + (process.env.PATHEXT || '') });
+ } catch (e) { /* empty */ }
+
+ commandCache.set(command + '!' + noExtension, resolved);
+
+ return resolved;
+}
+
+module.exports = resolveCommand;
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/LICENSE b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/LICENSE
new file mode 100644
index 000000000..19129e315
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/README.md b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/README.md
new file mode 100644
index 000000000..5bdf98c0f
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/README.md
@@ -0,0 +1,148 @@
+# lru cache
+
+A cache object that deletes the least-recently-used items.
+
+[![Build Status](https://travis-ci.org/isaacs/node-lru-cache.svg?branch=master)](https://travis-ci.org/isaacs/node-lru-cache) [![Coverage Status](https://coveralls.io/repos/isaacs/node-lru-cache/badge.svg?service=github)](https://coveralls.io/github/isaacs/node-lru-cache)
+
+## Installation:
+
+```javascript
+npm install lru-cache --save
+```
+
+## Usage:
+
+```javascript
+var LRU = require("lru-cache")
+ , options = { max: 500
+ , length: function (n, key) { return n * 2 + key.length }
+ , dispose: function (key, n) { n.close() }
+ , maxAge: 1000 * 60 * 60 }
+ , cache = LRU(options)
+ , otherCache = LRU(50) // sets just the max size
+
+cache.set("key", "value")
+cache.get("key") // "value"
+
+// non-string keys ARE fully supported
+var someObject = {}
+cache.set(someObject, 'a value')
+cache.set('[object Object]', 'a different value')
+assert.equal(cache.get(someObject), 'a value')
+
+cache.reset() // empty the cache
+```
+
+If you put more stuff in it, then items will fall out.
+
+If you try to put an oversized thing in it, then it'll fall out right
+away.
+
+## Options
+
+* `max` The maximum size of the cache, checked by applying the length
+ function to all values in the cache. Not setting this is kind of
+ silly, since that's the whole purpose of this lib, but it defaults
+ to `Infinity`.
+* `maxAge` Maximum age in ms. Items are not pro-actively pruned out
+ as they age, but if you try to get an item that is too old, it'll
+ drop it and return undefined instead of giving it to you.
+* `length` Function that is used to calculate the length of stored
+ items. If you're storing strings or buffers, then you probably want
+ to do something like `function(n, key){return n.length}`. The default is
+ `function(){return 1}`, which is fine if you want to store `max`
+ like-sized things. The item is passed as the first argument, and
+ the key is passed as the second argumnet.
+* `dispose` Function that is called on items when they are dropped
+ from the cache. This can be handy if you want to close file
+ descriptors or do other cleanup tasks when items are no longer
+ accessible. Called with `key, value`. It's called *before*
+ actually removing the item from the internal cache, so if you want
+ to immediately put it back in, you'll have to do that in a
+ `nextTick` or `setTimeout` callback or it won't do anything.
+* `stale` By default, if you set a `maxAge`, it'll only actually pull
+ stale items out of the cache when you `get(key)`. (That is, it's
+ not pre-emptively doing a `setTimeout` or anything.) If you set
+ `stale:true`, it'll return the stale value before deleting it. If
+ you don't set this, then it'll return `undefined` when you try to
+ get a stale entry, as if it had already been deleted.
+
+## API
+
+* `set(key, value, maxAge)`
+* `get(key) => value`
+
+ Both of these will update the "recently used"-ness of the key.
+ They do what you think. `maxAge` is optional and overrides the
+ cache `maxAge` option if provided.
+
+ If the key is not found, `get()` will return `undefined`.
+
+ The key and val can be any value.
+
+* `peek(key)`
+
+ Returns the key value (or `undefined` if not found) without
+ updating the "recently used"-ness of the key.
+
+ (If you find yourself using this a lot, you *might* be using the
+ wrong sort of data structure, but there are some use cases where
+ it's handy.)
+
+* `del(key)`
+
+ Deletes a key out of the cache.
+
+* `reset()`
+
+ Clear the cache entirely, throwing away all values.
+
+* `has(key)`
+
+ Check if a key is in the cache, without updating the recent-ness
+ or deleting it for being stale.
+
+* `forEach(function(value,key,cache), [thisp])`
+
+ Just like `Array.prototype.forEach`. Iterates over all the keys
+ in the cache, in order of recent-ness. (Ie, more recently used
+ items are iterated over first.)
+
+* `rforEach(function(value,key,cache), [thisp])`
+
+ The same as `cache.forEach(...)` but items are iterated over in
+ reverse order. (ie, less recently used items are iterated over
+ first.)
+
+* `keys()`
+
+ Return an array of the keys in the cache.
+
+* `values()`
+
+ Return an array of the values in the cache.
+
+* `length`
+
+ Return total length of objects in cache taking into account
+ `length` options function.
+
+* `itemCount`
+
+ Return total quantity of objects currently in cache. Note, that
+ `stale` (see options) items are returned as part of this item
+ count.
+
+* `dump()`
+
+ Return an array of the cache entries ready for serialization and usage
+ with 'destinationCache.load(arr)`.
+
+* `load(cacheEntriesArray)`
+
+ Loads another cache entries array, obtained with `sourceCache.dump()`,
+ into the cache. The destination cache is reset before loading new entries
+
+* `prune()`
+
+ Manually iterates over the entire cache proactively pruning old entries
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/lib/lru-cache.js b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/lib/lru-cache.js
new file mode 100644
index 000000000..e98ef78a5
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/lib/lru-cache.js
@@ -0,0 +1,469 @@
+module.exports = LRUCache
+
+// This will be a proper iterable 'Map' in engines that support it,
+// or a fakey-fake PseudoMap in older versions.
+var Map = require('pseudomap')
+var util = require('util')
+
+// A linked list to keep track of recently-used-ness
+var Yallist = require('yallist')
+
+// use symbols if possible, otherwise just _props
+var symbols = {}
+var hasSymbol = typeof Symbol === 'function'
+var makeSymbol
+/* istanbul ignore if */
+if (hasSymbol) {
+ makeSymbol = function (key) {
+ return Symbol.for(key)
+ }
+} else {
+ makeSymbol = function (key) {
+ return '_' + key
+ }
+}
+
+function priv (obj, key, val) {
+ var sym
+ if (symbols[key]) {
+ sym = symbols[key]
+ } else {
+ sym = makeSymbol(key)
+ symbols[key] = sym
+ }
+ if (arguments.length === 2) {
+ return obj[sym]
+ } else {
+ obj[sym] = val
+ return val
+ }
+}
+
+function naiveLength () { return 1 }
+
+// lruList is a yallist where the head is the youngest
+// item, and the tail is the oldest. the list contains the Hit
+// objects as the entries.
+// Each Hit object has a reference to its Yallist.Node. This
+// never changes.
+//
+// cache is a Map (or PseudoMap) that matches the keys to
+// the Yallist.Node object.
+function LRUCache (options) {
+ if (!(this instanceof LRUCache)) {
+ return new LRUCache(options)
+ }
+
+ if (typeof options === 'number') {
+ options = { max: options }
+ }
+
+ if (!options) {
+ options = {}
+ }
+
+ var max = priv(this, 'max', options.max)
+ // Kind of weird to have a default max of Infinity, but oh well.
+ if (!max ||
+ !(typeof max === 'number') ||
+ max <= 0) {
+ priv(this, 'max', Infinity)
+ }
+
+ var lc = options.length || naiveLength
+ if (typeof lc !== 'function') {
+ lc = naiveLength
+ }
+ priv(this, 'lengthCalculator', lc)
+
+ priv(this, 'allowStale', options.stale || false)
+ priv(this, 'maxAge', options.maxAge || 0)
+ priv(this, 'dispose', options.dispose)
+ this.reset()
+}
+
+// resize the cache when the max changes.
+Object.defineProperty(LRUCache.prototype, 'max', {
+ set: function (mL) {
+ if (!mL || !(typeof mL === 'number') || mL <= 0) {
+ mL = Infinity
+ }
+ priv(this, 'max', mL)
+ trim(this)
+ },
+ get: function () {
+ return priv(this, 'max')
+ },
+ enumerable: true
+})
+
+Object.defineProperty(LRUCache.prototype, 'allowStale', {
+ set: function (allowStale) {
+ priv(this, 'allowStale', !!allowStale)
+ },
+ get: function () {
+ return priv(this, 'allowStale')
+ },
+ enumerable: true
+})
+
+Object.defineProperty(LRUCache.prototype, 'maxAge', {
+ set: function (mA) {
+ if (!mA || !(typeof mA === 'number') || mA < 0) {
+ mA = 0
+ }
+ priv(this, 'maxAge', mA)
+ trim(this)
+ },
+ get: function () {
+ return priv(this, 'maxAge')
+ },
+ enumerable: true
+})
+
+// resize the cache when the lengthCalculator changes.
+Object.defineProperty(LRUCache.prototype, 'lengthCalculator', {
+ set: function (lC) {
+ if (typeof lC !== 'function') {
+ lC = naiveLength
+ }
+ if (lC !== priv(this, 'lengthCalculator')) {
+ priv(this, 'lengthCalculator', lC)
+ priv(this, 'length', 0)
+ priv(this, 'lruList').forEach(function (hit) {
+ hit.length = priv(this, 'lengthCalculator').call(this, hit.value, hit.key)
+ priv(this, 'length', priv(this, 'length') + hit.length)
+ }, this)
+ }
+ trim(this)
+ },
+ get: function () { return priv(this, 'lengthCalculator') },
+ enumerable: true
+})
+
+Object.defineProperty(LRUCache.prototype, 'length', {
+ get: function () { return priv(this, 'length') },
+ enumerable: true
+})
+
+Object.defineProperty(LRUCache.prototype, 'itemCount', {
+ get: function () { return priv(this, 'lruList').length },
+ enumerable: true
+})
+
+LRUCache.prototype.rforEach = function (fn, thisp) {
+ thisp = thisp || this
+ for (var walker = priv(this, 'lruList').tail; walker !== null;) {
+ var prev = walker.prev
+ forEachStep(this, fn, walker, thisp)
+ walker = prev
+ }
+}
+
+function forEachStep (self, fn, node, thisp) {
+ var hit = node.value
+ if (isStale(self, hit)) {
+ del(self, node)
+ if (!priv(self, 'allowStale')) {
+ hit = undefined
+ }
+ }
+ if (hit) {
+ fn.call(thisp, hit.value, hit.key, self)
+ }
+}
+
+LRUCache.prototype.forEach = function (fn, thisp) {
+ thisp = thisp || this
+ for (var walker = priv(this, 'lruList').head; walker !== null;) {
+ var next = walker.next
+ forEachStep(this, fn, walker, thisp)
+ walker = next
+ }
+}
+
+LRUCache.prototype.keys = function () {
+ return priv(this, 'lruList').toArray().map(function (k) {
+ return k.key
+ }, this)
+}
+
+LRUCache.prototype.values = function () {
+ return priv(this, 'lruList').toArray().map(function (k) {
+ return k.value
+ }, this)
+}
+
+LRUCache.prototype.reset = function () {
+ if (priv(this, 'dispose') &&
+ priv(this, 'lruList') &&
+ priv(this, 'lruList').length) {
+ priv(this, 'lruList').forEach(function (hit) {
+ priv(this, 'dispose').call(this, hit.key, hit.value)
+ }, this)
+ }
+
+ priv(this, 'cache', new Map()) // hash of items by key
+ priv(this, 'lruList', new Yallist()) // list of items in order of use recency
+ priv(this, 'length', 0) // length of items in the list
+}
+
+LRUCache.prototype.dump = function () {
+ return priv(this, 'lruList').map(function (hit) {
+ if (!isStale(this, hit)) {
+ return {
+ k: hit.key,
+ v: hit.value,
+ e: hit.now + (hit.maxAge || 0)
+ }
+ }
+ }, this).toArray().filter(function (h) {
+ return h
+ })
+}
+
+LRUCache.prototype.dumpLru = function () {
+ return priv(this, 'lruList')
+}
+
+LRUCache.prototype.inspect = function (n, opts) {
+ var str = 'LRUCache {'
+ var extras = false
+
+ var as = priv(this, 'allowStale')
+ if (as) {
+ str += '\n allowStale: true'
+ extras = true
+ }
+
+ var max = priv(this, 'max')
+ if (max && max !== Infinity) {
+ if (extras) {
+ str += ','
+ }
+ str += '\n max: ' + util.inspect(max, opts)
+ extras = true
+ }
+
+ var maxAge = priv(this, 'maxAge')
+ if (maxAge) {
+ if (extras) {
+ str += ','
+ }
+ str += '\n maxAge: ' + util.inspect(maxAge, opts)
+ extras = true
+ }
+
+ var lc = priv(this, 'lengthCalculator')
+ if (lc && lc !== naiveLength) {
+ if (extras) {
+ str += ','
+ }
+ str += '\n length: ' + util.inspect(priv(this, 'length'), opts)
+ extras = true
+ }
+
+ var didFirst = false
+ priv(this, 'lruList').forEach(function (item) {
+ if (didFirst) {
+ str += ',\n '
+ } else {
+ if (extras) {
+ str += ',\n'
+ }
+ didFirst = true
+ str += '\n '
+ }
+ var key = util.inspect(item.key).split('\n').join('\n ')
+ var val = { value: item.value }
+ if (item.maxAge !== maxAge) {
+ val.maxAge = item.maxAge
+ }
+ if (lc !== naiveLength) {
+ val.length = item.length
+ }
+ if (isStale(this, item)) {
+ val.stale = true
+ }
+
+ val = util.inspect(val, opts).split('\n').join('\n ')
+ str += key + ' => ' + val
+ })
+
+ if (didFirst || extras) {
+ str += '\n'
+ }
+ str += '}'
+
+ return str
+}
+
+LRUCache.prototype.set = function (key, value, maxAge) {
+ maxAge = maxAge || priv(this, 'maxAge')
+
+ var now = maxAge ? Date.now() : 0
+ var len = priv(this, 'lengthCalculator').call(this, value, key)
+
+ if (priv(this, 'cache').has(key)) {
+ if (len > priv(this, 'max')) {
+ del(this, priv(this, 'cache').get(key))
+ return false
+ }
+
+ var node = priv(this, 'cache').get(key)
+ var item = node.value
+
+ // dispose of the old one before overwriting
+ if (priv(this, 'dispose')) {
+ priv(this, 'dispose').call(this, key, item.value)
+ }
+
+ item.now = now
+ item.maxAge = maxAge
+ item.value = value
+ priv(this, 'length', priv(this, 'length') + (len - item.length))
+ item.length = len
+ this.get(key)
+ trim(this)
+ return true
+ }
+
+ var hit = new Entry(key, value, len, now, maxAge)
+
+ // oversized objects fall out of cache automatically.
+ if (hit.length > priv(this, 'max')) {
+ if (priv(this, 'dispose')) {
+ priv(this, 'dispose').call(this, key, value)
+ }
+ return false
+ }
+
+ priv(this, 'length', priv(this, 'length') + hit.length)
+ priv(this, 'lruList').unshift(hit)
+ priv(this, 'cache').set(key, priv(this, 'lruList').head)
+ trim(this)
+ return true
+}
+
+LRUCache.prototype.has = function (key) {
+ if (!priv(this, 'cache').has(key)) return false
+ var hit = priv(this, 'cache').get(key).value
+ if (isStale(this, hit)) {
+ return false
+ }
+ return true
+}
+
+LRUCache.prototype.get = function (key) {
+ return get(this, key, true)
+}
+
+LRUCache.prototype.peek = function (key) {
+ return get(this, key, false)
+}
+
+LRUCache.prototype.pop = function () {
+ var node = priv(this, 'lruList').tail
+ if (!node) return null
+ del(this, node)
+ return node.value
+}
+
+LRUCache.prototype.del = function (key) {
+ del(this, priv(this, 'cache').get(key))
+}
+
+LRUCache.prototype.load = function (arr) {
+ // reset the cache
+ this.reset()
+
+ var now = Date.now()
+ // A previous serialized cache has the most recent items first
+ for (var l = arr.length - 1; l >= 0; l--) {
+ var hit = arr[l]
+ var expiresAt = hit.e || 0
+ if (expiresAt === 0) {
+ // the item was created without expiration in a non aged cache
+ this.set(hit.k, hit.v)
+ } else {
+ var maxAge = expiresAt - now
+ // dont add already expired items
+ if (maxAge > 0) {
+ this.set(hit.k, hit.v, maxAge)
+ }
+ }
+ }
+}
+
+LRUCache.prototype.prune = function () {
+ var self = this
+ priv(this, 'cache').forEach(function (value, key) {
+ get(self, key, false)
+ })
+}
+
+function get (self, key, doUse) {
+ var node = priv(self, 'cache').get(key)
+ if (node) {
+ var hit = node.value
+ if (isStale(self, hit)) {
+ del(self, node)
+ if (!priv(self, 'allowStale')) hit = undefined
+ } else {
+ if (doUse) {
+ priv(self, 'lruList').unshiftNode(node)
+ }
+ }
+ if (hit) hit = hit.value
+ }
+ return hit
+}
+
+function isStale (self, hit) {
+ if (!hit || (!hit.maxAge && !priv(self, 'maxAge'))) {
+ return false
+ }
+ var stale = false
+ var diff = Date.now() - hit.now
+ if (hit.maxAge) {
+ stale = diff > hit.maxAge
+ } else {
+ stale = priv(self, 'maxAge') && (diff > priv(self, 'maxAge'))
+ }
+ return stale
+}
+
+function trim (self) {
+ if (priv(self, 'length') > priv(self, 'max')) {
+ for (var walker = priv(self, 'lruList').tail;
+ priv(self, 'length') > priv(self, 'max') && walker !== null;) {
+ // We know that we're about to delete this one, and also
+ // what the next least recently used key will be, so just
+ // go ahead and set it now.
+ var prev = walker.prev
+ del(self, walker)
+ walker = prev
+ }
+ }
+}
+
+function del (self, node) {
+ if (node) {
+ var hit = node.value
+ if (priv(self, 'dispose')) {
+ priv(self, 'dispose').call(this, hit.key, hit.value)
+ }
+ priv(self, 'length', priv(self, 'length') - hit.length)
+ priv(self, 'cache').delete(hit.key)
+ priv(self, 'lruList').removeNode(node)
+ }
+}
+
+// classy, since V8 prefers predictable objects.
+function Entry (key, value, length, now, maxAge) {
+ this.key = key
+ this.value = value
+ this.length = length
+ this.now = now
+ this.maxAge = maxAge || 0
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/pseudomap/LICENSE b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/pseudomap/LICENSE
new file mode 100644
index 000000000..19129e315
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/pseudomap/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/pseudomap/README.md b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/pseudomap/README.md
new file mode 100644
index 000000000..778bf01df
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/pseudomap/README.md
@@ -0,0 +1,60 @@
+# pseudomap
+
+A thing that is a lot like ES6 `Map`, but without iterators, for use
+in environments where `for..of` syntax and `Map` are not available.
+
+If you need iterators, or just in general a more faithful polyfill to
+ES6 Maps, check out [es6-map](http://npm.im/es6-map).
+
+If you are in an environment where `Map` is supported, then that will
+be returned instead, unless `process.env.TEST_PSEUDOMAP` is set.
+
+You can use any value as keys, and any value as data. Setting again
+with the identical key will overwrite the previous value.
+
+Internally, data is stored on an `Object.create(null)` style object.
+The key is coerced to a string to generate the key on the internal
+data-bag object. The original key used is stored along with the data.
+
+In the event of a stringified-key collision, a new key is generated by
+appending an increasing number to the stringified-key until finding
+either the intended key or an empty spot.
+
+Note that because object traversal order of plain objects is not
+guaranteed to be identical to insertion order, the insertion order
+guarantee of `Map.prototype.forEach` is not guaranteed in this
+implementation. However, in all versions of Node.js and V8 where this
+module works, `forEach` does traverse data in insertion order.
+
+## API
+
+Most of the [Map
+API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map),
+with the following exceptions:
+
+1. A `Map` object is not an iterator.
+2. `values`, `keys`, and `entries` methods are not implemented,
+ because they return iterators.
+3. The argument to the constructor can be an Array of `[key, value]`
+ pairs, or a `Map` or `PseudoMap` object. But, since iterators
+ aren't used, passing any plain-old iterator won't initialize the
+ map properly.
+
+## USAGE
+
+Use just like a regular ES6 Map.
+
+```javascript
+var PseudoMap = require('pseudomap')
+
+// optionally provide a pseudomap, or an array of [key,value] pairs
+// as the argument to initialize the map with
+var myMap = new PseudoMap()
+
+myMap.set(1, 'number 1')
+myMap.set('1', 'string 1')
+var akey = {}
+var bkey = {}
+myMap.set(akey, { some: 'data' })
+myMap.set(bkey, { some: 'other data' })
+```
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/pseudomap/map.js b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/pseudomap/map.js
new file mode 100644
index 000000000..7db159946
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/pseudomap/map.js
@@ -0,0 +1,9 @@
+if (process.env.npm_package_name === 'pseudomap' &&
+ process.env.npm_lifecycle_script === 'test')
+ process.env.TEST_PSEUDOMAP = 'true'
+
+if (typeof Map === 'function' && !process.env.TEST_PSEUDOMAP) {
+ module.exports = Map
+} else {
+ module.exports = require('./pseudomap')
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/pseudomap/package.json b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/pseudomap/package.json
new file mode 100644
index 000000000..9320afbe6
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/pseudomap/package.json
@@ -0,0 +1,85 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "pseudomap@^1.0.1",
+ "scope": null,
+ "escapedName": "pseudomap",
+ "name": "pseudomap",
+ "rawSpec": "^1.0.1",
+ "spec": ">=1.0.1 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache"
+ ]
+ ],
+ "_from": "pseudomap@>=1.0.1 <2.0.0",
+ "_id": "pseudomap@1.0.2",
+ "_inCache": true,
+ "_location": "/update-notifier/boxen/term-size/execa/cross-spawn-async/lru-cache/pseudomap",
+ "_nodeVersion": "4.0.0",
+ "_npmUser": {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ },
+ "_npmVersion": "3.3.2",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "pseudomap@^1.0.1",
+ "scope": null,
+ "escapedName": "pseudomap",
+ "name": "pseudomap",
+ "rawSpec": "^1.0.1",
+ "spec": ">=1.0.1 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/boxen/term-size/execa/cross-spawn-async/lru-cache"
+ ],
+ "_resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "_shasum": "f052a28da70e618917ef0a8ac34c1ae5a68286b3",
+ "_shrinkwrap": null,
+ "_spec": "pseudomap@^1.0.1",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache",
+ "author": {
+ "name": "Isaac Z. Schlueter",
+ "email": "i@izs.me",
+ "url": "http://blog.izs.me/"
+ },
+ "bugs": {
+ "url": "https://github.com/isaacs/pseudomap/issues"
+ },
+ "dependencies": {},
+ "description": "A thing that is a lot like ES6 `Map`, but without iterators, for use in environments where `for..of` syntax and `Map` are not available.",
+ "devDependencies": {
+ "tap": "^2.3.1"
+ },
+ "directories": {
+ "test": "test"
+ },
+ "dist": {
+ "shasum": "f052a28da70e618917ef0a8ac34c1ae5a68286b3",
+ "tarball": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz"
+ },
+ "gitHead": "b6dc728207a0321ede6479e34506d3e0e13a940b",
+ "homepage": "https://github.com/isaacs/pseudomap#readme",
+ "license": "ISC",
+ "main": "map.js",
+ "maintainers": [
+ {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ }
+ ],
+ "name": "pseudomap",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/isaacs/pseudomap.git"
+ },
+ "scripts": {
+ "test": "tap test/*.js"
+ },
+ "version": "1.0.2"
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/pseudomap/pseudomap.js b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/pseudomap/pseudomap.js
new file mode 100644
index 000000000..25a21d829
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/pseudomap/pseudomap.js
@@ -0,0 +1,113 @@
+var hasOwnProperty = Object.prototype.hasOwnProperty
+
+module.exports = PseudoMap
+
+function PseudoMap (set) {
+ if (!(this instanceof PseudoMap)) // whyyyyyyy
+ throw new TypeError("Constructor PseudoMap requires 'new'")
+
+ this.clear()
+
+ if (set) {
+ if ((set instanceof PseudoMap) ||
+ (typeof Map === 'function' && set instanceof Map))
+ set.forEach(function (value, key) {
+ this.set(key, value)
+ }, this)
+ else if (Array.isArray(set))
+ set.forEach(function (kv) {
+ this.set(kv[0], kv[1])
+ }, this)
+ else
+ throw new TypeError('invalid argument')
+ }
+}
+
+PseudoMap.prototype.forEach = function (fn, thisp) {
+ thisp = thisp || this
+ Object.keys(this._data).forEach(function (k) {
+ if (k !== 'size')
+ fn.call(thisp, this._data[k].value, this._data[k].key)
+ }, this)
+}
+
+PseudoMap.prototype.has = function (k) {
+ return !!find(this._data, k)
+}
+
+PseudoMap.prototype.get = function (k) {
+ var res = find(this._data, k)
+ return res && res.value
+}
+
+PseudoMap.prototype.set = function (k, v) {
+ set(this._data, k, v)
+}
+
+PseudoMap.prototype.delete = function (k) {
+ var res = find(this._data, k)
+ if (res) {
+ delete this._data[res._index]
+ this._data.size--
+ }
+}
+
+PseudoMap.prototype.clear = function () {
+ var data = Object.create(null)
+ data.size = 0
+
+ Object.defineProperty(this, '_data', {
+ value: data,
+ enumerable: false,
+ configurable: true,
+ writable: false
+ })
+}
+
+Object.defineProperty(PseudoMap.prototype, 'size', {
+ get: function () {
+ return this._data.size
+ },
+ set: function (n) {},
+ enumerable: true,
+ configurable: true
+})
+
+PseudoMap.prototype.values =
+PseudoMap.prototype.keys =
+PseudoMap.prototype.entries = function () {
+ throw new Error('iterators are not implemented in this version')
+}
+
+// Either identical, or both NaN
+function same (a, b) {
+ return a === b || a !== a && b !== b
+}
+
+function Entry (k, v, i) {
+ this.key = k
+ this.value = v
+ this._index = i
+}
+
+function find (data, k) {
+ for (var i = 0, s = '_' + k, key = s;
+ hasOwnProperty.call(data, key);
+ key = s + i++) {
+ if (same(data[key].key, k))
+ return data[key]
+ }
+}
+
+function set (data, k, v) {
+ for (var i = 0, s = '_' + k, key = s;
+ hasOwnProperty.call(data, key);
+ key = s + i++) {
+ if (same(data[key].key, k)) {
+ data[key].value = v
+ return
+ }
+ }
+ data.size++
+ data[key] = new Entry(k, v, key)
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/pseudomap/test/basic.js b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/pseudomap/test/basic.js
new file mode 100644
index 000000000..4378e4541
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/pseudomap/test/basic.js
@@ -0,0 +1,86 @@
+var t = require('tap')
+
+process.env.TEST_PSEUDOMAP = 'true'
+
+var PM = require('../')
+runTests(PM)
+
+// if possible, verify that Map also behaves the same way
+if (typeof Map === 'function')
+ runTests(Map)
+
+
+function runTests (Map) {
+ t.throws(Map)
+
+ var m = new Map()
+
+ t.equal(m.size, 0)
+
+ m.set(1, '1 string')
+ t.equal(m.get(1), '1 string')
+ t.equal(m.size, 1)
+ m.size = 1000
+ t.equal(m.size, 1)
+ m.size = 0
+ t.equal(m.size, 1)
+
+ m = new Map([[1, 'number 1'], ['1', 'string 1']])
+ t.equal(m.get(1), 'number 1')
+ t.equal(m.get('1'), 'string 1')
+ t.equal(m.size, 2)
+
+ m = new Map(m)
+ t.equal(m.get(1), 'number 1')
+ t.equal(m.get('1'), 'string 1')
+ t.equal(m.size, 2)
+
+ var akey = {}
+ var bkey = {}
+ m.set(akey, { some: 'data' })
+ m.set(bkey, { some: 'other data' })
+ t.same(m.get(akey), { some: 'data' })
+ t.same(m.get(bkey), { some: 'other data' })
+ t.equal(m.size, 4)
+
+ var x = /x/
+ var y = /x/
+ m.set(x, 'x regex')
+ m.set(y, 'y regex')
+ t.equal(m.get(x), 'x regex')
+ m.set(x, 'x again')
+ t.equal(m.get(x), 'x again')
+ t.equal(m.size, 6)
+
+ m.set(NaN, 'not a number')
+ t.equal(m.get(NaN), 'not a number')
+ m.set(NaN, 'it is a ' + typeof NaN)
+ t.equal(m.get(NaN), 'it is a number')
+ m.set('NaN', 'stringie nan')
+ t.equal(m.get(NaN), 'it is a number')
+ t.equal(m.get('NaN'), 'stringie nan')
+ t.equal(m.size, 8)
+
+ m.delete(NaN)
+ t.equal(m.get(NaN), undefined)
+ t.equal(m.size, 7)
+
+ var expect = [
+ { value: 'number 1', key: 1 },
+ { value: 'string 1', key: '1' },
+ { value: { some: 'data' }, key: {} },
+ { value: { some: 'other data' }, key: {} },
+ { value: 'x again', key: /x/ },
+ { value: 'y regex', key: /x/ },
+ { value: 'stringie nan', key: 'NaN' }
+ ]
+ var actual = []
+
+ m.forEach(function (value, key) {
+ actual.push({ value: value, key: key })
+ })
+ t.same(actual, expect)
+
+ m.clear()
+ t.equal(m.size, 0)
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/.npmignore b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/.npmignore
new file mode 100644
index 000000000..534108e3f
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/.npmignore
@@ -0,0 +1,4 @@
+node_modules/
+coverage/
+.nyc_output/
+nyc_output/
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/.travis.yml b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/.travis.yml
new file mode 100644
index 000000000..9c1a7b6cc
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/.travis.yml
@@ -0,0 +1,7 @@
+sudo: false
+language: node_js
+node_js:
+ - '0.10'
+ - '0.12'
+ - '4'
+ - '5'
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/CONTRIBUTING.md b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/CONTRIBUTING.md
new file mode 100644
index 000000000..5f51e6f1e
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/CONTRIBUTING.md
@@ -0,0 +1,4 @@
+1. The whole API is public. No underscore-prefixed pretend-private
+ things or hidden Object.create magic mumbo jumbo here. Plain old
+ objects that are created from constructors.
+2. 100% test coverage must be maintained.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/LICENSE b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/LICENSE
new file mode 100644
index 000000000..19129e315
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/README.md b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/README.md
new file mode 100644
index 000000000..f58610186
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/README.md
@@ -0,0 +1,204 @@
+# yallist
+
+Yet Another Linked List
+
+There are many doubly-linked list implementations like it, but this
+one is mine.
+
+For when an array would be too big, and a Map can't be iterated in
+reverse order.
+
+
+[![Build Status](https://travis-ci.org/isaacs/yallist.svg?branch=master)](https://travis-ci.org/isaacs/yallist) [![Coverage Status](https://coveralls.io/repos/isaacs/yallist/badge.svg?service=github)](https://coveralls.io/github/isaacs/yallist)
+
+## basic usage
+
+```javascript
+var yallist = require('yallist')
+var myList = yallist.create([1, 2, 3])
+myList.push('foo')
+myList.unshift('bar')
+// of course pop() and shift() are there, too
+console.log(myList.toArray()) // ['bar', 1, 2, 3, 'foo']
+myList.forEach(function (k) {
+ // walk the list head to tail
+})
+myList.forEachReverse(function (k, index, list) {
+ // walk the list tail to head
+})
+var myDoubledList = myList.map(function (k) {
+ return k + k
+})
+// now myDoubledList contains ['barbar', 2, 4, 6, 'foofoo']
+// mapReverse is also a thing
+var myDoubledListReverse = myList.mapReverse(function (k) {
+ return k + k
+}) // ['foofoo', 6, 4, 2, 'barbar']
+
+var reduced = myList.reduce(function (set, entry) {
+ set += entry
+ return set
+}, 'start')
+console.log(reduced) // 'startfoo123bar'
+```
+
+## api
+
+The whole API is considered "public".
+
+Functions with the same name as an Array method work more or less the
+same way.
+
+There's reverse versions of most things because that's the point.
+
+### Yallist
+
+Default export, the class that holds and manages a list.
+
+Call it with either a forEach-able (like an array) or a set of
+arguments, to initialize the list.
+
+The Array-ish methods all act like you'd expect. No magic length,
+though, so if you change that it won't automatically prune or add
+empty spots.
+
+### Yallist.create(..)
+
+Alias for Yallist function. Some people like factories.
+
+#### yallist.head
+
+The first node in the list
+
+#### yallist.tail
+
+The last node in the list
+
+#### yallist.length
+
+The number of nodes in the list. (Change this at your peril. It is
+not magic like Array length.)
+
+#### yallist.toArray()
+
+Convert the list to an array.
+
+#### yallist.forEach(fn, [thisp])
+
+Call a function on each item in the list.
+
+#### yallist.forEachReverse(fn, [thisp])
+
+Call a function on each item in the list, in reverse order.
+
+#### yallist.get(n)
+
+Get the data at position `n` in the list. If you use this a lot,
+probably better off just using an Array.
+
+#### yallist.getReverse(n)
+
+Get the data at position `n`, counting from the tail.
+
+#### yallist.map(fn, thisp)
+
+Create a new Yallist with the result of calling the function on each
+item.
+
+#### yallist.mapReverse(fn, thisp)
+
+Same as `map`, but in reverse.
+
+#### yallist.pop()
+
+Get the data from the list tail, and remove the tail from the list.
+
+#### yallist.push(item, ...)
+
+Insert one or more items to the tail of the list.
+
+#### yallist.reduce(fn, initialValue)
+
+Like Array.reduce.
+
+#### yallist.reduceReverse
+
+Like Array.reduce, but in reverse.
+
+#### yallist.reverse
+
+Reverse the list in place.
+
+#### yallist.shift()
+
+Get the data from the list head, and remove the head from the list.
+
+#### yallist.slice([from], [to])
+
+Just like Array.slice, but returns a new Yallist.
+
+#### yallist.sliceReverse([from], [to])
+
+Just like yallist.slice, but the result is returned in reverse.
+
+#### yallist.toArray()
+
+Create an array representation of the list.
+
+#### yallist.toArrayReverse()
+
+Create a reversed array representation of the list.
+
+#### yallist.unshift(item, ...)
+
+Insert one or more items to the head of the list.
+
+#### yallist.unshiftNode(node)
+
+Move a Node object to the front of the list. (That is, pull it out of
+wherever it lives, and make it the new head.)
+
+If the node belongs to a different list, then that list will remove it
+first.
+
+#### yallist.pushNode(node)
+
+Move a Node object to the end of the list. (That is, pull it out of
+wherever it lives, and make it the new tail.)
+
+If the node belongs to a list already, then that list will remove it
+first.
+
+#### yallist.removeNode(node)
+
+Remove a node from the list, preserving referential integrity of head
+and tail and other nodes.
+
+Will throw an error if you try to have a list remove a node that
+doesn't belong to it.
+
+### Yallist.Node
+
+The class that holds the data and is actually the list.
+
+Call with `var n = new Node(value, previousNode, nextNode)`
+
+Note that if you do direct operations on Nodes themselves, it's very
+easy to get into weird states where the list is broken. Be careful :)
+
+#### node.next
+
+The next node in the list.
+
+#### node.prev
+
+The previous node in the list.
+
+#### node.value
+
+The data the node contains.
+
+#### node.list
+
+The list to which this node belongs. (Null if it does not belong to
+any list.)
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/package.json b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/package.json
new file mode 100644
index 000000000..57a3e4703
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/package.json
@@ -0,0 +1,85 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "yallist@^2.0.0",
+ "scope": null,
+ "escapedName": "yallist",
+ "name": "yallist",
+ "rawSpec": "^2.0.0",
+ "spec": ">=2.0.0 <3.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache"
+ ]
+ ],
+ "_from": "yallist@>=2.0.0 <3.0.0",
+ "_id": "yallist@2.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/boxen/term-size/execa/cross-spawn-async/lru-cache/yallist",
+ "_nodeVersion": "4.0.0",
+ "_npmUser": {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ },
+ "_npmVersion": "3.3.2",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "yallist@^2.0.0",
+ "scope": null,
+ "escapedName": "yallist",
+ "name": "yallist",
+ "rawSpec": "^2.0.0",
+ "spec": ">=2.0.0 <3.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/boxen/term-size/execa/cross-spawn-async/lru-cache"
+ ],
+ "_resolved": "https://registry.npmjs.org/yallist/-/yallist-2.0.0.tgz",
+ "_shasum": "306c543835f09ee1a4cb23b7bce9ab341c91cdd4",
+ "_shrinkwrap": null,
+ "_spec": "yallist@^2.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache",
+ "author": {
+ "name": "Isaac Z. Schlueter",
+ "email": "i@izs.me",
+ "url": "http://blog.izs.me/"
+ },
+ "bugs": {
+ "url": "https://github.com/isaacs/yallist/issues"
+ },
+ "dependencies": {},
+ "description": "Yet Another Linked List",
+ "devDependencies": {
+ "tap": "^2.3.2"
+ },
+ "directories": {
+ "test": "test"
+ },
+ "dist": {
+ "shasum": "306c543835f09ee1a4cb23b7bce9ab341c91cdd4",
+ "tarball": "https://registry.npmjs.org/yallist/-/yallist-2.0.0.tgz"
+ },
+ "gitHead": "702eaba87deefa9f8fc2f8e36cb225bc2141fdc3",
+ "homepage": "https://github.com/isaacs/yallist#readme",
+ "license": "ISC",
+ "main": "yallist.js",
+ "maintainers": [
+ {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ }
+ ],
+ "name": "yallist",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/isaacs/yallist.git"
+ },
+ "scripts": {
+ "test": "tap test/*.js --cov"
+ },
+ "version": "2.0.0"
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/test/basic.js b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/test/basic.js
new file mode 100644
index 000000000..3c8d1f48d
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/test/basic.js
@@ -0,0 +1,188 @@
+var t = require('tap')
+var Yallist = require('../yallist.js')
+
+var y = new Yallist(1,2,3,4,5)
+var z = new Yallist([1,2,3,4,5])
+t.similar(y, z, 'build from single list or args')
+
+function add10 (i) {
+ return i + 10
+}
+t.similar(y.map(add10).toArray(), [11, 12, 13, 14, 15])
+t.similar(y.mapReverse(add10).toArray(), [15, 14, 13, 12, 11])
+
+t.similar(y.map(add10).toArrayReverse(), [15, 14, 13, 12, 11])
+t.isa(Yallist(1,2,3), 'Yallist')
+t.equal(y.push(6, 7, 8), 8)
+t.similar(y.toArray(), [1, 2, 3, 4, 5, 6, 7, 8])
+y.pop()
+y.shift()
+y.unshift(100)
+
+var expect = [100, 2, 3, 4, 5, 6, 7]
+var expectReverse = [ 7, 6, 5, 4, 3, 2, 100 ]
+
+t.similar(y.toArray(), expect)
+t.equal(y.length, y.toArray().length)
+
+t.test(function forEach (t) {
+ t.plan(y.length * 2)
+ y.forEach(function (item, i, list) {
+ t.equal(item, expect[i])
+ t.equal(list, y)
+ })
+})
+
+t.test(function forEach (t) {
+ t.plan(y.length * 5)
+ var n = 0
+ y.forEachReverse(function (item, i, list) {
+ t.equal(item, expectReverse[n])
+ t.equal(item, expect[i])
+ t.equal(item, y.get(i))
+ t.equal(item, y.getReverse(n))
+ n += 1
+ t.equal(list, y)
+ })
+})
+
+t.equal(y.getReverse(100), undefined)
+
+t.equal(y.get(9999), undefined)
+
+
+function sum (a, b) { return a + b }
+t.equal(y.reduce(sum), 127)
+t.equal(y.reduce(sum, 100), 227)
+t.equal(y.reduceReverse(sum), 127)
+t.equal(y.reduceReverse(sum, 100), 227)
+
+t.equal(Yallist().pop(), undefined)
+t.equal(Yallist().shift(), undefined)
+
+var x = Yallist()
+x.unshift(1)
+t.equal(x.length, 1)
+t.similar(x.toArray(), [1])
+
+// verify that y.toArray() returns an array and if we create a
+// new Yallist from that array, we get a list matching
+t.similar(Yallist(y.toArray()), y)
+t.similar(Yallist.apply(null, y.toArray()), y)
+
+t.throws(function () {
+ new Yallist().reduce(function () {})
+}, {}, new TypeError('Reduce of empty list with no initial value'))
+t.throws(function () {
+ new Yallist().reduceReverse(function () {})
+}, {}, new TypeError('Reduce of empty list with no initial value'))
+
+var z = y.reverse()
+t.equal(z, y)
+t.similar(y.toArray(), expectReverse)
+y.reverse()
+t.similar(y.toArray(), expect)
+
+var a = Yallist(1,2,3,4,5,6)
+var cases = [
+ [ [2, 4], [3, 4] ],
+ [ [2, -4], [] ],
+ [ [2, -2], [3, 4] ],
+ [ [1, -2], [2, 3, 4] ],
+ [ [-1, -2], [] ],
+ [ [-5, -2], [2, 3, 4] ],
+ [ [-99, 2], [1, 2] ],
+ [ [5, 99], [6] ],
+ [ [], [1,2,3,4,5,6] ]
+]
+t.test('slice', function (t) {
+ t.plan(cases.length)
+ cases.forEach(function (c) {
+ t.test(JSON.stringify(c), function (t) {
+ t.similar(a.slice.apply(a, c[0]), Yallist(c[1]))
+ t.similar([].slice.apply(a.toArray(), c[0]), c[1])
+ t.end()
+ })
+ })
+})
+
+t.test('sliceReverse', function (t) {
+ t.plan(cases.length)
+ cases.forEach(function (c) {
+ var rev = c[1].slice().reverse()
+ t.test(JSON.stringify([c[0], rev]), function (t) {
+ t.similar(a.sliceReverse.apply(a, c[0]), Yallist(rev))
+ t.similar([].slice.apply(a.toArray(), c[0]).reverse(), rev)
+ t.end()
+ })
+ })
+})
+
+var inserter = Yallist(1,2,3,4,5)
+inserter.unshiftNode(inserter.head.next)
+t.similar(inserter.toArray(), [2,1,3,4,5])
+inserter.unshiftNode(inserter.tail)
+t.similar(inserter.toArray(), [5,2,1,3,4])
+inserter.unshiftNode(inserter.head)
+t.similar(inserter.toArray(), [5,2,1,3,4])
+
+var single = Yallist(1)
+single.unshiftNode(single.head)
+t.similar(single.toArray(), [1])
+
+inserter = Yallist(1,2,3,4,5)
+inserter.pushNode(inserter.tail.prev)
+t.similar(inserter.toArray(), [1,2,3,5,4])
+inserter.pushNode(inserter.head)
+t.similar(inserter.toArray(), [2,3,5,4,1])
+inserter.unshiftNode(inserter.head)
+t.similar(inserter.toArray(), [2,3,5,4,1])
+
+single = Yallist(1)
+single.pushNode(single.tail)
+t.similar(single.toArray(), [1])
+
+var swiped = Yallist(9,8,7)
+inserter.unshiftNode(swiped.head.next)
+t.similar(inserter.toArray(), [8,2,3,5,4,1])
+t.similar(swiped.toArray(), [9,7])
+
+swiped = Yallist(9,8,7)
+inserter.pushNode(swiped.head.next)
+t.similar(inserter.toArray(), [8,2,3,5,4,1,8])
+t.similar(swiped.toArray(), [9,7])
+
+swiped.unshiftNode(Yallist.Node(99))
+t.similar(swiped.toArray(), [99,9,7])
+swiped.pushNode(Yallist.Node(66))
+t.similar(swiped.toArray(), [99,9,7,66])
+
+var e = Yallist()
+e.unshiftNode(Yallist.Node(1))
+t.same(e.toArray(), [1])
+e = Yallist()
+e.pushNode(Yallist.Node(1))
+t.same(e.toArray(), [1])
+
+// steal them back, don't break the lists
+swiped.unshiftNode(inserter.head)
+t.same(swiped, Yallist(8,99,9,7,66))
+t.same(inserter, Yallist(2,3,5,4,1,8))
+swiped.unshiftNode(inserter.tail)
+t.same(inserter, Yallist(2,3,5,4,1))
+t.same(swiped, Yallist(8,8,99,9,7,66))
+
+
+t.throws(function remove_foreign_node () {
+ e.removeNode(swiped.head)
+}, {}, new Error('removing node which does not belong to this list'))
+t.throws(function remove_unlisted_node () {
+ e.removeNode(Yallist.Node('nope'))
+}, {}, new Error('removing node which does not belong to this list'))
+
+e = Yallist(1,2)
+e.removeNode(e.head)
+t.same(e, Yallist(2))
+e = Yallist(1,2)
+e.removeNode(e.tail)
+t.same(e, Yallist(1))
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/yallist.js b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/yallist.js
new file mode 100644
index 000000000..fb60fc287
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/node_modules/yallist/yallist.js
@@ -0,0 +1,360 @@
+module.exports = Yallist
+
+Yallist.Node = Node
+Yallist.create = Yallist
+
+function Yallist (list) {
+ var self = this
+ if (!(self instanceof Yallist)) {
+ self = new Yallist()
+ }
+
+ self.tail = null
+ self.head = null
+ self.length = 0
+
+ if (list && typeof list.forEach === 'function') {
+ list.forEach(function (item) {
+ self.push(item)
+ })
+ } else if (arguments.length > 0) {
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ self.push(arguments[i])
+ }
+ }
+
+ return self
+}
+
+Yallist.prototype.removeNode = function (node) {
+ if (node.list !== this) {
+ throw new Error('removing node which does not belong to this list')
+ }
+
+ var next = node.next
+ var prev = node.prev
+
+ if (next) {
+ next.prev = prev
+ }
+
+ if (prev) {
+ prev.next = next
+ }
+
+ if (node === this.head) {
+ this.head = next
+ }
+ if (node === this.tail) {
+ this.tail = prev
+ }
+
+ node.list.length --
+ node.next = null
+ node.prev = null
+ node.list = null
+}
+
+Yallist.prototype.unshiftNode = function (node) {
+ if (node === this.head) {
+ return
+ }
+
+ if (node.list) {
+ node.list.removeNode(node)
+ }
+
+ var head = this.head
+ node.list = this
+ node.next = head
+ if (head) {
+ head.prev = node
+ }
+
+ this.head = node
+ if (!this.tail) {
+ this.tail = node
+ }
+ this.length ++
+}
+
+Yallist.prototype.pushNode = function (node) {
+ if (node === this.tail) {
+ return
+ }
+
+ if (node.list) {
+ node.list.removeNode(node)
+ }
+
+ var tail = this.tail
+ node.list = this
+ node.prev = tail
+ if (tail) {
+ tail.next = node
+ }
+
+ this.tail = node
+ if (!this.head) {
+ this.head = node
+ }
+ this.length ++
+}
+
+Yallist.prototype.push = function () {
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ push(this, arguments[i])
+ }
+ return this.length
+}
+
+Yallist.prototype.unshift = function () {
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ unshift(this, arguments[i])
+ }
+ return this.length
+}
+
+Yallist.prototype.pop = function () {
+ if (!this.tail)
+ return undefined
+
+ var res = this.tail.value
+ this.tail = this.tail.prev
+ this.tail.next = null
+ this.length --
+ return res
+}
+
+Yallist.prototype.shift = function () {
+ if (!this.head)
+ return undefined
+
+ var res = this.head.value
+ this.head = this.head.next
+ this.head.prev = null
+ this.length --
+ return res
+}
+
+Yallist.prototype.forEach = function (fn, thisp) {
+ thisp = thisp || this
+ for (var walker = this.head, i = 0; walker !== null; i++) {
+ fn.call(thisp, walker.value, i, this)
+ walker = walker.next
+ }
+}
+
+Yallist.prototype.forEachReverse = function (fn, thisp) {
+ thisp = thisp || this
+ for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {
+ fn.call(thisp, walker.value, i, this)
+ walker = walker.prev
+ }
+}
+
+Yallist.prototype.get = function (n) {
+ for (var i = 0, walker = this.head; walker !== null && i < n; i++) {
+ // abort out of the list early if we hit a cycle
+ walker = walker.next
+ }
+ if (i === n && walker !== null) {
+ return walker.value
+ }
+}
+
+Yallist.prototype.getReverse = function (n) {
+ for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {
+ // abort out of the list early if we hit a cycle
+ walker = walker.prev
+ }
+ if (i === n && walker !== null) {
+ return walker.value
+ }
+}
+
+Yallist.prototype.map = function (fn, thisp) {
+ thisp = thisp || this
+ var res = new Yallist()
+ for (var walker = this.head; walker !== null; ) {
+ res.push(fn.call(thisp, walker.value, this))
+ walker = walker.next
+ }
+ return res
+}
+
+Yallist.prototype.mapReverse = function (fn, thisp) {
+ thisp = thisp || this
+ var res = new Yallist()
+ for (var walker = this.tail; walker !== null;) {
+ res.push(fn.call(thisp, walker.value, this))
+ walker = walker.prev
+ }
+ return res
+}
+
+Yallist.prototype.reduce = function (fn, initial) {
+ var acc
+ var walker = this.head
+ if (arguments.length > 1) {
+ acc = initial
+ } else if (this.head) {
+ walker = this.head.next
+ acc = this.head.value
+ } else {
+ throw new TypeError('Reduce of empty list with no initial value')
+ }
+
+ for (var i = 0; walker !== null; i++) {
+ acc = fn(acc, walker.value, i)
+ walker = walker.next
+ }
+
+ return acc
+}
+
+Yallist.prototype.reduceReverse = function (fn, initial) {
+ var acc
+ var walker = this.tail
+ if (arguments.length > 1) {
+ acc = initial
+ } else if (this.tail) {
+ walker = this.tail.prev
+ acc = this.tail.value
+ } else {
+ throw new TypeError('Reduce of empty list with no initial value')
+ }
+
+ for (var i = this.length - 1; walker !== null; i--) {
+ acc = fn(acc, walker.value, i)
+ walker = walker.prev
+ }
+
+ return acc
+}
+
+Yallist.prototype.toArray = function () {
+ var arr = new Array(this.length)
+ for (var i = 0, walker = this.head; walker !== null; i++) {
+ arr[i] = walker.value
+ walker = walker.next
+ }
+ return arr
+}
+
+Yallist.prototype.toArrayReverse = function () {
+ var arr = new Array(this.length)
+ for (var i = 0, walker = this.tail; walker !== null; i++) {
+ arr[i] = walker.value
+ walker = walker.prev
+ }
+ return arr
+}
+
+Yallist.prototype.slice = function (from, to) {
+ to = to || this.length
+ if (to < 0) {
+ to += this.length
+ }
+ from = from || 0
+ if (from < 0) {
+ from += this.length
+ }
+ var ret = new Yallist()
+ if (to < from || to < 0) {
+ return ret
+ }
+ if (from < 0) {
+ from = 0
+ }
+ if (to > this.length) {
+ to = this.length
+ }
+ for (var i = 0, walker = this.head; walker !== null && i < from; i++) {
+ walker = walker.next
+ }
+ for (; walker !== null && i < to; i++, walker = walker.next) {
+ ret.push(walker.value)
+ }
+ return ret
+}
+
+Yallist.prototype.sliceReverse = function (from, to) {
+ to = to || this.length
+ if (to < 0) {
+ to += this.length
+ }
+ from = from || 0
+ if (from < 0) {
+ from += this.length
+ }
+ var ret = new Yallist()
+ if (to < from || to < 0) {
+ return ret
+ }
+ if (from < 0) {
+ from = 0
+ }
+ if (to > this.length) {
+ to = this.length
+ }
+ for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {
+ walker = walker.prev
+ }
+ for (; walker !== null && i > from; i--, walker = walker.prev) {
+ ret.push(walker.value)
+ }
+ return ret
+}
+
+Yallist.prototype.reverse = function () {
+ var head = this.head
+ var tail = this.tail
+ for (var walker = head; walker !== null; walker = walker.prev) {
+ var p = walker.prev
+ walker.prev = walker.next
+ walker.next = p
+ }
+ this.head = tail
+ this.tail = head
+ return this
+}
+
+function push (self, item) {
+ self.tail = new Node(item, self.tail, null, self)
+ if (!self.head) {
+ self.head = self.tail
+ }
+ self.length ++
+}
+
+function unshift (self, item) {
+ self.head = new Node(item, null, self.head, self)
+ if (!self.tail) {
+ self.tail = self.head
+ }
+ self.length ++
+}
+
+function Node (value, prev, next, list) {
+ if (!(this instanceof Node)) {
+ return new Node(value, prev, next, list)
+ }
+
+ this.list = list
+ this.value = value
+
+ if (prev) {
+ prev.next = this
+ this.prev = prev
+ } else {
+ this.prev = null
+ }
+
+ if (next) {
+ next.prev = this
+ this.next = next
+ } else {
+ this.next = null
+ }
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/package.json b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/package.json
new file mode 100644
index 000000000..8a7096a8f
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/node_modules/lru-cache/package.json
@@ -0,0 +1,103 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "lru-cache@^4.0.0",
+ "scope": null,
+ "escapedName": "lru-cache",
+ "name": "lru-cache",
+ "rawSpec": "^4.0.0",
+ "spec": ">=4.0.0 <5.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async"
+ ]
+ ],
+ "_from": "lru-cache@>=4.0.0 <5.0.0",
+ "_id": "lru-cache@4.0.2",
+ "_inCache": true,
+ "_location": "/update-notifier/boxen/term-size/execa/cross-spawn-async/lru-cache",
+ "_nodeVersion": "6.5.0",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/lru-cache-4.0.2.tgz_1480273800672_0.31606275402009487"
+ },
+ "_npmUser": {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ },
+ "_npmVersion": "3.10.9",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "lru-cache@^4.0.0",
+ "scope": null,
+ "escapedName": "lru-cache",
+ "name": "lru-cache",
+ "rawSpec": "^4.0.0",
+ "spec": ">=4.0.0 <5.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/boxen/term-size/execa/cross-spawn-async"
+ ],
+ "_resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz",
+ "_shasum": "1d17679c069cda5d040991a09dbc2c0db377e55e",
+ "_shrinkwrap": null,
+ "_spec": "lru-cache@^4.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async",
+ "author": {
+ "name": "Isaac Z. Schlueter",
+ "email": "i@izs.me"
+ },
+ "bugs": {
+ "url": "https://github.com/isaacs/node-lru-cache/issues"
+ },
+ "dependencies": {
+ "pseudomap": "^1.0.1",
+ "yallist": "^2.0.0"
+ },
+ "description": "A cache object that deletes the least-recently-used items.",
+ "devDependencies": {
+ "standard": "^5.4.1",
+ "tap": "^8.0.1"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "1d17679c069cda5d040991a09dbc2c0db377e55e",
+ "tarball": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz"
+ },
+ "files": [
+ "lib/lru-cache.js"
+ ],
+ "gitHead": "f25bdae0b4bb0166a75fa01d664a3e3cece1ce98",
+ "homepage": "https://github.com/isaacs/node-lru-cache#readme",
+ "keywords": [
+ "mru",
+ "lru",
+ "cache"
+ ],
+ "license": "ISC",
+ "main": "lib/lru-cache.js",
+ "maintainers": [
+ {
+ "name": "isaacs",
+ "email": "isaacs@npmjs.com"
+ },
+ {
+ "name": "othiym23",
+ "email": "ogd@aoaioxxysz.net"
+ }
+ ],
+ "name": "lru-cache",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/isaacs/node-lru-cache.git"
+ },
+ "scripts": {
+ "posttest": "standard test/*.js lib/*.js",
+ "test": "tap test --100"
+ },
+ "version": "4.0.2"
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/package.json b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/package.json
new file mode 100644
index 000000000..9cb31070c
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/cross-spawn-async/package.json
@@ -0,0 +1,111 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "cross-spawn-async@^2.1.1",
+ "scope": null,
+ "escapedName": "cross-spawn-async",
+ "name": "cross-spawn-async",
+ "rawSpec": "^2.1.1",
+ "spec": ">=2.1.1 <3.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa"
+ ]
+ ],
+ "_from": "cross-spawn-async@>=2.1.1 <3.0.0",
+ "_id": "cross-spawn-async@2.2.5",
+ "_inCache": true,
+ "_location": "/update-notifier/boxen/term-size/execa/cross-spawn-async",
+ "_nodeVersion": "6.9.1",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/cross-spawn-async-2.2.5.tgz_1477593813246_0.9181264599319547"
+ },
+ "_npmUser": {
+ "name": "satazor",
+ "email": "andremiguelcruz@msn.com"
+ },
+ "_npmVersion": "3.10.8",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "cross-spawn-async@^2.1.1",
+ "scope": null,
+ "escapedName": "cross-spawn-async",
+ "name": "cross-spawn-async",
+ "rawSpec": "^2.1.1",
+ "spec": ">=2.1.1 <3.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/boxen/term-size/execa"
+ ],
+ "_resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz",
+ "_shasum": "845ff0c0834a3ded9d160daca6d390906bb288cc",
+ "_shrinkwrap": null,
+ "_spec": "cross-spawn-async@^2.1.1",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa",
+ "author": {
+ "name": "IndigoUnited",
+ "email": "hello@indigounited.com",
+ "url": "http://indigounited.com"
+ },
+ "bugs": {
+ "url": "https://github.com/IndigoUnited/node-cross-spawn-async/issues/"
+ },
+ "dependencies": {
+ "lru-cache": "^4.0.0",
+ "which": "^1.2.8"
+ },
+ "description": "Cross platform child_process#spawn",
+ "devDependencies": {
+ "@satazor/eslint-config": "^3.0.0",
+ "eslint": "^3.0.0",
+ "expect.js": "^0.3.0",
+ "glob": "^7.0.0",
+ "mkdirp": "^0.5.1",
+ "mocha": "^3.0.2",
+ "rimraf": "^2.5.0"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "845ff0c0834a3ded9d160daca6d390906bb288cc",
+ "tarball": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz"
+ },
+ "gitHead": "4ff1e02130b9d54c327002f7953f549e2d143bef",
+ "homepage": "https://github.com/IndigoUnited/node-cross-spawn-async#readme",
+ "keywords": [
+ "spawn",
+ "windows",
+ "cross",
+ "platform",
+ "path",
+ "ext",
+ "path-ext",
+ "path_ext",
+ "shebang",
+ "hashbang",
+ "cmd",
+ "execute"
+ ],
+ "license": "MIT",
+ "main": "index.js",
+ "maintainers": [
+ {
+ "name": "satazor",
+ "email": "andremiguelcruz@msn.com"
+ }
+ ],
+ "name": "cross-spawn-async",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/IndigoUnited/node-cross-spawn-async.git"
+ },
+ "scripts": {
+ "lint": "eslint '{*.js,lib/**/*.js,test/**/*.js}'",
+ "test": "node test/prepare && mocha --bail test/test"
+ },
+ "version": "2.2.5"
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/is-stream/index.js b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/is-stream/index.js
new file mode 100644
index 000000000..6f7ec91a4
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/is-stream/index.js
@@ -0,0 +1,21 @@
+'use strict';
+
+var isStream = module.exports = function (stream) {
+ return stream !== null && typeof stream === 'object' && typeof stream.pipe === 'function';
+};
+
+isStream.writable = function (stream) {
+ return isStream(stream) && stream.writable !== false && typeof stream._write === 'function' && typeof stream._writableState === 'object';
+};
+
+isStream.readable = function (stream) {
+ return isStream(stream) && stream.readable !== false && typeof stream._read === 'function' && typeof stream._readableState === 'object';
+};
+
+isStream.duplex = function (stream) {
+ return isStream.writable(stream) && isStream.readable(stream);
+};
+
+isStream.transform = function (stream) {
+ return isStream.duplex(stream) && typeof stream._transform === 'function' && typeof stream._transformState === 'object';
+};
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/is-stream/license b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/is-stream/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/is-stream/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/is-stream/package.json b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/is-stream/package.json
new file mode 100644
index 000000000..05f759edc
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/is-stream/package.json
@@ -0,0 +1,106 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "is-stream@^1.1.0",
+ "scope": null,
+ "escapedName": "is-stream",
+ "name": "is-stream",
+ "rawSpec": "^1.1.0",
+ "spec": ">=1.1.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa"
+ ]
+ ],
+ "_from": "is-stream@>=1.1.0 <2.0.0",
+ "_id": "is-stream@1.1.0",
+ "_inCache": true,
+ "_location": "/update-notifier/boxen/term-size/execa/is-stream",
+ "_nodeVersion": "4.4.2",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/is-stream-1.1.0.tgz_1460446915184_0.806101513793692"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.15.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "is-stream@^1.1.0",
+ "scope": null,
+ "escapedName": "is-stream",
+ "name": "is-stream",
+ "rawSpec": "^1.1.0",
+ "spec": ">=1.1.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/boxen/term-size/execa"
+ ],
+ "_resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "_shasum": "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44",
+ "_shrinkwrap": null,
+ "_spec": "is-stream@^1.1.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/is-stream/issues"
+ },
+ "dependencies": {},
+ "description": "Check if something is a Node.js stream",
+ "devDependencies": {
+ "ava": "*",
+ "tempfile": "^1.1.0",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44",
+ "tarball": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "e21d73f1028c189d16150cea52641059b0936310",
+ "homepage": "https://github.com/sindresorhus/is-stream#readme",
+ "keywords": [
+ "stream",
+ "type",
+ "streams",
+ "writable",
+ "readable",
+ "duplex",
+ "transform",
+ "check",
+ "detect",
+ "is"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "is-stream",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/is-stream.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "1.1.0"
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/is-stream/readme.md b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/is-stream/readme.md
new file mode 100644
index 000000000..d8afce81d
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/is-stream/readme.md
@@ -0,0 +1,42 @@
+# is-stream [![Build Status](https://travis-ci.org/sindresorhus/is-stream.svg?branch=master)](https://travis-ci.org/sindresorhus/is-stream)
+
+> Check if something is a [Node.js stream](https://nodejs.org/api/stream.html)
+
+
+## Install
+
+```
+$ npm install --save is-stream
+```
+
+
+## Usage
+
+```js
+const fs = require('fs');
+const isStream = require('is-stream');
+
+isStream(fs.createReadStream('unicorn.png'));
+//=> true
+
+isStream({});
+//=> false
+```
+
+
+## API
+
+### isStream(stream)
+
+#### isStream.writable(stream)
+
+#### isStream.readable(stream)
+
+#### isStream.duplex(stream)
+
+#### isStream.transform(stream)
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/npm-run-path/index.js b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/npm-run-path/index.js
new file mode 100644
index 000000000..92b8d7dc3
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/npm-run-path/index.js
@@ -0,0 +1,23 @@
+'use strict';
+var path = require('path');
+var pathKey = require('path-key');
+
+module.exports = function (opts) {
+ opts = opts || {};
+
+ var prev;
+ var pth = path.resolve(opts.cwd || '.');
+
+ var ret = [];
+
+ while (prev !== pth) {
+ ret.push(path.join(pth, 'node_modules/.bin'));
+ prev = pth;
+ pth = path.resolve(pth, '..');
+ }
+
+ // ensure the running `node` binary is used
+ ret.push(path.dirname(process.execPath));
+
+ return ret.concat(opts.path || process.env[pathKey()]).join(path.delimiter);
+};
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/npm-run-path/license b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/npm-run-path/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/npm-run-path/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/npm-run-path/package.json b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/npm-run-path/package.json
new file mode 100644
index 000000000..048bf0972
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/npm-run-path/package.json
@@ -0,0 +1,105 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "npm-run-path@^1.0.0",
+ "scope": null,
+ "escapedName": "npm-run-path",
+ "name": "npm-run-path",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa"
+ ]
+ ],
+ "_from": "npm-run-path@>=1.0.0 <2.0.0",
+ "_id": "npm-run-path@1.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/boxen/term-size/execa/npm-run-path",
+ "_nodeVersion": "4.2.4",
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.14.12",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "npm-run-path@^1.0.0",
+ "scope": null,
+ "escapedName": "npm-run-path",
+ "name": "npm-run-path",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/boxen/term-size/execa"
+ ],
+ "_resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-1.0.0.tgz",
+ "_shasum": "f5c32bf595fe81ae927daec52e82f8b000ac3c8f",
+ "_shrinkwrap": null,
+ "_spec": "npm-run-path@^1.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/npm-run-path/issues"
+ },
+ "dependencies": {
+ "path-key": "^1.0.0"
+ },
+ "description": "Get your PATH prepended with locally installed binaries",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "f5c32bf595fe81ae927daec52e82f8b000ac3c8f",
+ "tarball": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-1.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "8565fe56a35dd58bde38d20409339ba2e0200bd0",
+ "homepage": "https://github.com/sindresorhus/npm-run-path",
+ "keywords": [
+ "npm",
+ "run",
+ "path",
+ "package",
+ "bin",
+ "binary",
+ "binaries",
+ "script",
+ "cli",
+ "command-line",
+ "execute",
+ "executable"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "npm-run-path",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/npm-run-path.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "1.0.0"
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/npm-run-path/readme.md b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/npm-run-path/readme.md
new file mode 100644
index 000000000..c68017fdd
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/npm-run-path/readme.md
@@ -0,0 +1,66 @@
+# npm-run-path [![Build Status](https://travis-ci.org/sindresorhus/npm-run-path.svg?branch=master)](https://travis-ci.org/sindresorhus/npm-run-path)
+
+> Get your [PATH](https://en.wikipedia.org/wiki/PATH_(variable)) prepended with locally installed binaries
+
+In [npm run scripts](https://docs.npmjs.com/cli/run-script) you can execute locally installed binaries by name. This enables the same outside npm.
+
+
+## Install
+
+```
+$ npm install --save npm-run-path
+```
+
+
+## Usage
+
+```js
+const childProcess = require('child_process');
+const npmRunPath = require('npm-run-path');
+
+console.log(process.env.PATH);
+//=> '/usr/local/bin'
+
+console.log(npmRunPath());
+//=> '/Users/sindresorhus/dev/foo/node_modules/.bin:/Users/sindresorhus/dev/node_modules/.bin:/Users/sindresorhus/node_modules/.bin:/Users/node_modules/.bin:/node_modules/.bin:/usr/local/bin'
+
+// `foo` is a locally installed binary
+childProcess.execFileSync('foo', {
+ env: {
+ PATH: npmRunPath()
+ }
+});
+```
+
+
+## API
+
+### npmRunPath([options])
+
+#### options
+
+##### cwd
+
+Type: `string`
+Default: `process.cwd()`
+
+Working directory.
+
+##### path
+
+Type: `string`
+Default: [`PATH`](https://github.com/sindresorhus/path-key)
+
+PATH to be appended.<br>
+Set it to an empty string to exclude the default PATH.
+
+
+## Related
+
+- [npm-run-path-cli](https://github.com/sindresorhus/npm-run-path-cli) - CLI for this module
+- [execa](https://github.com/sindresorhus/execa) - Execute a locally installed binary
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/object-assign/index.js b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/object-assign/index.js
new file mode 100644
index 000000000..0930cf889
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/object-assign/index.js
@@ -0,0 +1,90 @@
+/*
+object-assign
+(c) Sindre Sorhus
+@license MIT
+*/
+
+'use strict';
+/* eslint-disable no-unused-vars */
+var getOwnPropertySymbols = Object.getOwnPropertySymbols;
+var hasOwnProperty = Object.prototype.hasOwnProperty;
+var propIsEnumerable = Object.prototype.propertyIsEnumerable;
+
+function toObject(val) {
+ if (val === null || val === undefined) {
+ throw new TypeError('Object.assign cannot be called with null or undefined');
+ }
+
+ return Object(val);
+}
+
+function shouldUseNative() {
+ try {
+ if (!Object.assign) {
+ return false;
+ }
+
+ // Detect buggy property enumeration order in older V8 versions.
+
+ // https://bugs.chromium.org/p/v8/issues/detail?id=4118
+ var test1 = new String('abc'); // eslint-disable-line no-new-wrappers
+ test1[5] = 'de';
+ if (Object.getOwnPropertyNames(test1)[0] === '5') {
+ return false;
+ }
+
+ // https://bugs.chromium.org/p/v8/issues/detail?id=3056
+ var test2 = {};
+ for (var i = 0; i < 10; i++) {
+ test2['_' + String.fromCharCode(i)] = i;
+ }
+ var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
+ return test2[n];
+ });
+ if (order2.join('') !== '0123456789') {
+ return false;
+ }
+
+ // https://bugs.chromium.org/p/v8/issues/detail?id=3056
+ var test3 = {};
+ 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
+ test3[letter] = letter;
+ });
+ if (Object.keys(Object.assign({}, test3)).join('') !==
+ 'abcdefghijklmnopqrst') {
+ return false;
+ }
+
+ return true;
+ } catch (err) {
+ // We don't expect any of the above to throw, but better to be safe.
+ return false;
+ }
+}
+
+module.exports = shouldUseNative() ? Object.assign : function (target, source) {
+ var from;
+ var to = toObject(target);
+ var symbols;
+
+ for (var s = 1; s < arguments.length; s++) {
+ from = Object(arguments[s]);
+
+ for (var key in from) {
+ if (hasOwnProperty.call(from, key)) {
+ to[key] = from[key];
+ }
+ }
+
+ if (getOwnPropertySymbols) {
+ symbols = getOwnPropertySymbols(from);
+ for (var i = 0; i < symbols.length; i++) {
+ if (propIsEnumerable.call(from, symbols[i])) {
+ to[symbols[i]] = from[symbols[i]];
+ }
+ }
+ }
+ }
+
+ return to;
+};
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/object-assign/license b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/object-assign/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/object-assign/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/object-assign/package.json b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/object-assign/package.json
new file mode 100644
index 000000000..1a5745c98
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/object-assign/package.json
@@ -0,0 +1,118 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "object-assign@^4.0.1",
+ "scope": null,
+ "escapedName": "object-assign",
+ "name": "object-assign",
+ "rawSpec": "^4.0.1",
+ "spec": ">=4.0.1 <5.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa"
+ ]
+ ],
+ "_from": "object-assign@>=4.0.1 <5.0.0",
+ "_id": "object-assign@4.1.1",
+ "_inCache": true,
+ "_location": "/update-notifier/boxen/term-size/execa/object-assign",
+ "_nodeVersion": "4.6.2",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/object-assign-4.1.1.tgz_1484580915042_0.07107710791751742"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.15.11",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "object-assign@^4.0.1",
+ "scope": null,
+ "escapedName": "object-assign",
+ "name": "object-assign",
+ "rawSpec": "^4.0.1",
+ "spec": ">=4.0.1 <5.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/boxen/term-size/execa"
+ ],
+ "_resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "_shasum": "2109adc7965887cfc05cbbd442cac8bfbb360863",
+ "_shrinkwrap": null,
+ "_spec": "object-assign@^4.0.1",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/object-assign/issues"
+ },
+ "dependencies": {},
+ "description": "ES2015 `Object.assign()` ponyfill",
+ "devDependencies": {
+ "ava": "^0.16.0",
+ "lodash": "^4.16.4",
+ "matcha": "^0.7.0",
+ "xo": "^0.16.0"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "2109adc7965887cfc05cbbd442cac8bfbb360863",
+ "tarball": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "a89774b252c91612203876984bbd6addbe3b5a0e",
+ "homepage": "https://github.com/sindresorhus/object-assign#readme",
+ "keywords": [
+ "object",
+ "assign",
+ "extend",
+ "properties",
+ "es2015",
+ "ecmascript",
+ "harmony",
+ "ponyfill",
+ "prollyfill",
+ "polyfill",
+ "shim",
+ "browser"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "gaearon",
+ "email": "dan.abramov@gmail.com"
+ },
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ {
+ "name": "spicyj",
+ "email": "ben@benalpert.com"
+ }
+ ],
+ "name": "object-assign",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/object-assign.git"
+ },
+ "scripts": {
+ "bench": "matcha bench.js",
+ "test": "xo && ava"
+ },
+ "version": "4.1.1"
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/object-assign/readme.md b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/object-assign/readme.md
new file mode 100644
index 000000000..1be09d35c
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/object-assign/readme.md
@@ -0,0 +1,61 @@
+# object-assign [![Build Status](https://travis-ci.org/sindresorhus/object-assign.svg?branch=master)](https://travis-ci.org/sindresorhus/object-assign)
+
+> ES2015 [`Object.assign()`](http://www.2ality.com/2014/01/object-assign.html) [ponyfill](https://ponyfill.com)
+
+
+## Use the built-in
+
+Node.js 4 and up, as well as every evergreen browser (Chrome, Edge, Firefox, Opera, Safari),
+support `Object.assign()` :tada:. If you target only those environments, then by all
+means, use `Object.assign()` instead of this package.
+
+
+## Install
+
+```
+$ npm install --save object-assign
+```
+
+
+## Usage
+
+```js
+const objectAssign = require('object-assign');
+
+objectAssign({foo: 0}, {bar: 1});
+//=> {foo: 0, bar: 1}
+
+// multiple sources
+objectAssign({foo: 0}, {bar: 1}, {baz: 2});
+//=> {foo: 0, bar: 1, baz: 2}
+
+// overwrites equal keys
+objectAssign({foo: 0}, {foo: 1}, {foo: 2});
+//=> {foo: 2}
+
+// ignores null and undefined sources
+objectAssign({foo: 0}, null, {bar: 1}, undefined);
+//=> {foo: 0, bar: 1}
+```
+
+
+## API
+
+### objectAssign(target, [source, ...])
+
+Assigns enumerable own properties of `source` objects to the `target` object and returns the `target` object. Additional `source` objects will overwrite previous ones.
+
+
+## Resources
+
+- [ES2015 spec - Object.assign](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign)
+
+
+## Related
+
+- [deep-assign](https://github.com/sindresorhus/deep-assign) - Recursive `Object.assign()`
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/path-key/index.js b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/path-key/index.js
new file mode 100644
index 000000000..3233661e1
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/path-key/index.js
@@ -0,0 +1,15 @@
+'use strict';
+module.exports = function (opts) {
+ opts = opts || {};
+
+ var env = opts.env || process.env;
+ var platform = opts.platform || process.platform;
+
+ if (platform !== 'win32') {
+ return 'PATH';
+ }
+
+ return Object.keys(env).filter(function (x) {
+ return x.toUpperCase() === 'PATH';
+ })[0] || 'Path';
+};
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/path-key/license b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/path-key/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/path-key/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/path-key/package.json b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/path-key/package.json
new file mode 100644
index 000000000..eb602902d
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/path-key/package.json
@@ -0,0 +1,101 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "path-key@^1.0.0",
+ "scope": null,
+ "escapedName": "path-key",
+ "name": "path-key",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa"
+ ]
+ ],
+ "_from": "path-key@>=1.0.0 <2.0.0",
+ "_id": "path-key@1.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/boxen/term-size/execa/path-key",
+ "_nodeVersion": "4.2.4",
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.14.12",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "path-key@^1.0.0",
+ "scope": null,
+ "escapedName": "path-key",
+ "name": "path-key",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/boxen/term-size/execa",
+ "/update-notifier/boxen/term-size/execa/npm-run-path"
+ ],
+ "_resolved": "https://registry.npmjs.org/path-key/-/path-key-1.0.0.tgz",
+ "_shasum": "5d53d578019646c0d68800db4e146e6bdc2ac7af",
+ "_shrinkwrap": null,
+ "_spec": "path-key@^1.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/path-key/issues"
+ },
+ "dependencies": {},
+ "description": "Get the PATH environment variable key cross-platform",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "5d53d578019646c0d68800db4e146e6bdc2ac7af",
+ "tarball": "https://registry.npmjs.org/path-key/-/path-key-1.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "7f9703b3ae62da971bae635d561b1a6b80102cc1",
+ "homepage": "https://github.com/sindresorhus/path-key",
+ "keywords": [
+ "path",
+ "key",
+ "environment",
+ "env",
+ "variable",
+ "var",
+ "get",
+ "cross-platform",
+ "windows"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "path-key",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/path-key.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "1.0.0"
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/path-key/readme.md b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/path-key/readme.md
new file mode 100644
index 000000000..799e8296e
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/path-key/readme.md
@@ -0,0 +1,51 @@
+# path-key [![Build Status](https://travis-ci.org/sindresorhus/path-key.svg?branch=master)](https://travis-ci.org/sindresorhus/path-key)
+
+> Get the [PATH](https://en.wikipedia.org/wiki/PATH_(variable)) environment variable key cross-platform
+
+It's usually `PATH`, but on Windows it can be any casing like `Path`...
+
+
+## Install
+
+```
+$ npm install --save path-key
+```
+
+
+## Usage
+
+```js
+const pathKey = require('path-key');
+
+const key = pathKey();
+//=> 'PATH'
+
+const PATH = process.env[key];
+//=> '/usr/local/bin:/usr/bin:/bin'
+```
+
+
+## API
+
+### pathKey([options])
+
+#### options
+
+##### env
+
+Type: `object`
+Default: [`process.env`](https://nodejs.org/api/process.html#process_process_env)
+
+Use a custom environment variables object.
+
+#### platform
+
+Type: `string`
+Default: [`process.platform`](https://nodejs.org/api/process.html#process_process_platform)
+
+Get the PATH key for a specific platform.
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/strip-eof/index.js b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/strip-eof/index.js
new file mode 100644
index 000000000..a17d0afd3
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/strip-eof/index.js
@@ -0,0 +1,15 @@
+'use strict';
+module.exports = function (x) {
+ var lf = typeof x === 'string' ? '\n' : '\n'.charCodeAt();
+ var cr = typeof x === 'string' ? '\r' : '\r'.charCodeAt();
+
+ if (x[x.length - 1] === lf) {
+ x = x.slice(0, x.length - 1);
+ }
+
+ if (x[x.length - 1] === cr) {
+ x = x.slice(0, x.length - 1);
+ }
+
+ return x;
+};
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/strip-eof/license b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/strip-eof/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/strip-eof/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/strip-eof/package.json b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/strip-eof/package.json
new file mode 100644
index 000000000..8185926f9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/strip-eof/package.json
@@ -0,0 +1,103 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "strip-eof@^1.0.0",
+ "scope": null,
+ "escapedName": "strip-eof",
+ "name": "strip-eof",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa"
+ ]
+ ],
+ "_from": "strip-eof@>=1.0.0 <2.0.0",
+ "_id": "strip-eof@1.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/boxen/term-size/execa/strip-eof",
+ "_nodeVersion": "4.2.1",
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.14.7",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "strip-eof@^1.0.0",
+ "scope": null,
+ "escapedName": "strip-eof",
+ "name": "strip-eof",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/boxen/term-size/execa"
+ ],
+ "_resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "_shasum": "bb43ff5598a6eb05d89b59fcd129c983313606bf",
+ "_shrinkwrap": null,
+ "_spec": "strip-eof@^1.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/strip-eof/issues"
+ },
+ "dependencies": {},
+ "description": "Strip the End-Of-File (EOF) character from a string/buffer",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "bb43ff5598a6eb05d89b59fcd129c983313606bf",
+ "tarball": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "365dfe6c19b4e607a0cc2cf7dad0b0620f238333",
+ "homepage": "https://github.com/sindresorhus/strip-eof",
+ "keywords": [
+ "strip",
+ "trim",
+ "remove",
+ "delete",
+ "eof",
+ "end",
+ "file",
+ "newline",
+ "linebreak",
+ "character",
+ "string",
+ "buffer"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "strip-eof",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/strip-eof.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "1.0.0"
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/strip-eof/readme.md b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/strip-eof/readme.md
new file mode 100644
index 000000000..45ffe0436
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/node_modules/strip-eof/readme.md
@@ -0,0 +1,28 @@
+# strip-eof [![Build Status](https://travis-ci.org/sindresorhus/strip-eof.svg?branch=master)](https://travis-ci.org/sindresorhus/strip-eof)
+
+> Strip the [End-Of-File](https://en.wikipedia.org/wiki/End-of-file) (EOF) character from a string/buffer
+
+
+## Install
+
+```
+$ npm install --save strip-eof
+```
+
+
+## Usage
+
+```js
+const stripEof = require('strip-eof');
+
+stripEof('foo\nbar\n\n');
+//=> 'foo\nbar\n'
+
+stripEof(new Buffer('foo\nbar\n\n')).toString();
+//=> 'foo\nbar\n'
+```
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/package.json b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/package.json
new file mode 100644
index 000000000..f6e430e8c
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/package.json
@@ -0,0 +1,124 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "execa@^0.4.0",
+ "scope": null,
+ "escapedName": "execa",
+ "name": "execa",
+ "rawSpec": "^0.4.0",
+ "spec": ">=0.4.0 <0.5.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size"
+ ]
+ ],
+ "_from": "execa@>=0.4.0 <0.5.0",
+ "_id": "execa@0.4.0",
+ "_inCache": true,
+ "_location": "/update-notifier/boxen/term-size/execa",
+ "_nodeVersion": "4.4.2",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/execa-0.4.0.tgz_1461691655825_0.48842903040349483"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "3.8.8",
+ "_phantomChildren": {
+ "which": "1.2.12"
+ },
+ "_requested": {
+ "raw": "execa@^0.4.0",
+ "scope": null,
+ "escapedName": "execa",
+ "name": "execa",
+ "rawSpec": "^0.4.0",
+ "spec": ">=0.4.0 <0.5.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/boxen/term-size"
+ ],
+ "_resolved": "https://registry.npmjs.org/execa/-/execa-0.4.0.tgz",
+ "_shasum": "4eb6467a36a095fabb2970ff9d5e3fb7bce6ebc3",
+ "_shrinkwrap": null,
+ "_spec": "execa@^0.4.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/execa/issues"
+ },
+ "dependencies": {
+ "cross-spawn-async": "^2.1.1",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "path-key": "^1.0.0",
+ "strip-eof": "^1.0.0"
+ },
+ "description": "A better `child_process`",
+ "devDependencies": {
+ "ava": "*",
+ "cat-names": "^1.0.2",
+ "coveralls": "^2.11.9",
+ "get-stream": "^2.0.0",
+ "nyc": "^6.4.0",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "4eb6467a36a095fabb2970ff9d5e3fb7bce6ebc3",
+ "tarball": "https://registry.npmjs.org/execa/-/execa-0.4.0.tgz"
+ },
+ "engines": {
+ "node": ">=0.12"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "c72609605b1ce2fcf42b913cd91e74503cd8d629",
+ "homepage": "https://github.com/sindresorhus/execa#readme",
+ "keywords": [
+ "exec",
+ "child",
+ "process",
+ "execute",
+ "fork",
+ "execfile",
+ "spawn",
+ "file",
+ "shell",
+ "bin",
+ "binary",
+ "binaries",
+ "npm",
+ "path",
+ "local"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "execa",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/execa.git"
+ },
+ "scripts": {
+ "coveralls": "nyc report --reporter=text-lcov | coveralls",
+ "test": "xo && nyc ava"
+ },
+ "version": "0.4.0"
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/readme.md b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/readme.md
new file mode 100644
index 000000000..1231e6d8d
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa/readme.md
@@ -0,0 +1,137 @@
+# execa [![Build Status: Linux](https://travis-ci.org/sindresorhus/execa.svg?branch=master)](https://travis-ci.org/sindresorhus/execa) [![Build status: Windows](https://ci.appveyor.com/api/projects/status/x5ajamxtjtt93cqv/branch/master?svg=true)](https://ci.appveyor.com/project/sindresorhus/execa/branch/master) [![Coverage Status](https://coveralls.io/repos/github/sindresorhus/execa/badge.svg?branch=master)](https://coveralls.io/github/sindresorhus/execa?branch=master)
+
+> A better [`child_process`](https://nodejs.org/api/child_process.html)
+
+
+## Why
+
+- Promise interface.
+- [Strips EOF](https://github.com/sindresorhus/strip-eof) from the output so you don't have to `stdout.trim()`.
+- Supports [shebang](https://en.wikipedia.org/wiki/Shebang_(Unix)) binaries cross-platform.
+- [Improved Windows support.](https://github.com/IndigoUnited/node-cross-spawn-async#why)
+- Higher max buffer. 10 MB instead of 200 KB.
+- [Executes locally installed binaries by name.](#preferlocal)
+
+
+## Install
+
+```
+$ npm install --save execa
+```
+
+
+## Usage
+
+```js
+const execa = require('execa');
+
+execa('echo', ['unicorns']).then(result => {
+ console.log(result.stdout);
+ //=> 'unicorns'
+});
+
+execa.shell('echo unicorns').then(result => {
+ console.log(result.stdout);
+ //=> 'unicorns'
+});
+
+// example of catching an error
+execa.shell('exit 3').catch(error => {
+ console.log(error);
+ /*
+ {
+ message: 'Command failed: /bin/sh -c exit 3'
+ killed: false,
+ code: 3,
+ signal: null,
+ cmd: '/bin/sh -c exit 3',
+ stdout: '',
+ stderr: ''
+ }
+ */
+});
+```
+
+
+## API
+
+### execa(file, [arguments], [options])
+
+Execute a file.
+
+Same options as [`child_process.execFile`](https://nodejs.org/api/child_process.html#child_process_child_process_execfile_file_args_options_callback).
+
+Returns a [`child_process` instance](https://nodejs.org/api/child_process.html#child_process_class_childprocess).
+
+The `child_process` instance is enhanced to also be promise for a result object with `stdout` and `stderr` properties.
+
+### execa.stdout(file, [arguments], [options])
+
+Same as `execa()`, but returns only `stdout`.
+
+### execa.stderr(file, [arguments], [options])
+
+Same as `execa()`, but returns only `stderr`.
+
+### execa.shell(command, [options])
+
+Execute a command through the system shell. Prefer `execa()` whenever possible, as it's both faster and safer.
+
+Same options as [`child_process.exec`](https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback).
+
+Returns a [`child_process` instance](https://nodejs.org/api/child_process.html#child_process_class_childprocess).
+
+The `child_process` instance is enhanced to also be promise for a result object with `stdout` and `stderr` properties.
+
+### execa.spawn(file, [arguments], [options])
+
+Spawn a file.
+
+Same API as [`child_process.spawn`](https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options).
+
+### execa.sync(file, [arguments], [options])
+
+Execute a file synchronously.
+
+Same options as [`child_process.execFileSync`](https://nodejs.org/api/child_process.html#child_process_child_process_execfilesync_file_args_options), except the default encoding is `utf8` instead of `buffer`.
+
+Returns the same result object as [`child_process.spawnSync`](https://nodejs.org/api/child_process.html#child_process_child_process_spawnsync_command_args_options).
+
+### execa.shellSync(file, [options])
+
+Execute a command synchronously through the system shell.
+
+Same options as [`child_process.execSync`](https://nodejs.org/api/child_process.html#child_process_child_process_execsync_command_options), except the default encoding is `utf8` instead of `buffer`.
+
+Returns the same result object as [`child_process.spawnSync`](https://nodejs.org/api/child_process.html#child_process_child_process_spawnsync_command_args_options).
+
+### options
+
+Additional options:
+
+#### stripEof
+
+Type: `boolean`<br>
+Default: `true`
+
+[Strip EOF](https://github.com/sindresorhus/strip-eof) (last newline) from the output.
+
+#### preferLocal
+
+Type: `boolean`<br>
+Default: `true`
+
+Prefer locally installed binaries when looking for a binary to execute.<br>
+If you `$ npm install foo`, you can then `execa('foo')`.
+
+#### input
+
+Type: `string` `Buffer` `ReadableStream`
+
+Write some input to the `stdin` of your binary.<br>
+Streams are not allowed when using the synchronous methods.
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/package.json b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/package.json
new file mode 100644
index 000000000..53fb048ff
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/package.json
@@ -0,0 +1,115 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "term-size@^0.1.0",
+ "scope": null,
+ "escapedName": "term-size",
+ "name": "term-size",
+ "rawSpec": "^0.1.0",
+ "spec": ">=0.1.0 <0.2.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen"
+ ]
+ ],
+ "_from": "term-size@>=0.1.0 <0.2.0",
+ "_id": "term-size@0.1.1",
+ "_inCache": true,
+ "_location": "/update-notifier/boxen/term-size",
+ "_nodeVersion": "4.6.2",
+ "_npmOperationalInternal": {
+ "host": "packages-18-east.internal.npmjs.com",
+ "tmp": "tmp/term-size-0.1.1.tgz_1486106219108_0.7680419140961021"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.15.11",
+ "_phantomChildren": {
+ "which": "1.2.12"
+ },
+ "_requested": {
+ "raw": "term-size@^0.1.0",
+ "scope": null,
+ "escapedName": "term-size",
+ "name": "term-size",
+ "rawSpec": "^0.1.0",
+ "spec": ">=0.1.0 <0.2.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/boxen"
+ ],
+ "_resolved": "https://registry.npmjs.org/term-size/-/term-size-0.1.1.tgz",
+ "_shasum": "87360b96396cab5760963714cda0d0cbeecad9ca",
+ "_shrinkwrap": null,
+ "_spec": "term-size@^0.1.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/term-size/issues"
+ },
+ "dependencies": {
+ "execa": "^0.4.0"
+ },
+ "description": "Reliably get the terminal window size",
+ "devDependencies": {
+ "ava": "*",
+ "execa": "^0.4.0",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "87360b96396cab5760963714cda0d0cbeecad9ca",
+ "tarball": "https://registry.npmjs.org/term-size/-/term-size-0.1.1.tgz"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "files": [
+ "index.js",
+ "vendor"
+ ],
+ "gitHead": "038e258a49fa7a13e63928e0da496b7940e07ac4",
+ "homepage": "https://github.com/sindresorhus/term-size#readme",
+ "keywords": [
+ "term",
+ "terminal",
+ "size",
+ "console",
+ "window",
+ "width",
+ "height",
+ "columns",
+ "rows",
+ "lines",
+ "tty"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "term-size",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/term-size.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "0.1.1",
+ "xo": {
+ "esnext": true
+ }
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/readme.md b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/readme.md
new file mode 100644
index 000000000..a067f8009
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/readme.md
@@ -0,0 +1,41 @@
+# term-size [![Build Status: Linux & macOS](https://travis-ci.org/sindresorhus/term-size.svg?branch=master)](https://travis-ci.org/sindresorhus/term-size) [![Build Status: Windows](https://ci.appveyor.com/api/projects/status/c3tydg6uedsk0bob/branch/master?svg=true)](https://ci.appveyor.com/project/sindresorhus/term-size/branch/master)
+
+> Reliably get the terminal window size
+
+Because [`process.stdout.columns`](https://nodejs.org/api/tty.html#tty_writestream_columns) doesn't exist when run [non-interactively](http://www.tldp.org/LDP/abs/html/intandnonint.html), for example, in a child process or when piped.
+
+Confirmed working on macOS, Linux, and Windows.
+
+
+## Install
+
+```
+$ npm install --save term-size
+```
+
+
+## Usage
+
+```js
+const termSize = require('term-size');
+
+termSize();
+//=> {columns: 143, rows: 24}
+```
+
+
+## API
+
+### termSize()
+
+Returns an `Object` with `columns` and `rows` properties.
+
+
+## Related
+
+- [term-size-cli](https://github.com/sindresorhus/term-size-cli) - CLI for this module
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/vendor/resize b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/vendor/resize
new file mode 100755
index 000000000..476ede4c0
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/vendor/resize
Binary files differ
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/vendor/win-term-size.exe b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/vendor/win-term-size.exe
new file mode 100644
index 000000000..c7a170c96
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/vendor/win-term-size.exe
Binary files differ
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/index.js b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/index.js
new file mode 100644
index 000000000..e5baea9e9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/index.js
@@ -0,0 +1,8 @@
+'use strict';
+var stringWidth = require('string-width');
+
+module.exports = function (str) {
+ return Math.max.apply(null, str.split('\n').map(function (x) {
+ return stringWidth(x);
+ }));
+};
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/license b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/index.js b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/index.js
new file mode 100644
index 000000000..b9bec6244
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/index.js
@@ -0,0 +1,37 @@
+'use strict';
+var stripAnsi = require('strip-ansi');
+var codePointAt = require('code-point-at');
+var isFullwidthCodePoint = require('is-fullwidth-code-point');
+
+// https://github.com/nodejs/io.js/blob/cff7300a578be1b10001f2d967aaedc88aee6402/lib/readline.js#L1345
+module.exports = function (str) {
+ if (typeof str !== 'string' || str.length === 0) {
+ return 0;
+ }
+
+ var width = 0;
+
+ str = stripAnsi(str);
+
+ for (var i = 0; i < str.length; i++) {
+ var code = codePointAt(str, i);
+
+ // ignore control characters
+ if (code <= 0x1f || (code >= 0x7f && code <= 0x9f)) {
+ continue;
+ }
+
+ // surrogates
+ if (code >= 0x10000) {
+ i++;
+ }
+
+ if (isFullwidthCodePoint(code)) {
+ width += 2;
+ } else {
+ width++;
+ }
+ }
+
+ return width;
+};
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/license b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/code-point-at/index.js b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/code-point-at/index.js
new file mode 100644
index 000000000..0432fe6a3
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/code-point-at/index.js
@@ -0,0 +1,32 @@
+/* eslint-disable babel/new-cap, xo/throw-new-error */
+'use strict';
+module.exports = function (str, pos) {
+ if (str === null || str === undefined) {
+ throw TypeError();
+ }
+
+ str = String(str);
+
+ var size = str.length;
+ var i = pos ? Number(pos) : 0;
+
+ if (Number.isNaN(i)) {
+ i = 0;
+ }
+
+ if (i < 0 || i >= size) {
+ return undefined;
+ }
+
+ var first = str.charCodeAt(i);
+
+ if (first >= 0xD800 && first <= 0xDBFF && size > i + 1) {
+ var second = str.charCodeAt(i + 1);
+
+ if (second >= 0xDC00 && second <= 0xDFFF) {
+ return ((first - 0xD800) * 0x400) + second - 0xDC00 + 0x10000;
+ }
+ }
+
+ return first;
+};
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/code-point-at/license b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/code-point-at/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/code-point-at/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/code-point-at/package.json b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/code-point-at/package.json
new file mode 100644
index 000000000..75090900e
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/code-point-at/package.json
@@ -0,0 +1,118 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "code-point-at@^1.0.0",
+ "scope": null,
+ "escapedName": "code-point-at",
+ "name": "code-point-at",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width"
+ ],
+ [
+ {
+ "raw": "code-point-at@^1.0.0",
+ "scope": null,
+ "escapedName": "code-point-at",
+ "name": "code-point-at",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width"
+ ]
+ ],
+ "_from": "code-point-at@^1.0.0",
+ "_id": "code-point-at@1.1.0",
+ "_inCache": true,
+ "_location": "/update-notifier/boxen/widest-line/string-width/code-point-at",
+ "_nodeVersion": "4.6.1",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/code-point-at-1.1.0.tgz_1478169780337_0.8445875702891499"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.15.9",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "code-point-at@^1.0.0",
+ "scope": null,
+ "escapedName": "code-point-at",
+ "name": "code-point-at",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/boxen/widest-line/string-width"
+ ],
+ "_resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "_shasum": "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77",
+ "_shrinkwrap": null,
+ "_spec": "code-point-at@^1.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/code-point-at/issues"
+ },
+ "dependencies": {},
+ "description": "ES2015 `String#codePointAt()` ponyfill",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "^0.16.0"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77",
+ "tarball": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "f8f21c8df2d40248fef1b36ca9076e59c0c34791",
+ "homepage": "https://github.com/sindresorhus/code-point-at#readme",
+ "keywords": [
+ "es2015",
+ "ponyfill",
+ "polyfill",
+ "shim",
+ "string",
+ "str",
+ "code",
+ "point",
+ "at",
+ "codepoint",
+ "unicode"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "code-point-at",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/code-point-at.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "1.1.0"
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/code-point-at/readme.md b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/code-point-at/readme.md
new file mode 100644
index 000000000..4c97730e6
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/code-point-at/readme.md
@@ -0,0 +1,32 @@
+# code-point-at [![Build Status](https://travis-ci.org/sindresorhus/code-point-at.svg?branch=master)](https://travis-ci.org/sindresorhus/code-point-at)
+
+> ES2015 [`String#codePointAt()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/codePointAt) [ponyfill](https://ponyfill.com)
+
+
+## Install
+
+```
+$ npm install --save code-point-at
+```
+
+
+## Usage
+
+```js
+var codePointAt = require('code-point-at');
+
+codePointAt('🐴');
+//=> 128052
+
+codePointAt('abc', 2);
+//=> 99
+```
+
+## API
+
+### codePointAt(input, [position])
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/index.js b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/index.js
new file mode 100644
index 000000000..a7d3e3855
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/index.js
@@ -0,0 +1,46 @@
+'use strict';
+var numberIsNan = require('number-is-nan');
+
+module.exports = function (x) {
+ if (numberIsNan(x)) {
+ return false;
+ }
+
+ // https://github.com/nodejs/io.js/blob/cff7300a578be1b10001f2d967aaedc88aee6402/lib/readline.js#L1369
+
+ // code points are derived from:
+ // http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt
+ if (x >= 0x1100 && (
+ x <= 0x115f || // Hangul Jamo
+ 0x2329 === x || // LEFT-POINTING ANGLE BRACKET
+ 0x232a === x || // RIGHT-POINTING ANGLE BRACKET
+ // CJK Radicals Supplement .. Enclosed CJK Letters and Months
+ (0x2e80 <= x && x <= 0x3247 && x !== 0x303f) ||
+ // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A
+ 0x3250 <= x && x <= 0x4dbf ||
+ // CJK Unified Ideographs .. Yi Radicals
+ 0x4e00 <= x && x <= 0xa4c6 ||
+ // Hangul Jamo Extended-A
+ 0xa960 <= x && x <= 0xa97c ||
+ // Hangul Syllables
+ 0xac00 <= x && x <= 0xd7a3 ||
+ // CJK Compatibility Ideographs
+ 0xf900 <= x && x <= 0xfaff ||
+ // Vertical Forms
+ 0xfe10 <= x && x <= 0xfe19 ||
+ // CJK Compatibility Forms .. Small Form Variants
+ 0xfe30 <= x && x <= 0xfe6b ||
+ // Halfwidth and Fullwidth Forms
+ 0xff01 <= x && x <= 0xff60 ||
+ 0xffe0 <= x && x <= 0xffe6 ||
+ // Kana Supplement
+ 0x1b000 <= x && x <= 0x1b001 ||
+ // Enclosed Ideographic Supplement
+ 0x1f200 <= x && x <= 0x1f251 ||
+ // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane
+ 0x20000 <= x && x <= 0x3fffd)) {
+ return true;
+ }
+
+ return false;
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/license b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/index.js b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/index.js
new file mode 100644
index 000000000..79be4b9cb
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/index.js
@@ -0,0 +1,4 @@
+'use strict';
+module.exports = Number.isNaN || function (x) {
+ return x !== x;
+};
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/license b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/package.json b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/package.json
new file mode 100644
index 000000000..727b5aa86
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/package.json
@@ -0,0 +1,115 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "number-is-nan@^1.0.0",
+ "scope": null,
+ "escapedName": "number-is-nan",
+ "name": "number-is-nan",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width/node_modules/is-fullwidth-code-point"
+ ],
+ [
+ {
+ "raw": "number-is-nan@^1.0.0",
+ "scope": null,
+ "escapedName": "number-is-nan",
+ "name": "number-is-nan",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point"
+ ]
+ ],
+ "_from": "number-is-nan@^1.0.0",
+ "_id": "number-is-nan@1.0.1",
+ "_inCache": true,
+ "_location": "/update-notifier/boxen/widest-line/string-width/is-fullwidth-code-point/number-is-nan",
+ "_nodeVersion": "4.5.0",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/number-is-nan-1.0.1.tgz_1475212313367_0.9480371843092144"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.15.9",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "number-is-nan@^1.0.0",
+ "scope": null,
+ "escapedName": "number-is-nan",
+ "name": "number-is-nan",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/boxen/widest-line/string-width/is-fullwidth-code-point"
+ ],
+ "_resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "_shasum": "097b602b53422a522c1afb8790318336941a011d",
+ "_shrinkwrap": null,
+ "_spec": "number-is-nan@^1.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/number-is-nan/issues"
+ },
+ "dependencies": {},
+ "description": "ES2015 Number.isNaN() ponyfill",
+ "devDependencies": {
+ "ava": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "097b602b53422a522c1afb8790318336941a011d",
+ "tarball": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "ed9cdac3f428cc929b61bb230da42c87477af4b9",
+ "homepage": "https://github.com/sindresorhus/number-is-nan#readme",
+ "keywords": [
+ "es2015",
+ "ecmascript",
+ "ponyfill",
+ "polyfill",
+ "shim",
+ "number",
+ "is",
+ "nan",
+ "not"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "number-is-nan",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/number-is-nan.git"
+ },
+ "scripts": {
+ "test": "ava"
+ },
+ "version": "1.0.1"
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/readme.md b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/readme.md
new file mode 100644
index 000000000..246350871
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/node_modules/number-is-nan/readme.md
@@ -0,0 +1,28 @@
+# number-is-nan [![Build Status](https://travis-ci.org/sindresorhus/number-is-nan.svg?branch=master)](https://travis-ci.org/sindresorhus/number-is-nan)
+
+> ES2015 [`Number.isNaN()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN) [ponyfill](https://ponyfill.com)
+
+
+## Install
+
+```
+$ npm install --save number-is-nan
+```
+
+
+## Usage
+
+```js
+var numberIsNan = require('number-is-nan');
+
+numberIsNan(NaN);
+//=> true
+
+numberIsNan('unicorn');
+//=> false
+```
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/package.json b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/package.json
new file mode 100644
index 000000000..ed0cf4e05
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/package.json
@@ -0,0 +1,120 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "is-fullwidth-code-point@^1.0.0",
+ "scope": null,
+ "escapedName": "is-fullwidth-code-point",
+ "name": "is-fullwidth-code-point",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/ansi-align/node_modules/string-width"
+ ],
+ [
+ {
+ "raw": "is-fullwidth-code-point@^1.0.0",
+ "scope": null,
+ "escapedName": "is-fullwidth-code-point",
+ "name": "is-fullwidth-code-point",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width"
+ ]
+ ],
+ "_from": "is-fullwidth-code-point@^1.0.0",
+ "_id": "is-fullwidth-code-point@1.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/boxen/widest-line/string-width/is-fullwidth-code-point",
+ "_nodeVersion": "0.12.5",
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.11.2",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "is-fullwidth-code-point@^1.0.0",
+ "scope": null,
+ "escapedName": "is-fullwidth-code-point",
+ "name": "is-fullwidth-code-point",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/boxen/widest-line/string-width"
+ ],
+ "_resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "_shasum": "ef9e31386f031a7f0d643af82fde50c457ef00cb",
+ "_shrinkwrap": null,
+ "_spec": "is-fullwidth-code-point@^1.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/is-fullwidth-code-point/issues"
+ },
+ "dependencies": {
+ "number-is-nan": "^1.0.0"
+ },
+ "description": "Check if the character represented by a given Unicode code point is fullwidth",
+ "devDependencies": {
+ "ava": "0.0.4",
+ "code-point-at": "^1.0.0"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "ef9e31386f031a7f0d643af82fde50c457ef00cb",
+ "tarball": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "f2152d357f41f82785436d428e4f8ede143b7548",
+ "homepage": "https://github.com/sindresorhus/is-fullwidth-code-point",
+ "keywords": [
+ "fullwidth",
+ "full-width",
+ "full",
+ "width",
+ "unicode",
+ "character",
+ "char",
+ "string",
+ "str",
+ "codepoint",
+ "code",
+ "point",
+ "is",
+ "detect",
+ "check"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "is-fullwidth-code-point",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/is-fullwidth-code-point.git"
+ },
+ "scripts": {
+ "test": "node test.js"
+ },
+ "version": "1.0.0"
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/readme.md b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/readme.md
new file mode 100644
index 000000000..4936464b1
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/node_modules/is-fullwidth-code-point/readme.md
@@ -0,0 +1,39 @@
+# is-fullwidth-code-point [![Build Status](https://travis-ci.org/sindresorhus/is-fullwidth-code-point.svg?branch=master)](https://travis-ci.org/sindresorhus/is-fullwidth-code-point)
+
+> Check if the character represented by a given [Unicode code point](https://en.wikipedia.org/wiki/Code_point) is [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms)
+
+
+## Install
+
+```
+$ npm install --save is-fullwidth-code-point
+```
+
+
+## Usage
+
+```js
+var isFullwidthCodePoint = require('is-fullwidth-code-point');
+
+isFullwidthCodePoint('谢'.codePointAt());
+//=> true
+
+isFullwidthCodePoint('a'.codePointAt());
+//=> false
+```
+
+
+## API
+
+### isFullwidthCodePoint(input)
+
+#### input
+
+Type: `number`
+
+[Code point](https://en.wikipedia.org/wiki/Code_point) of a character.
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/package.json b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/package.json
new file mode 100644
index 000000000..8fd708d96
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/package.json
@@ -0,0 +1,123 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "string-width@^1.0.1",
+ "scope": null,
+ "escapedName": "string-width",
+ "name": "string-width",
+ "rawSpec": "^1.0.1",
+ "spec": ">=1.0.1 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line"
+ ]
+ ],
+ "_from": "string-width@>=1.0.1 <2.0.0",
+ "_id": "string-width@1.0.2",
+ "_inCache": true,
+ "_location": "/update-notifier/boxen/widest-line/string-width",
+ "_nodeVersion": "4.4.5",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/string-width-1.0.2.tgz_1471188233009_0.6573935742489994"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.15.5",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "string-width@^1.0.1",
+ "scope": null,
+ "escapedName": "string-width",
+ "name": "string-width",
+ "rawSpec": "^1.0.1",
+ "spec": ">=1.0.1 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/boxen/widest-line"
+ ],
+ "_resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "_shasum": "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3",
+ "_shrinkwrap": null,
+ "_spec": "string-width@^1.0.1",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/string-width/issues"
+ },
+ "dependencies": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ },
+ "description": "Get the visual width of a string - the number of columns required to display it",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3",
+ "tarball": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "282cf3d53918a92cc3ee0778dcf938039bcbc47b",
+ "homepage": "https://github.com/sindresorhus/string-width#readme",
+ "keywords": [
+ "string",
+ "str",
+ "character",
+ "char",
+ "unicode",
+ "width",
+ "visual",
+ "column",
+ "columns",
+ "fullwidth",
+ "full-width",
+ "full",
+ "ansi",
+ "escape",
+ "codes",
+ "cli",
+ "command-line",
+ "terminal",
+ "console",
+ "cjk",
+ "chinese",
+ "japanese",
+ "korean",
+ "fixed-width"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "string-width",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/string-width.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "1.0.2"
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/readme.md b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/readme.md
new file mode 100644
index 000000000..1ab42c935
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/node_modules/string-width/readme.md
@@ -0,0 +1,42 @@
+# string-width [![Build Status](https://travis-ci.org/sindresorhus/string-width.svg?branch=master)](https://travis-ci.org/sindresorhus/string-width)
+
+> Get the visual width of a string - the number of columns required to display it
+
+Some Unicode characters are [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms) and use double the normal width. [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) are stripped and doesn't affect the width.
+
+Useful to be able to measure the actual width of command-line output.
+
+
+## Install
+
+```
+$ npm install --save string-width
+```
+
+
+## Usage
+
+```js
+const stringWidth = require('string-width');
+
+stringWidth('古');
+//=> 2
+
+stringWidth('\u001b[1m古\u001b[22m');
+//=> 2
+
+stringWidth('a');
+//=> 1
+```
+
+
+## Related
+
+- [string-width-cli](https://github.com/sindresorhus/string-width-cli) - CLI for this module
+- [string-length](https://github.com/sindresorhus/string-length) - Get the real length of a string
+- [widest-line](https://github.com/sindresorhus/widest-line) - Get the visual width of the widest line in a string
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/package.json b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/package.json
new file mode 100644
index 000000000..1196991ed
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/package.json
@@ -0,0 +1,119 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "widest-line@^1.0.0",
+ "scope": null,
+ "escapedName": "widest-line",
+ "name": "widest-line",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen"
+ ]
+ ],
+ "_from": "widest-line@>=1.0.0 <2.0.0",
+ "_id": "widest-line@1.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/boxen/widest-line",
+ "_nodeVersion": "4.2.1",
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.14.7",
+ "_phantomChildren": {
+ "strip-ansi": "3.0.1"
+ },
+ "_requested": {
+ "raw": "widest-line@^1.0.0",
+ "scope": null,
+ "escapedName": "widest-line",
+ "name": "widest-line",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/boxen"
+ ],
+ "_resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz",
+ "_shasum": "0c09c85c2a94683d0d7eaf8ee097d564bf0e105c",
+ "_shrinkwrap": null,
+ "_spec": "widest-line@^1.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/widest-line/issues"
+ },
+ "dependencies": {
+ "string-width": "^1.0.1"
+ },
+ "description": "Get the visual width of the widest line in a string - the number of columns required to display it",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "0c09c85c2a94683d0d7eaf8ee097d564bf0e105c",
+ "tarball": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "8193ed602f6c06939099e574b92828edb896bb8e",
+ "homepage": "https://github.com/sindresorhus/widest-line",
+ "keywords": [
+ "string",
+ "str",
+ "character",
+ "char",
+ "unicode",
+ "width",
+ "visual",
+ "column",
+ "columns",
+ "fullwidth",
+ "full-width",
+ "full",
+ "ansi",
+ "escape",
+ "codes",
+ "cli",
+ "command-line",
+ "terminal",
+ "console",
+ "cjk",
+ "chinese",
+ "japanese",
+ "korean",
+ "fixed-width"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "widest-line",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/widest-line.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "1.0.0"
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/readme.md b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/readme.md
new file mode 100644
index 000000000..3a2e305ed
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/node_modules/widest-line/readme.md
@@ -0,0 +1,34 @@
+# widest-line [![Build Status](https://travis-ci.org/sindresorhus/widest-line.svg?branch=master)](https://travis-ci.org/sindresorhus/widest-line)
+
+> Get the visual width of the widest line in a string - the number of columns required to display it
+
+Some Unicode characters are [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms) and use double the normal width. [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code) are stripped and doesn't affect the width.
+
+Useful to be able to know the maximum width a string will take up in the terminal.
+
+
+## Install
+
+```
+$ npm install --save widest-line
+```
+
+
+## Usage
+
+```js
+const widestLine = require('widest-line');
+
+widestLine('古\n\u001b[1m@\u001b[22m');
+//=> 2
+```
+
+
+## Related
+
+- [string-width](https://github.com/sindresorhus/string-width) - Get the visual width of a string
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/boxen/package.json b/node_modules/update-notifier/node_modules/boxen/package.json
new file mode 100644
index 000000000..5a4839881
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/package.json
@@ -0,0 +1,119 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "boxen@^1.0.0",
+ "scope": null,
+ "escapedName": "boxen",
+ "name": "boxen",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier"
+ ]
+ ],
+ "_from": "boxen@>=1.0.0 <2.0.0",
+ "_id": "boxen@1.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/boxen",
+ "_nodeVersion": "4.6.2",
+ "_npmOperationalInternal": {
+ "host": "packages-18-east.internal.npmjs.com",
+ "tmp": "tmp/boxen-1.0.0.tgz_1484299763976_0.962533789454028"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.15.11",
+ "_phantomChildren": {
+ "strip-ansi": "3.0.1",
+ "which": "1.2.12"
+ },
+ "_requested": {
+ "raw": "boxen@^1.0.0",
+ "scope": null,
+ "escapedName": "boxen",
+ "name": "boxen",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier"
+ ],
+ "_resolved": "https://registry.npmjs.org/boxen/-/boxen-1.0.0.tgz",
+ "_shasum": "b2694baf1f605f708ff0177c12193b22f29aaaab",
+ "_shrinkwrap": null,
+ "_spec": "boxen@^1.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/boxen/issues"
+ },
+ "dependencies": {
+ "ansi-align": "^1.1.0",
+ "camelcase": "^4.0.0",
+ "chalk": "^1.1.1",
+ "cli-boxes": "^1.0.0",
+ "string-width": "^2.0.0",
+ "term-size": "^0.1.0",
+ "widest-line": "^1.0.0"
+ },
+ "description": "Create boxes in the terminal",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "b2694baf1f605f708ff0177c12193b22f29aaaab",
+ "tarball": "https://registry.npmjs.org/boxen/-/boxen-1.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "e73c06d7eea87df51c0d3cd9ec0c574586606d7a",
+ "homepage": "https://github.com/sindresorhus/boxen#readme",
+ "keywords": [
+ "cli",
+ "box",
+ "boxes",
+ "terminal",
+ "term",
+ "console",
+ "ascii",
+ "unicode",
+ "border",
+ "text"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "boxen",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/boxen.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "1.0.0",
+ "xo": {
+ "esnext": true
+ }
+}
diff --git a/node_modules/update-notifier/node_modules/boxen/readme.md b/node_modules/update-notifier/node_modules/boxen/readme.md
new file mode 100644
index 000000000..abb78bff1
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/boxen/readme.md
@@ -0,0 +1,175 @@
+# <img src="screenshot.png" width="400" alt="boxen">
+
+> Create boxes in the terminal
+
+[![Build Status](https://travis-ci.org/sindresorhus/boxen.svg?branch=master)](https://travis-ci.org/sindresorhus/boxen)
+
+
+## Install
+
+```
+$ npm install --save boxen
+```
+
+
+## Usage
+
+```js
+const boxen = require('boxen');
+
+console.log(boxen('unicorn', {padding: 1}));
+/*
+┌─────────────┐
+│ │
+│ unicorn │
+│ │
+└─────────────┘
+*/
+
+console.log(boxen('unicorn', {padding: 1, margin: 1, borderStyle: 'double'}));
+/*
+
+ ╔═════════════╗
+ ║ ║
+ ║ unicorn ║
+ ║ ║
+ ╚═════════════╝
+
+*/
+```
+
+
+## API
+
+### boxen(input, [options])
+
+#### input
+
+Type: `string`
+
+Text inside the box.
+
+#### options
+
+##### borderColor
+
+Type: `string`<br>
+Values: `black` `red` `green` `yellow` `blue` `magenta` `cyan` `white` `gray`
+
+Color of the box border.
+
+##### borderStyle
+
+Type: `string` `object`<br>
+Default: `single`<br>
+Values:
+- `single`
+```
+┌───┐
+│foo│
+└───┘
+```
+- `double`
+```
+╔═══╗
+║foo║
+╚═══╝
+```
+- `round` (`single` sides with round corners)
+```
+╭───╮
+│foo│
+╰───╯
+```
+- `single-double` (`single` on top and bottom, `double` on right and left)
+```
+╓───╖
+║foo║
+╙───╜
+```
+- `double-single` (`double` on top and bottom, `single` on right and left)
+```
+╒═══╕
+│foo│
+╘═══╛
+```
+- `classic`
+```
++---+
+|foo|
++---+
+```
+
+Style of the box border.
+
+Can be any of the above predefined styles or an object with the following keys:
+
+```js
+{
+ topLeft: '+',
+ topRight: '+',
+ bottomLeft: '+',
+ bottomRight: '+',
+ horizontal: '-',
+ vertical: '|'
+}
+```
+
+##### dimBorder
+
+Type: `boolean`<br>
+Default: `false`
+
+Reduce opacity of the border.
+
+##### padding
+
+Type: `number` `object`<br>
+Default: `0`
+
+Space between the text and box border.
+
+Accepts a number or an object with any of the `top`, `right`, `bottom`, `left` properties. When a number is specified, the left/right padding is 3 times the top/bottom to make it look nice.
+
+##### margin
+
+Type: `number` `object`<br>
+Default: `0`
+
+Space around the box.
+
+Accepts a number or an object with any of the `top`, `right`, `bottom`, `left` properties. When a number is specified, the left/right margin is 3 times the top/bottom to make it look nice.
+
+##### float
+
+Type: `string`<br>
+Values: `right` `center` `left`<br>
+Default: `left`
+
+Float the box on the available terminal screen space.
+
+##### backgroundColor
+
+Type: `string`<br>
+Values: `black` `red` `green` `yellow` `blue` `magenta` `cyan` `white`
+
+Color of the background.
+
+##### align
+
+Type: `string`<br>
+Default: `left`<br>
+Values: `left` `center` `right`
+
+Align the text in the box based on the widest line.
+
+
+## Related
+
+- [boxen-cli](https://github.com/sindresorhus/boxen-cli) - CLI for this module
+- [cli-boxes](https://github.com/sindresorhus/cli-boxes) - Boxes for use in the terminal
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/chalk/index.js b/node_modules/update-notifier/node_modules/chalk/index.js
new file mode 100644
index 000000000..2d85a9174
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/chalk/index.js
@@ -0,0 +1,116 @@
+'use strict';
+var escapeStringRegexp = require('escape-string-regexp');
+var ansiStyles = require('ansi-styles');
+var stripAnsi = require('strip-ansi');
+var hasAnsi = require('has-ansi');
+var supportsColor = require('supports-color');
+var defineProps = Object.defineProperties;
+var isSimpleWindowsTerm = process.platform === 'win32' && !/^xterm/i.test(process.env.TERM);
+
+function Chalk(options) {
+ // detect mode if not set manually
+ this.enabled = !options || options.enabled === undefined ? supportsColor : options.enabled;
+}
+
+// use bright blue on Windows as the normal blue color is illegible
+if (isSimpleWindowsTerm) {
+ ansiStyles.blue.open = '\u001b[94m';
+}
+
+var styles = (function () {
+ var ret = {};
+
+ Object.keys(ansiStyles).forEach(function (key) {
+ ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');
+
+ ret[key] = {
+ get: function () {
+ return build.call(this, this._styles.concat(key));
+ }
+ };
+ });
+
+ return ret;
+})();
+
+var proto = defineProps(function chalk() {}, styles);
+
+function build(_styles) {
+ var builder = function () {
+ return applyStyle.apply(builder, arguments);
+ };
+
+ builder._styles = _styles;
+ builder.enabled = this.enabled;
+ // __proto__ is used because we must return a function, but there is
+ // no way to create a function with a different prototype.
+ /* eslint-disable no-proto */
+ builder.__proto__ = proto;
+
+ return builder;
+}
+
+function applyStyle() {
+ // support varags, but simply cast to string in case there's only one arg
+ var args = arguments;
+ var argsLen = args.length;
+ var str = argsLen !== 0 && String(arguments[0]);
+
+ if (argsLen > 1) {
+ // don't slice `arguments`, it prevents v8 optimizations
+ for (var a = 1; a < argsLen; a++) {
+ str += ' ' + args[a];
+ }
+ }
+
+ if (!this.enabled || !str) {
+ return str;
+ }
+
+ var nestedStyles = this._styles;
+ var i = nestedStyles.length;
+
+ // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe,
+ // see https://github.com/chalk/chalk/issues/58
+ // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop.
+ var originalDim = ansiStyles.dim.open;
+ if (isSimpleWindowsTerm && (nestedStyles.indexOf('gray') !== -1 || nestedStyles.indexOf('grey') !== -1)) {
+ ansiStyles.dim.open = '';
+ }
+
+ while (i--) {
+ var code = ansiStyles[nestedStyles[i]];
+
+ // Replace any instances already present with a re-opening code
+ // otherwise only the part of the string until said closing code
+ // will be colored, and the rest will simply be 'plain'.
+ str = code.open + str.replace(code.closeRe, code.open) + code.close;
+ }
+
+ // Reset the original 'dim' if we changed it to work around the Windows dimmed gray issue.
+ ansiStyles.dim.open = originalDim;
+
+ return str;
+}
+
+function init() {
+ var ret = {};
+
+ Object.keys(styles).forEach(function (name) {
+ ret[name] = {
+ get: function () {
+ return build.call(this, [name]);
+ }
+ };
+ });
+
+ return ret;
+}
+
+defineProps(Chalk.prototype, init());
+
+module.exports = new Chalk();
+module.exports.styles = ansiStyles;
+module.exports.hasColor = hasAnsi;
+module.exports.stripColor = stripAnsi;
+module.exports.supportsColor = supportsColor;
diff --git a/node_modules/update-notifier/node_modules/chalk/license b/node_modules/update-notifier/node_modules/chalk/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/chalk/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/chalk/node_modules/ansi-styles/index.js b/node_modules/update-notifier/node_modules/chalk/node_modules/ansi-styles/index.js
new file mode 100644
index 000000000..78945278f
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/chalk/node_modules/ansi-styles/index.js
@@ -0,0 +1,65 @@
+'use strict';
+
+function assembleStyles () {
+ var styles = {
+ modifiers: {
+ reset: [0, 0],
+ bold: [1, 22], // 21 isn't widely supported and 22 does the same thing
+ dim: [2, 22],
+ italic: [3, 23],
+ underline: [4, 24],
+ inverse: [7, 27],
+ hidden: [8, 28],
+ strikethrough: [9, 29]
+ },
+ colors: {
+ black: [30, 39],
+ red: [31, 39],
+ green: [32, 39],
+ yellow: [33, 39],
+ blue: [34, 39],
+ magenta: [35, 39],
+ cyan: [36, 39],
+ white: [37, 39],
+ gray: [90, 39]
+ },
+ bgColors: {
+ bgBlack: [40, 49],
+ bgRed: [41, 49],
+ bgGreen: [42, 49],
+ bgYellow: [43, 49],
+ bgBlue: [44, 49],
+ bgMagenta: [45, 49],
+ bgCyan: [46, 49],
+ bgWhite: [47, 49]
+ }
+ };
+
+ // fix humans
+ styles.colors.grey = styles.colors.gray;
+
+ Object.keys(styles).forEach(function (groupName) {
+ var group = styles[groupName];
+
+ Object.keys(group).forEach(function (styleName) {
+ var style = group[styleName];
+
+ styles[styleName] = group[styleName] = {
+ open: '\u001b[' + style[0] + 'm',
+ close: '\u001b[' + style[1] + 'm'
+ };
+ });
+
+ Object.defineProperty(styles, groupName, {
+ value: group,
+ enumerable: false
+ });
+ });
+
+ return styles;
+}
+
+Object.defineProperty(module, 'exports', {
+ enumerable: true,
+ get: assembleStyles
+});
diff --git a/node_modules/update-notifier/node_modules/chalk/node_modules/ansi-styles/license b/node_modules/update-notifier/node_modules/chalk/node_modules/ansi-styles/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/chalk/node_modules/ansi-styles/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/chalk/node_modules/ansi-styles/package.json b/node_modules/update-notifier/node_modules/chalk/node_modules/ansi-styles/package.json
new file mode 100644
index 000000000..6441b67c8
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/chalk/node_modules/ansi-styles/package.json
@@ -0,0 +1,114 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "ansi-styles@^2.2.1",
+ "scope": null,
+ "escapedName": "ansi-styles",
+ "name": "ansi-styles",
+ "rawSpec": "^2.2.1",
+ "spec": ">=2.2.1 <3.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/chalk"
+ ]
+ ],
+ "_from": "ansi-styles@>=2.2.1 <3.0.0",
+ "_id": "ansi-styles@2.2.1",
+ "_inCache": true,
+ "_location": "/update-notifier/chalk/ansi-styles",
+ "_nodeVersion": "4.3.0",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/ansi-styles-2.2.1.tgz_1459197317833_0.9694824463222176"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "3.8.3",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "ansi-styles@^2.2.1",
+ "scope": null,
+ "escapedName": "ansi-styles",
+ "name": "ansi-styles",
+ "rawSpec": "^2.2.1",
+ "spec": ">=2.2.1 <3.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/chalk"
+ ],
+ "_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "_shasum": "b432dd3358b634cf75e1e4664368240533c1ddbe",
+ "_shrinkwrap": null,
+ "_spec": "ansi-styles@^2.2.1",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/chalk",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/chalk/ansi-styles/issues"
+ },
+ "dependencies": {},
+ "description": "ANSI escape codes for styling strings in the terminal",
+ "devDependencies": {
+ "mocha": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "b432dd3358b634cf75e1e4664368240533c1ddbe",
+ "tarball": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "95c59b23be760108b6530ca1c89477c21b258032",
+ "homepage": "https://github.com/chalk/ansi-styles#readme",
+ "keywords": [
+ "ansi",
+ "styles",
+ "color",
+ "colour",
+ "colors",
+ "terminal",
+ "console",
+ "cli",
+ "string",
+ "tty",
+ "escape",
+ "formatting",
+ "rgb",
+ "256",
+ "shell",
+ "xterm",
+ "log",
+ "logging",
+ "command-line",
+ "text"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "ansi-styles",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/chalk/ansi-styles.git"
+ },
+ "scripts": {
+ "test": "mocha"
+ },
+ "version": "2.2.1"
+}
diff --git a/node_modules/update-notifier/node_modules/chalk/node_modules/ansi-styles/readme.md b/node_modules/update-notifier/node_modules/chalk/node_modules/ansi-styles/readme.md
new file mode 100644
index 000000000..3f933f616
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/chalk/node_modules/ansi-styles/readme.md
@@ -0,0 +1,86 @@
+# ansi-styles [![Build Status](https://travis-ci.org/chalk/ansi-styles.svg?branch=master)](https://travis-ci.org/chalk/ansi-styles)
+
+> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal
+
+You probably want the higher-level [chalk](https://github.com/chalk/chalk) module for styling your strings.
+
+![](screenshot.png)
+
+
+## Install
+
+```
+$ npm install --save ansi-styles
+```
+
+
+## Usage
+
+```js
+var ansi = require('ansi-styles');
+
+console.log(ansi.green.open + 'Hello world!' + ansi.green.close);
+```
+
+
+## API
+
+Each style has an `open` and `close` property.
+
+
+## Styles
+
+### Modifiers
+
+- `reset`
+- `bold`
+- `dim`
+- `italic` *(not widely supported)*
+- `underline`
+- `inverse`
+- `hidden`
+- `strikethrough` *(not widely supported)*
+
+### Colors
+
+- `black`
+- `red`
+- `green`
+- `yellow`
+- `blue`
+- `magenta`
+- `cyan`
+- `white`
+- `gray`
+
+### Background colors
+
+- `bgBlack`
+- `bgRed`
+- `bgGreen`
+- `bgYellow`
+- `bgBlue`
+- `bgMagenta`
+- `bgCyan`
+- `bgWhite`
+
+
+## Advanced usage
+
+By default you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module.
+
+- `ansi.modifiers`
+- `ansi.colors`
+- `ansi.bgColors`
+
+
+###### Example
+
+```js
+console.log(ansi.colors.green.open);
+```
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/chalk/node_modules/escape-string-regexp/index.js b/node_modules/update-notifier/node_modules/chalk/node_modules/escape-string-regexp/index.js
new file mode 100644
index 000000000..7834bf9b2
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/chalk/node_modules/escape-string-regexp/index.js
@@ -0,0 +1,11 @@
+'use strict';
+
+var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
+
+module.exports = function (str) {
+ if (typeof str !== 'string') {
+ throw new TypeError('Expected a string');
+ }
+
+ return str.replace(matchOperatorsRe, '\\$&');
+};
diff --git a/node_modules/update-notifier/node_modules/chalk/node_modules/escape-string-regexp/license b/node_modules/update-notifier/node_modules/chalk/node_modules/escape-string-regexp/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/chalk/node_modules/escape-string-regexp/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/chalk/node_modules/escape-string-regexp/package.json b/node_modules/update-notifier/node_modules/chalk/node_modules/escape-string-regexp/package.json
new file mode 100644
index 000000000..a6c0270f1
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/chalk/node_modules/escape-string-regexp/package.json
@@ -0,0 +1,109 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "escape-string-regexp@^1.0.2",
+ "scope": null,
+ "escapedName": "escape-string-regexp",
+ "name": "escape-string-regexp",
+ "rawSpec": "^1.0.2",
+ "spec": ">=1.0.2 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/chalk"
+ ]
+ ],
+ "_from": "escape-string-regexp@>=1.0.2 <2.0.0",
+ "_id": "escape-string-regexp@1.0.5",
+ "_inCache": true,
+ "_location": "/update-notifier/chalk/escape-string-regexp",
+ "_nodeVersion": "4.2.6",
+ "_npmOperationalInternal": {
+ "host": "packages-9-west.internal.npmjs.com",
+ "tmp": "tmp/escape-string-regexp-1.0.5.tgz_1456059312074_0.7245344955008477"
+ },
+ "_npmUser": {
+ "name": "jbnicolai",
+ "email": "jappelman@xebia.com"
+ },
+ "_npmVersion": "2.14.12",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "escape-string-regexp@^1.0.2",
+ "scope": null,
+ "escapedName": "escape-string-regexp",
+ "name": "escape-string-regexp",
+ "rawSpec": "^1.0.2",
+ "spec": ">=1.0.2 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/chalk"
+ ],
+ "_resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "_shasum": "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4",
+ "_shrinkwrap": null,
+ "_spec": "escape-string-regexp@^1.0.2",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/chalk",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/escape-string-regexp/issues"
+ },
+ "dependencies": {},
+ "description": "Escape RegExp special characters",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4",
+ "tarball": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "db124a3e1aae9d692c4899e42a5c6c3e329eaa20",
+ "homepage": "https://github.com/sindresorhus/escape-string-regexp",
+ "keywords": [
+ "escape",
+ "regex",
+ "regexp",
+ "re",
+ "regular",
+ "expression",
+ "string",
+ "str",
+ "special",
+ "characters"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ {
+ "name": "jbnicolai",
+ "email": "jappelman@xebia.com"
+ }
+ ],
+ "name": "escape-string-regexp",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/escape-string-regexp.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "1.0.5"
+}
diff --git a/node_modules/update-notifier/node_modules/chalk/node_modules/escape-string-regexp/readme.md b/node_modules/update-notifier/node_modules/chalk/node_modules/escape-string-regexp/readme.md
new file mode 100644
index 000000000..87ac82d5e
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/chalk/node_modules/escape-string-regexp/readme.md
@@ -0,0 +1,27 @@
+# escape-string-regexp [![Build Status](https://travis-ci.org/sindresorhus/escape-string-regexp.svg?branch=master)](https://travis-ci.org/sindresorhus/escape-string-regexp)
+
+> Escape RegExp special characters
+
+
+## Install
+
+```
+$ npm install --save escape-string-regexp
+```
+
+
+## Usage
+
+```js
+const escapeStringRegexp = require('escape-string-regexp');
+
+const escapedString = escapeStringRegexp('how much $ for a unicorn?');
+//=> 'how much \$ for a unicorn\?'
+
+new RegExp(escapedString);
+```
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/chalk/node_modules/has-ansi/index.js b/node_modules/update-notifier/node_modules/chalk/node_modules/has-ansi/index.js
new file mode 100644
index 000000000..98fae0676
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/chalk/node_modules/has-ansi/index.js
@@ -0,0 +1,4 @@
+'use strict';
+var ansiRegex = require('ansi-regex');
+var re = new RegExp(ansiRegex().source); // remove the `g` flag
+module.exports = re.test.bind(re);
diff --git a/node_modules/update-notifier/node_modules/chalk/node_modules/has-ansi/license b/node_modules/update-notifier/node_modules/chalk/node_modules/has-ansi/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/chalk/node_modules/has-ansi/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/chalk/node_modules/has-ansi/package.json b/node_modules/update-notifier/node_modules/chalk/node_modules/has-ansi/package.json
new file mode 100644
index 000000000..5a0ee7774
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/chalk/node_modules/has-ansi/package.json
@@ -0,0 +1,118 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "has-ansi@^2.0.0",
+ "scope": null,
+ "escapedName": "has-ansi",
+ "name": "has-ansi",
+ "rawSpec": "^2.0.0",
+ "spec": ">=2.0.0 <3.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/chalk"
+ ]
+ ],
+ "_from": "has-ansi@>=2.0.0 <3.0.0",
+ "_id": "has-ansi@2.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/chalk/has-ansi",
+ "_nodeVersion": "0.12.5",
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.11.2",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "has-ansi@^2.0.0",
+ "scope": null,
+ "escapedName": "has-ansi",
+ "name": "has-ansi",
+ "rawSpec": "^2.0.0",
+ "spec": ">=2.0.0 <3.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/chalk"
+ ],
+ "_resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "_shasum": "34f5049ce1ecdf2b0649af3ef24e45ed35416d91",
+ "_shrinkwrap": null,
+ "_spec": "has-ansi@^2.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/chalk",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/has-ansi/issues"
+ },
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "description": "Check if a string has ANSI escape codes",
+ "devDependencies": {
+ "ava": "0.0.4"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "34f5049ce1ecdf2b0649af3ef24e45ed35416d91",
+ "tarball": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "0722275e1bef139fcd09137da6e5550c3cd368b9",
+ "homepage": "https://github.com/sindresorhus/has-ansi",
+ "keywords": [
+ "ansi",
+ "styles",
+ "color",
+ "colour",
+ "colors",
+ "terminal",
+ "console",
+ "string",
+ "tty",
+ "escape",
+ "shell",
+ "xterm",
+ "command-line",
+ "text",
+ "regex",
+ "regexp",
+ "re",
+ "match",
+ "test",
+ "find",
+ "pattern",
+ "has"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ {
+ "name": "jbnicolai",
+ "email": "jappelman@xebia.com"
+ }
+ ],
+ "name": "has-ansi",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/has-ansi.git"
+ },
+ "scripts": {
+ "test": "node test.js"
+ },
+ "version": "2.0.0"
+}
diff --git a/node_modules/update-notifier/node_modules/chalk/node_modules/has-ansi/readme.md b/node_modules/update-notifier/node_modules/chalk/node_modules/has-ansi/readme.md
new file mode 100644
index 000000000..02bc7c230
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/chalk/node_modules/has-ansi/readme.md
@@ -0,0 +1,36 @@
+# has-ansi [![Build Status](https://travis-ci.org/sindresorhus/has-ansi.svg?branch=master)](https://travis-ci.org/sindresorhus/has-ansi)
+
+> Check if a string has [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code)
+
+
+## Install
+
+```
+$ npm install --save has-ansi
+```
+
+
+## Usage
+
+```js
+var hasAnsi = require('has-ansi');
+
+hasAnsi('\u001b[4mcake\u001b[0m');
+//=> true
+
+hasAnsi('cake');
+//=> false
+```
+
+
+## Related
+
+- [has-ansi-cli](https://github.com/sindresorhus/has-ansi-cli) - CLI for this module
+- [strip-ansi](https://github.com/sindresorhus/strip-ansi) - Strip ANSI escape codes
+- [ansi-regex](https://github.com/sindresorhus/ansi-regex) - Regular expression for matching ANSI escape codes
+- [chalk](https://github.com/sindresorhus/chalk) - Terminal string styling done right
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/chalk/node_modules/supports-color/index.js b/node_modules/update-notifier/node_modules/chalk/node_modules/supports-color/index.js
new file mode 100644
index 000000000..4346e272e
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/chalk/node_modules/supports-color/index.js
@@ -0,0 +1,50 @@
+'use strict';
+var argv = process.argv;
+
+var terminator = argv.indexOf('--');
+var hasFlag = function (flag) {
+ flag = '--' + flag;
+ var pos = argv.indexOf(flag);
+ return pos !== -1 && (terminator !== -1 ? pos < terminator : true);
+};
+
+module.exports = (function () {
+ if ('FORCE_COLOR' in process.env) {
+ return true;
+ }
+
+ if (hasFlag('no-color') ||
+ hasFlag('no-colors') ||
+ hasFlag('color=false')) {
+ return false;
+ }
+
+ if (hasFlag('color') ||
+ hasFlag('colors') ||
+ hasFlag('color=true') ||
+ hasFlag('color=always')) {
+ return true;
+ }
+
+ if (process.stdout && !process.stdout.isTTY) {
+ return false;
+ }
+
+ if (process.platform === 'win32') {
+ return true;
+ }
+
+ if ('COLORTERM' in process.env) {
+ return true;
+ }
+
+ if (process.env.TERM === 'dumb') {
+ return false;
+ }
+
+ if (/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(process.env.TERM)) {
+ return true;
+ }
+
+ return false;
+})();
diff --git a/node_modules/update-notifier/node_modules/chalk/node_modules/supports-color/license b/node_modules/update-notifier/node_modules/chalk/node_modules/supports-color/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/chalk/node_modules/supports-color/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/chalk/node_modules/supports-color/package.json b/node_modules/update-notifier/node_modules/chalk/node_modules/supports-color/package.json
new file mode 100644
index 000000000..882f5842d
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/chalk/node_modules/supports-color/package.json
@@ -0,0 +1,113 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "supports-color@^2.0.0",
+ "scope": null,
+ "escapedName": "supports-color",
+ "name": "supports-color",
+ "rawSpec": "^2.0.0",
+ "spec": ">=2.0.0 <3.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/chalk"
+ ]
+ ],
+ "_from": "supports-color@>=2.0.0 <3.0.0",
+ "_id": "supports-color@2.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/chalk/supports-color",
+ "_nodeVersion": "0.12.5",
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.11.2",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "supports-color@^2.0.0",
+ "scope": null,
+ "escapedName": "supports-color",
+ "name": "supports-color",
+ "rawSpec": "^2.0.0",
+ "spec": ">=2.0.0 <3.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/chalk"
+ ],
+ "_resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "_shasum": "535d045ce6b6363fa40117084629995e9df324c7",
+ "_shrinkwrap": null,
+ "_spec": "supports-color@^2.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/chalk",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/chalk/supports-color/issues"
+ },
+ "dependencies": {},
+ "description": "Detect whether a terminal supports color",
+ "devDependencies": {
+ "mocha": "*",
+ "require-uncached": "^1.0.2"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "535d045ce6b6363fa40117084629995e9df324c7",
+ "tarball": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "8400d98ade32b2adffd50902c06d9e725a5c6588",
+ "homepage": "https://github.com/chalk/supports-color",
+ "keywords": [
+ "color",
+ "colour",
+ "colors",
+ "terminal",
+ "console",
+ "cli",
+ "ansi",
+ "styles",
+ "tty",
+ "rgb",
+ "256",
+ "shell",
+ "xterm",
+ "command-line",
+ "support",
+ "supports",
+ "capability",
+ "detect"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ {
+ "name": "jbnicolai",
+ "email": "jappelman@xebia.com"
+ }
+ ],
+ "name": "supports-color",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/chalk/supports-color.git"
+ },
+ "scripts": {
+ "test": "mocha"
+ },
+ "version": "2.0.0"
+}
diff --git a/node_modules/update-notifier/node_modules/chalk/node_modules/supports-color/readme.md b/node_modules/update-notifier/node_modules/chalk/node_modules/supports-color/readme.md
new file mode 100644
index 000000000..b4761f1ec
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/chalk/node_modules/supports-color/readme.md
@@ -0,0 +1,36 @@
+# supports-color [![Build Status](https://travis-ci.org/chalk/supports-color.svg?branch=master)](https://travis-ci.org/chalk/supports-color)
+
+> Detect whether a terminal supports color
+
+
+## Install
+
+```
+$ npm install --save supports-color
+```
+
+
+## Usage
+
+```js
+var supportsColor = require('supports-color');
+
+if (supportsColor) {
+ console.log('Terminal supports color');
+}
+```
+
+It obeys the `--color` and `--no-color` CLI flags.
+
+For situations where using `--color` is not possible, add an environment variable `FORCE_COLOR` with any value to force color. Trumps `--no-color`.
+
+
+## Related
+
+- [supports-color-cli](https://github.com/chalk/supports-color-cli) - CLI for this module
+- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/chalk/package.json b/node_modules/update-notifier/node_modules/chalk/package.json
new file mode 100644
index 000000000..227e0138c
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/chalk/package.json
@@ -0,0 +1,143 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "chalk@^1.0.0",
+ "scope": null,
+ "escapedName": "chalk",
+ "name": "chalk",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier"
+ ]
+ ],
+ "_from": "chalk@>=1.0.0 <2.0.0",
+ "_id": "chalk@1.1.3",
+ "_inCache": true,
+ "_location": "/update-notifier/chalk",
+ "_nodeVersion": "0.10.32",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/chalk-1.1.3.tgz_1459210604109_0.3892582862172276"
+ },
+ "_npmUser": {
+ "name": "qix",
+ "email": "i.am.qix@gmail.com"
+ },
+ "_npmVersion": "2.14.2",
+ "_phantomChildren": {
+ "ansi-regex": "2.1.1"
+ },
+ "_requested": {
+ "raw": "chalk@^1.0.0",
+ "scope": null,
+ "escapedName": "chalk",
+ "name": "chalk",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier",
+ "/update-notifier/boxen"
+ ],
+ "_resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "_shasum": "a8115c55e4a702fe4d150abd3872822a7e09fc98",
+ "_shrinkwrap": null,
+ "_spec": "chalk@^1.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier",
+ "bugs": {
+ "url": "https://github.com/chalk/chalk/issues"
+ },
+ "dependencies": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ },
+ "description": "Terminal string styling done right. Much color.",
+ "devDependencies": {
+ "coveralls": "^2.11.2",
+ "matcha": "^0.6.0",
+ "mocha": "*",
+ "nyc": "^3.0.0",
+ "require-uncached": "^1.0.2",
+ "resolve-from": "^1.0.0",
+ "semver": "^4.3.3",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "a8115c55e4a702fe4d150abd3872822a7e09fc98",
+ "tarball": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "0d8d8c204eb87a4038219131ad4d8369c9f59d24",
+ "homepage": "https://github.com/chalk/chalk#readme",
+ "keywords": [
+ "color",
+ "colour",
+ "colors",
+ "terminal",
+ "console",
+ "cli",
+ "string",
+ "str",
+ "ansi",
+ "style",
+ "styles",
+ "tty",
+ "formatting",
+ "rgb",
+ "256",
+ "shell",
+ "xterm",
+ "log",
+ "logging",
+ "command-line",
+ "text"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "qix",
+ "email": "i.am.qix@gmail.com"
+ },
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ {
+ "name": "unicorn",
+ "email": "sindresorhus+unicorn@gmail.com"
+ }
+ ],
+ "name": "chalk",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/chalk/chalk.git"
+ },
+ "scripts": {
+ "bench": "matcha benchmark.js",
+ "coverage": "nyc npm test && nyc report",
+ "coveralls": "nyc npm test && nyc report --reporter=text-lcov | coveralls",
+ "test": "xo && mocha"
+ },
+ "version": "1.1.3",
+ "xo": {
+ "envs": [
+ "node",
+ "mocha"
+ ]
+ }
+}
diff --git a/node_modules/update-notifier/node_modules/chalk/readme.md b/node_modules/update-notifier/node_modules/chalk/readme.md
new file mode 100644
index 000000000..5cf111e35
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/chalk/readme.md
@@ -0,0 +1,213 @@
+<h1 align="center">
+ <br>
+ <br>
+ <img width="360" src="https://cdn.rawgit.com/chalk/chalk/19935d6484811c5e468817f846b7b3d417d7bf4a/logo.svg" alt="chalk">
+ <br>
+ <br>
+ <br>
+</h1>
+
+> Terminal string styling done right
+
+[![Build Status](https://travis-ci.org/chalk/chalk.svg?branch=master)](https://travis-ci.org/chalk/chalk)
+[![Coverage Status](https://coveralls.io/repos/chalk/chalk/badge.svg?branch=master)](https://coveralls.io/r/chalk/chalk?branch=master)
+[![](http://img.shields.io/badge/unicorn-approved-ff69b4.svg)](https://www.youtube.com/watch?v=9auOCbH5Ns4)
+
+
+[colors.js](https://github.com/Marak/colors.js) used to be the most popular string styling module, but it has serious deficiencies like extending `String.prototype` which causes all kinds of [problems](https://github.com/yeoman/yo/issues/68). Although there are other ones, they either do too much or not enough.
+
+**Chalk is a clean and focused alternative.**
+
+![](https://github.com/chalk/ansi-styles/raw/master/screenshot.png)
+
+
+## Why
+
+- Highly performant
+- Doesn't extend `String.prototype`
+- Expressive API
+- Ability to nest styles
+- Clean and focused
+- Auto-detects color support
+- Actively maintained
+- [Used by ~4500 modules](https://www.npmjs.com/browse/depended/chalk) as of July 15, 2015
+
+
+## Install
+
+```
+$ npm install --save chalk
+```
+
+
+## Usage
+
+Chalk comes with an easy to use composable API where you just chain and nest the styles you want.
+
+```js
+var chalk = require('chalk');
+
+// style a string
+chalk.blue('Hello world!');
+
+// combine styled and normal strings
+chalk.blue('Hello') + 'World' + chalk.red('!');
+
+// compose multiple styles using the chainable API
+chalk.blue.bgRed.bold('Hello world!');
+
+// pass in multiple arguments
+chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz');
+
+// nest styles
+chalk.red('Hello', chalk.underline.bgBlue('world') + '!');
+
+// nest styles of the same type even (color, underline, background)
+chalk.green(
+ 'I am a green line ' +
+ chalk.blue.underline.bold('with a blue substring') +
+ ' that becomes green again!'
+);
+```
+
+Easily define your own themes.
+
+```js
+var chalk = require('chalk');
+var error = chalk.bold.red;
+console.log(error('Error!'));
+```
+
+Take advantage of console.log [string substitution](http://nodejs.org/docs/latest/api/console.html#console_console_log_data).
+
+```js
+var name = 'Sindre';
+console.log(chalk.green('Hello %s'), name);
+//=> Hello Sindre
+```
+
+
+## API
+
+### chalk.`<style>[.<style>...](string, [string...])`
+
+Example: `chalk.red.bold.underline('Hello', 'world');`
+
+Chain [styles](#styles) and call the last one as a method with a string argument. Order doesn't matter, and later styles take precedent in case of a conflict. This simply means that `Chalk.red.yellow.green` is equivalent to `Chalk.green`.
+
+Multiple arguments will be separated by space.
+
+### chalk.enabled
+
+Color support is automatically detected, but you can override it by setting the `enabled` property. You should however only do this in your own code as it applies globally to all chalk consumers.
+
+If you need to change this in a reusable module create a new instance:
+
+```js
+var ctx = new chalk.constructor({enabled: false});
+```
+
+### chalk.supportsColor
+
+Detect whether the terminal [supports color](https://github.com/chalk/supports-color). Used internally and handled for you, but exposed for convenience.
+
+Can be overridden by the user with the flags `--color` and `--no-color`. For situations where using `--color` is not possible, add an environment variable `FORCE_COLOR` with any value to force color. Trumps `--no-color`.
+
+### chalk.styles
+
+Exposes the styles as [ANSI escape codes](https://github.com/chalk/ansi-styles).
+
+Generally not useful, but you might need just the `.open` or `.close` escape code if you're mixing externally styled strings with your own.
+
+```js
+var chalk = require('chalk');
+
+console.log(chalk.styles.red);
+//=> {open: '\u001b[31m', close: '\u001b[39m'}
+
+console.log(chalk.styles.red.open + 'Hello' + chalk.styles.red.close);
+```
+
+### chalk.hasColor(string)
+
+Check whether a string [has color](https://github.com/chalk/has-ansi).
+
+### chalk.stripColor(string)
+
+[Strip color](https://github.com/chalk/strip-ansi) from a string.
+
+Can be useful in combination with `.supportsColor` to strip color on externally styled text when it's not supported.
+
+Example:
+
+```js
+var chalk = require('chalk');
+var styledString = getText();
+
+if (!chalk.supportsColor) {
+ styledString = chalk.stripColor(styledString);
+}
+```
+
+
+## Styles
+
+### Modifiers
+
+- `reset`
+- `bold`
+- `dim`
+- `italic` *(not widely supported)*
+- `underline`
+- `inverse`
+- `hidden`
+- `strikethrough` *(not widely supported)*
+
+### Colors
+
+- `black`
+- `red`
+- `green`
+- `yellow`
+- `blue` *(on Windows the bright version is used as normal blue is illegible)*
+- `magenta`
+- `cyan`
+- `white`
+- `gray`
+
+### Background colors
+
+- `bgBlack`
+- `bgRed`
+- `bgGreen`
+- `bgYellow`
+- `bgBlue`
+- `bgMagenta`
+- `bgCyan`
+- `bgWhite`
+
+
+## 256-colors
+
+Chalk does not support anything other than the base eight colors, which guarantees it will work on all terminals and systems. Some terminals, specifically `xterm` compliant ones, will support the full range of 8-bit colors. For this the lower level [ansi-256-colors](https://github.com/jbnicolai/ansi-256-colors) package can be used.
+
+
+## Windows
+
+If you're on Windows, do yourself a favor and use [`cmder`](http://bliker.github.io/cmder/) instead of `cmd.exe`.
+
+
+## Related
+
+- [chalk-cli](https://github.com/chalk/chalk-cli) - CLI for this module
+- [ansi-styles](https://github.com/chalk/ansi-styles/) - ANSI escape codes for styling strings in the terminal
+- [supports-color](https://github.com/chalk/supports-color/) - Detect whether a terminal supports color
+- [strip-ansi](https://github.com/chalk/strip-ansi) - Strip ANSI escape codes
+- [has-ansi](https://github.com/chalk/has-ansi) - Check if a string has ANSI escape codes
+- [ansi-regex](https://github.com/chalk/ansi-regex) - Regular expression for matching ANSI escape codes
+- [wrap-ansi](https://github.com/chalk/wrap-ansi) - Wordwrap a string with ANSI escape codes
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/configstore/index.js b/node_modules/update-notifier/node_modules/configstore/index.js
new file mode 100644
index 000000000..798323e06
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/configstore/index.js
@@ -0,0 +1,98 @@
+'use strict';
+const path = require('path');
+const os = require('os');
+const fs = require('graceful-fs');
+const mkdirp = require('mkdirp');
+const xdgBasedir = require('xdg-basedir');
+const writeFileAtomic = require('write-file-atomic');
+const dotProp = require('dot-prop');
+const uniqueString = require('unique-string');
+
+const configDir = xdgBasedir.config || path.join(os.tmpdir(), uniqueString());
+const permissionError = 'You don\'t have access to this file.';
+const defaultPathMode = 0o0700;
+const writeFileOptions = {mode: 0o0600};
+
+class Configstore {
+ constructor(id, defaults, opts) {
+ opts = opts || {};
+
+ const pathPrefix = opts.globalConfigPath ?
+ path.join(id, 'config.json') :
+ path.join('configstore', `${id}.json`);
+
+ this.path = path.join(configDir, pathPrefix);
+ this.all = Object.assign({}, defaults, this.all);
+ }
+ get all() {
+ try {
+ return JSON.parse(fs.readFileSync(this.path, 'utf8'));
+ } catch (err) {
+ // Create dir if it doesn't exist
+ if (err.code === 'ENOENT') {
+ mkdirp.sync(path.dirname(this.path), defaultPathMode);
+ return {};
+ }
+
+ // Improve the message of permission errors
+ if (err.code === 'EACCES') {
+ err.message = `${err.message}\n${permissionError}\n`;
+ }
+
+ // Empty the file if it encounters invalid JSON
+ if (err.name === 'SyntaxError') {
+ writeFileAtomic.sync(this.path, '', writeFileOptions);
+ return {};
+ }
+
+ throw err;
+ }
+ }
+ set all(val) {
+ try {
+ // Make sure the folder exists as it could have been deleted in the meantime
+ mkdirp.sync(path.dirname(this.path), defaultPathMode);
+
+ writeFileAtomic.sync(this.path, JSON.stringify(val, null, '\t'), writeFileOptions);
+ } catch (err) {
+ // Improve the message of permission errors
+ if (err.code === 'EACCES') {
+ err.message = `${err.message}\n${permissionError}\n`;
+ }
+
+ throw err;
+ }
+ }
+ get size() {
+ return Object.keys(this.all || {}).length;
+ }
+ get(key) {
+ return dotProp.get(this.all, key);
+ }
+ set(key, val) {
+ const config = this.all;
+
+ if (arguments.length === 1) {
+ for (const k of Object.keys(key)) {
+ dotProp.set(config, k, key[k]);
+ }
+ } else {
+ dotProp.set(config, key, val);
+ }
+
+ this.all = config;
+ }
+ has(key) {
+ return dotProp.has(this.all, key);
+ }
+ delete(key) {
+ const config = this.all;
+ dotProp.delete(config, key);
+ this.all = config;
+ }
+ clear() {
+ this.all = {};
+ }
+}
+
+module.exports = Configstore;
diff --git a/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/index.js b/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/index.js
new file mode 100644
index 000000000..7417ef673
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/index.js
@@ -0,0 +1,120 @@
+'use strict';
+const isObj = require('is-obj');
+
+function getPathSegments(path) {
+ const pathArr = path.split('.');
+ const parts = [];
+
+ for (let i = 0; i < pathArr.length; i++) {
+ let p = pathArr[i];
+
+ while (p[p.length - 1] === '\\' && pathArr[i + 1] !== undefined) {
+ p = p.slice(0, -1) + '.';
+ p += pathArr[++i];
+ }
+
+ parts.push(p);
+ }
+
+ return parts;
+}
+
+module.exports = {
+ get(obj, path, value) {
+ if (!isObj(obj) || typeof path !== 'string') {
+ return obj;
+ }
+
+ const pathArr = getPathSegments(path);
+
+ for (let i = 0; i < pathArr.length; i++) {
+ if (!Object.prototype.propertyIsEnumerable.call(obj, pathArr[i])) {
+ return value;
+ }
+
+ obj = obj[pathArr[i]];
+
+ if (obj === undefined || obj === null) {
+ // `obj` is either `undefined` or `null` so we want to stop the loop, and
+ // if this is not the last bit of the path, and
+ // if it did't return `undefined`
+ // it would return `null` if `obj` is `null`
+ // but we want `get({foo: null}, 'foo.bar')` to equal `undefined`, or the supplied value, not `null`
+ if (i !== pathArr.length - 1) {
+ return value;
+ }
+
+ break;
+ }
+ }
+
+ return obj;
+ },
+
+ set(obj, path, value) {
+ if (!isObj(obj) || typeof path !== 'string') {
+ return;
+ }
+
+ const pathArr = getPathSegments(path);
+
+ for (let i = 0; i < pathArr.length; i++) {
+ const p = pathArr[i];
+
+ if (!isObj(obj[p])) {
+ obj[p] = {};
+ }
+
+ if (i === pathArr.length - 1) {
+ obj[p] = value;
+ }
+
+ obj = obj[p];
+ }
+ },
+
+ delete(obj, path) {
+ if (!isObj(obj) || typeof path !== 'string') {
+ return;
+ }
+
+ const pathArr = getPathSegments(path);
+
+ for (let i = 0; i < pathArr.length; i++) {
+ const p = pathArr[i];
+
+ if (i === pathArr.length - 1) {
+ delete obj[p];
+ return;
+ }
+
+ obj = obj[p];
+
+ if (!isObj(obj)) {
+ return;
+ }
+ }
+ },
+
+ has(obj, path) {
+ if (!isObj(obj) || typeof path !== 'string') {
+ return false;
+ }
+
+ const pathArr = getPathSegments(path);
+
+ for (let i = 0; i < pathArr.length; i++) {
+ if (isObj(obj)) {
+ if (!(pathArr[i] in obj)) {
+ return false;
+ }
+
+ obj = obj[pathArr[i]];
+ } else {
+ return false;
+ }
+ }
+
+ return true;
+ }
+};
diff --git a/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/license b/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/node_modules/is-obj/index.js b/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/node_modules/is-obj/index.js
new file mode 100644
index 000000000..4d023bc69
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/node_modules/is-obj/index.js
@@ -0,0 +1,5 @@
+'use strict';
+module.exports = function (x) {
+ var type = typeof x;
+ return x !== null && (type === 'object' || type === 'function');
+};
diff --git a/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/node_modules/is-obj/license b/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/node_modules/is-obj/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/node_modules/is-obj/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/node_modules/is-obj/package.json b/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/node_modules/is-obj/package.json
new file mode 100644
index 000000000..4bee1cda7
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/node_modules/is-obj/package.json
@@ -0,0 +1,101 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "is-obj@^1.0.0",
+ "scope": null,
+ "escapedName": "is-obj",
+ "name": "is-obj",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop"
+ ]
+ ],
+ "_from": "is-obj@>=1.0.0 <2.0.0",
+ "_id": "is-obj@1.0.1",
+ "_inCache": true,
+ "_location": "/update-notifier/configstore/dot-prop/is-obj",
+ "_nodeVersion": "4.3.0",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/is-obj-1.0.1.tgz_1458641652447_0.6715397178195417"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.14.12",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "is-obj@^1.0.0",
+ "scope": null,
+ "escapedName": "is-obj",
+ "name": "is-obj",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/configstore/dot-prop"
+ ],
+ "_resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "_shasum": "3e4729ac1f5fde025cd7d83a896dab9f4f67db0f",
+ "_shrinkwrap": null,
+ "_spec": "is-obj@^1.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/is-obj/issues"
+ },
+ "dependencies": {},
+ "description": "Check if a value is an object",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "3e4729ac1f5fde025cd7d83a896dab9f4f67db0f",
+ "tarball": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "7438be7393348bf65cbc2330446666bb7fc2c2da",
+ "homepage": "https://github.com/sindresorhus/is-obj#readme",
+ "keywords": [
+ "obj",
+ "object",
+ "is",
+ "check",
+ "test",
+ "type"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "is-obj",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/is-obj.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "1.0.1"
+}
diff --git a/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/node_modules/is-obj/readme.md b/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/node_modules/is-obj/readme.md
new file mode 100644
index 000000000..d31102643
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/node_modules/is-obj/readme.md
@@ -0,0 +1,34 @@
+# is-obj [![Build Status](https://travis-ci.org/sindresorhus/is-obj.svg?branch=master)](https://travis-ci.org/sindresorhus/is-obj)
+
+> Check if a value is an object
+
+Keep in mind that array, function, regexp, etc, are objects in JavaScript.<br>
+See [`is-plain-obj`](https://github.com/sindresorhus/is-plain-obj) if you want to check for plain objects.
+
+
+## Install
+
+```
+$ npm install --save is-obj
+```
+
+
+## Usage
+
+```js
+const isObj = require('is-obj');
+
+isObj({foo: 'bar'});
+//=> true
+
+isObj([1, 2, 3]);
+//=> true
+
+isObj('foo');
+//=> false
+```
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/package.json b/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/package.json
new file mode 100644
index 000000000..51ff367bb
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/package.json
@@ -0,0 +1,115 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "dot-prop@^4.1.0",
+ "scope": null,
+ "escapedName": "dot-prop",
+ "name": "dot-prop",
+ "rawSpec": "^4.1.0",
+ "spec": ">=4.1.0 <5.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/configstore"
+ ]
+ ],
+ "_from": "dot-prop@>=4.1.0 <5.0.0",
+ "_id": "dot-prop@4.1.0",
+ "_inCache": true,
+ "_location": "/update-notifier/configstore/dot-prop",
+ "_nodeVersion": "7.2.0",
+ "_npmOperationalInternal": {
+ "host": "packages-18-east.internal.npmjs.com",
+ "tmp": "tmp/dot-prop-4.1.0.tgz_1480265156334_0.7113023274578154"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "3.10.9",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "dot-prop@^4.1.0",
+ "scope": null,
+ "escapedName": "dot-prop",
+ "name": "dot-prop",
+ "rawSpec": "^4.1.0",
+ "spec": ">=4.1.0 <5.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/configstore"
+ ],
+ "_resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.1.0.tgz",
+ "_shasum": "eb29eac57dfa31fda1edef50ea462ee3d38ff3ab",
+ "_shrinkwrap": null,
+ "_spec": "dot-prop@^4.1.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/configstore",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/dot-prop/issues"
+ },
+ "dependencies": {
+ "is-obj": "^1.0.0"
+ },
+ "description": "Get, set, or delete a property from a nested object using a dot path",
+ "devDependencies": {
+ "ava": "*",
+ "matcha": "^0.7.0",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "eb29eac57dfa31fda1edef50ea462ee3d38ff3ab",
+ "tarball": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.1.0.tgz"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "d49fb11519d5cbb7974ec3d3b5b57719f3c17514",
+ "homepage": "https://github.com/sindresorhus/dot-prop#readme",
+ "keywords": [
+ "obj",
+ "object",
+ "prop",
+ "property",
+ "dot",
+ "path",
+ "get",
+ "set",
+ "delete",
+ "del",
+ "access",
+ "notation",
+ "dotty"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "dot-prop",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/dot-prop.git"
+ },
+ "scripts": {
+ "bench": "matcha bench.js",
+ "test": "xo && ava"
+ },
+ "version": "4.1.0",
+ "xo": {
+ "esnext": true
+ }
+}
diff --git a/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/readme.md b/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/readme.md
new file mode 100644
index 000000000..3d5cfb933
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/configstore/node_modules/dot-prop/readme.md
@@ -0,0 +1,91 @@
+# dot-prop [![Build Status](https://travis-ci.org/sindresorhus/dot-prop.svg?branch=master)](https://travis-ci.org/sindresorhus/dot-prop)
+
+> Get, set, or delete a property from a nested object using a dot path
+
+
+## Install
+
+```
+$ npm install --save dot-prop
+```
+
+
+## Usage
+
+```js
+const dotProp = require('dot-prop');
+
+// getter
+dotProp.get({foo: {bar: 'unicorn'}}, 'foo.bar');
+//=> 'unicorn'
+
+dotProp.get({foo: {bar: 'a'}}, 'foo.notDefined.deep');
+//=> undefined
+
+dotProp.get({foo: {bar: 'a'}}, 'foo.notDefined.deep', 'default value');
+//=> 'default value'
+
+dotProp.get({foo: {'dot.dot': 'unicorn'}}, 'foo.dot\\.dot');
+//=> 'unicorn'
+
+// setter
+const obj = {foo: {bar: 'a'}};
+dotProp.set(obj, 'foo.bar', 'b');
+console.log(obj);
+//=> {foo: {bar: 'b'}}
+
+dotProp.set(obj, 'foo.baz', 'x');
+console.log(obj);
+//=> {foo: {bar: 'b', baz: 'x'}}
+
+// has
+dotProp.has({foo: {bar: 'unicorn'}}, 'foo.bar');
+//=> true
+
+// deleter
+const obj = {foo: {bar: 'a'}};
+dotProp.delete(obj, 'foo.bar');
+console.log(obj);
+//=> {foo: {}}
+
+obj.foo.bar = {x: 'y', y: 'x'};
+dotProp.delete(obj, 'foo.bar.x');
+console.log(obj);
+//=> {foo: {bar: {y: 'x'}}}
+```
+
+
+## API
+
+### get(obj, path, [value])
+
+### set(obj, path, value)
+
+### has(obj, path)
+
+### delete(obj, path)
+
+#### obj
+
+Type: `Object`
+
+Object to get, set, or delete the `path` value.
+
+#### path
+
+Type: `string`
+
+Path of the property in the object, using `.` to separate each nested key.
+
+Use `\\.` if you have a `.` in the key.
+
+#### value
+
+Type: `any`
+
+Value to set at `path` or optional default value to return from get.
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/index.js b/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/index.js
new file mode 100644
index 000000000..5bc7787f4
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/index.js
@@ -0,0 +1,4 @@
+'use strict';
+const cryptoRandomString = require('crypto-random-string');
+
+module.exports = () => cryptoRandomString(32);
diff --git a/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/license b/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/node_modules/crypto-random-string/index.js b/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/node_modules/crypto-random-string/index.js
new file mode 100644
index 000000000..ceaf65bfc
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/node_modules/crypto-random-string/index.js
@@ -0,0 +1,10 @@
+'use strict';
+const crypto = require('crypto');
+
+module.exports = len => {
+ if (!Number.isFinite(len)) {
+ throw new TypeError('Expected a finite number');
+ }
+
+ return crypto.randomBytes(Math.ceil(len / 2)).toString('hex').slice(0, len);
+};
diff --git a/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/node_modules/crypto-random-string/license b/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/node_modules/crypto-random-string/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/node_modules/crypto-random-string/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/node_modules/crypto-random-string/package.json b/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/node_modules/crypto-random-string/package.json
new file mode 100644
index 000000000..7c707f898
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/node_modules/crypto-random-string/package.json
@@ -0,0 +1,111 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "crypto-random-string@^1.0.0",
+ "scope": null,
+ "escapedName": "crypto-random-string",
+ "name": "crypto-random-string",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string"
+ ]
+ ],
+ "_from": "crypto-random-string@>=1.0.0 <2.0.0",
+ "_id": "crypto-random-string@1.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/configstore/unique-string/crypto-random-string",
+ "_nodeVersion": "4.6.1",
+ "_npmOperationalInternal": {
+ "host": "packages-18-east.internal.npmjs.com",
+ "tmp": "tmp/crypto-random-string-1.0.0.tgz_1479096882597_0.12821740517392755"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.15.9",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "crypto-random-string@^1.0.0",
+ "scope": null,
+ "escapedName": "crypto-random-string",
+ "name": "crypto-random-string",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/configstore/unique-string"
+ ],
+ "_resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
+ "_shasum": "a230f64f568310e1498009940790ec99545bca7e",
+ "_shrinkwrap": null,
+ "_spec": "crypto-random-string@^1.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/crypto-random-string/issues"
+ },
+ "dependencies": {},
+ "description": "Generate a cryptographically strong random string",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "a230f64f568310e1498009940790ec99545bca7e",
+ "tarball": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "21960c996c3f77cf5f7bf6765e837e7c8a07e200",
+ "homepage": "https://github.com/sindresorhus/crypto-random-string#readme",
+ "keywords": [
+ "random",
+ "string",
+ "str",
+ "rand",
+ "text",
+ "id",
+ "identifier",
+ "slug",
+ "salt",
+ "crypto",
+ "strong",
+ "secure",
+ "hex"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "crypto-random-string",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/crypto-random-string.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "1.0.0",
+ "xo": {
+ "esnext": true
+ }
+}
diff --git a/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/node_modules/crypto-random-string/readme.md b/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/node_modules/crypto-random-string/readme.md
new file mode 100644
index 000000000..dab5a2e9c
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/node_modules/crypto-random-string/readme.md
@@ -0,0 +1,49 @@
+# crypto-random-string [![Build Status](https://travis-ci.org/sindresorhus/crypto-random-string.svg?branch=master)](https://travis-ci.org/sindresorhus/crypto-random-string)
+
+> Generate a [cryptographically strong](https://en.m.wikipedia.org/wiki/Strong_cryptography) random string
+
+Can be useful for creating an identifier, slug, salt, fixture, etc.
+
+
+## Install
+
+```
+$ npm install --save crypto-random-string
+```
+
+
+## Usage
+
+```js
+const cryptoRandomString = require('crypto-random-string');
+
+cryptoRandomString(10);
+//=> '2cf05d94db'
+```
+
+
+## API
+
+### cryptoRandomString(length)
+
+#### length
+
+Type: `number`
+
+Length of the returned string.
+
+
+## Related
+
+- [random-int](https://github.com/sindresorhus/random-int) - Generate a random integer
+- [random-float](https://github.com/sindresorhus/random-float) - Generate a random float
+- [random-item](https://github.com/sindresorhus/random-item) - Get a random item from an array
+- [random-boolean](https://github.com/arthurvr/random-boolean) - Get a random boolean
+- [random-obj-key](https://github.com/sindresorhus/random-obj-key) - Get a random key from an object
+- [random-obj-prop](https://github.com/sindresorhus/random-obj-prop) - Get a random property from an object
+- [unique-random](https://github.com/sindresorhus/unique-random) - Generate random numbers that are consecutively unique
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/package.json b/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/package.json
new file mode 100644
index 000000000..0c4223e00
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/package.json
@@ -0,0 +1,111 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "unique-string@^1.0.0",
+ "scope": null,
+ "escapedName": "unique-string",
+ "name": "unique-string",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/configstore"
+ ]
+ ],
+ "_from": "unique-string@>=1.0.0 <2.0.0",
+ "_id": "unique-string@1.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/configstore/unique-string",
+ "_nodeVersion": "4.6.1",
+ "_npmOperationalInternal": {
+ "host": "packages-18-east.internal.npmjs.com",
+ "tmp": "tmp/unique-string-1.0.0.tgz_1479097654250_0.7648377516306937"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.15.9",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "unique-string@^1.0.0",
+ "scope": null,
+ "escapedName": "unique-string",
+ "name": "unique-string",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/configstore"
+ ],
+ "_resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
+ "_shasum": "9e1057cca851abb93398f8b33ae187b99caec11a",
+ "_shrinkwrap": null,
+ "_spec": "unique-string@^1.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/configstore",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/unique-string/issues"
+ },
+ "dependencies": {
+ "crypto-random-string": "^1.0.0"
+ },
+ "description": "Generate a unique random string",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "9e1057cca851abb93398f8b33ae187b99caec11a",
+ "tarball": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "157a6b74fb44cf5d4ee2aa579502b967edbf4203",
+ "homepage": "https://github.com/sindresorhus/unique-string#readme",
+ "keywords": [
+ "unique",
+ "string",
+ "random",
+ "uniq",
+ "str",
+ "rand",
+ "text",
+ "id",
+ "identifier",
+ "slug",
+ "hex"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "unique-string",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/unique-string.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "1.0.0",
+ "xo": {
+ "esnext": true
+ }
+}
diff --git a/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/readme.md b/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/readme.md
new file mode 100644
index 000000000..5d5ac971e
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/configstore/node_modules/unique-string/readme.md
@@ -0,0 +1,32 @@
+# unique-string [![Build Status](https://travis-ci.org/sindresorhus/unique-string.svg?branch=master)](https://travis-ci.org/sindresorhus/unique-string)
+
+> Generate a unique random string
+
+
+## Install
+
+```
+$ npm install --save unique-string
+```
+
+
+## Usage
+
+```js
+const uniqueString = require('unique-string');
+
+uniqueString();
+//=> 'b4de2a49c8ffa3fbee04446f045483b2'
+```
+
+
+## API
+
+### uniqueString()
+
+Returns a 32 character unique string. Matches the length of MD5, which is [unique enough](http://stackoverflow.com/a/2444336/64949) for non-crypto purposes.
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/configstore/package.json b/node_modules/update-notifier/node_modules/configstore/package.json
new file mode 100644
index 000000000..008fd1417
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/configstore/package.json
@@ -0,0 +1,134 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "configstore@^3.0.0",
+ "scope": null,
+ "escapedName": "configstore",
+ "name": "configstore",
+ "rawSpec": "^3.0.0",
+ "spec": ">=3.0.0 <4.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier"
+ ]
+ ],
+ "_from": "configstore@>=3.0.0 <4.0.0",
+ "_id": "configstore@3.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/configstore",
+ "_nodeVersion": "4.6.2",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/configstore-3.0.0.tgz_1486992079317_0.31415490387007594"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.15.11",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "configstore@^3.0.0",
+ "scope": null,
+ "escapedName": "configstore",
+ "name": "configstore",
+ "rawSpec": "^3.0.0",
+ "spec": ">=3.0.0 <4.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier"
+ ],
+ "_resolved": "https://registry.npmjs.org/configstore/-/configstore-3.0.0.tgz",
+ "_shasum": "e1b8669c1803ccc50b545e92f8e6e79aa80e0196",
+ "_shrinkwrap": null,
+ "_spec": "configstore@^3.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/yeoman/configstore/issues"
+ },
+ "dependencies": {
+ "dot-prop": "^4.1.0",
+ "graceful-fs": "^4.1.2",
+ "mkdirp": "^0.5.0",
+ "unique-string": "^1.0.0",
+ "write-file-atomic": "^1.1.2",
+ "xdg-basedir": "^3.0.0"
+ },
+ "description": "Easily load and save config without having to think about where and how",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "e1b8669c1803ccc50b545e92f8e6e79aa80e0196",
+ "tarball": "https://registry.npmjs.org/configstore/-/configstore-3.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "7ce00b4ce61ed2099388e1d476967a8cd8ff572a",
+ "homepage": "https://github.com/yeoman/configstore#readme",
+ "keywords": [
+ "config",
+ "store",
+ "storage",
+ "conf",
+ "configuration",
+ "settings",
+ "preferences",
+ "json",
+ "data",
+ "persist",
+ "persistent",
+ "save"
+ ],
+ "license": "BSD-2-Clause",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ {
+ "name": "addyosmani",
+ "email": "addyosmani@gmail.com"
+ },
+ {
+ "name": "passy",
+ "email": "phartig@rdrei.net"
+ },
+ {
+ "name": "sboudrias",
+ "email": "admin@simonboudrias.com"
+ },
+ {
+ "name": "eddiemonge",
+ "email": "eddie+npm@eddiemonge.com"
+ },
+ {
+ "name": "arthurvr",
+ "email": "contact@arthurverschaeve.be"
+ }
+ ],
+ "name": "configstore",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/yeoman/configstore.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "3.0.0"
+}
diff --git a/node_modules/update-notifier/node_modules/configstore/readme.md b/node_modules/update-notifier/node_modules/configstore/readme.md
new file mode 100644
index 000000000..85987223a
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/configstore/readme.md
@@ -0,0 +1,114 @@
+# configstore [![Build Status](https://travis-ci.org/yeoman/configstore.svg?branch=master)](https://travis-ci.org/yeoman/configstore)
+
+> Easily load and persist config without having to think about where and how
+
+Config is stored in a JSON file located in `$XDG_CONFIG_HOME` or `~/.config`.<br>
+Example: `~/.config/configstore/some-id.json`
+
+
+## Usage
+
+```js
+const Configstore = require('configstore');
+const pkg = require('./package.json');
+
+// create a Configstore instance with an unique ID e.g.
+// Package name and optionally some default values
+const conf = new Configstore(pkg.name, {foo: 'bar'});
+
+console.log(conf.get('foo'));
+//=> 'bar'
+
+conf.set('awesome', true);
+console.log(conf.get('awesome'));
+//=> true
+
+// Use dot-notation to access nested properties
+conf.set('bar.baz', true);
+console.log(conf.get('bar'));
+//=> {baz: true}
+
+conf.delete('awesome');
+console.log(conf.get('awesome'));
+//=> undefined
+```
+
+
+## API
+
+### Configstore(packageName, [defaults], [options])
+
+Returns a new instance.
+
+#### packageName
+
+Type: `string`
+
+Name of your package.
+
+#### defaults
+
+Type: `Object`
+
+Default config.
+
+#### options
+
+##### globalConfigPath
+
+Type: `boolean`<br>
+Default: `false`
+
+Store the config at `$CONFIG/package-name/config.json` instead of the default `$CONFIG/configstore/package-name.json`. This is not recommended as you might end up conflicting with other tools, rendering the "without having to think" idea moot.
+
+### Instance
+
+You can use [dot-notation](https://github.com/sindresorhus/dot-prop) in a `key` to access nested properties.
+
+### .set(key, value)
+
+Set an item.
+
+### .set(object)
+
+Set multiple items at once.
+
+### .get(key)
+
+Get an item.
+
+### .has(key)
+
+Check if an item exists.
+
+### .delete(key)
+
+Delete an item.
+
+### .clear()
+
+Delete all items.
+
+### .size
+
+Get the item count.
+
+### .path
+
+Get the path to the config file. Can be used to show the user where the config file is located or even better open it for them.
+
+### .all
+
+Get all the config as an object or replace the current config with an object:
+
+```js
+conf.all = {
+ hello: 'world'
+};
+```
+
+
+## License
+
+[BSD license](http://opensource.org/licenses/bsd-license.php)<br>
+Copyright Google
diff --git a/node_modules/update-notifier/node_modules/is-npm/index.js b/node_modules/update-notifier/node_modules/is-npm/index.js
new file mode 100644
index 000000000..b5f3c27ab
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/is-npm/index.js
@@ -0,0 +1,4 @@
+'use strict';
+module.exports = 'npm_config_username' in process.env ||
+ 'npm_package_name' in process.env ||
+ 'npm_config_heading' in process.env;
diff --git a/node_modules/update-notifier/node_modules/is-npm/package.json b/node_modules/update-notifier/node_modules/is-npm/package.json
new file mode 100644
index 000000000..394439ce9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/is-npm/package.json
@@ -0,0 +1,94 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "is-npm@^1.0.0",
+ "scope": null,
+ "escapedName": "is-npm",
+ "name": "is-npm",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier"
+ ]
+ ],
+ "_from": "is-npm@>=1.0.0 <2.0.0",
+ "_id": "is-npm@1.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/is-npm",
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "1.4.9",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "is-npm@^1.0.0",
+ "scope": null,
+ "escapedName": "is-npm",
+ "name": "is-npm",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier"
+ ],
+ "_resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
+ "_shasum": "f2fb63a65e4905b406c86072765a1a4dc793b9f4",
+ "_shrinkwrap": null,
+ "_spec": "is-npm@^1.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "http://sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/is-npm/issues"
+ },
+ "dependencies": {},
+ "description": "Check if your code is running as an npm script",
+ "devDependencies": {
+ "ava": "0.0.3"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "f2fb63a65e4905b406c86072765a1a4dc793b9f4",
+ "tarball": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/sindresorhus/is-npm",
+ "keywords": [
+ "npm",
+ "is",
+ "check",
+ "detect",
+ "env",
+ "environment"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "is-npm",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/sindresorhus/is-npm.git"
+ },
+ "scripts": {
+ "test": "node test.js"
+ },
+ "version": "1.0.0"
+}
diff --git a/node_modules/update-notifier/node_modules/is-npm/readme.md b/node_modules/update-notifier/node_modules/is-npm/readme.md
new file mode 100644
index 000000000..84833ec65
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/is-npm/readme.md
@@ -0,0 +1,30 @@
+# is-npm [![Build Status](https://travis-ci.org/sindresorhus/is-npm.svg?branch=master)](https://travis-ci.org/sindresorhus/is-npm)
+
+> Check if your code is running as an [npm script](https://www.npmjs.org/doc/misc/npm-scripts.html)
+
+
+## Install
+
+```sh
+$ npm install --save is-npm
+```
+
+
+## Usage
+
+```js
+var isNpm = require('is-npm');
+console.log(isNpm);
+```
+
+```sh
+$ node foo.js
+#=> false
+$ npm run foo
+#=> true
+```
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/latest-version/index.js b/node_modules/update-notifier/node_modules/latest-version/index.js
new file mode 100644
index 000000000..fee259da2
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/index.js
@@ -0,0 +1,4 @@
+'use strict';
+const packageJson = require('package-json');
+
+module.exports = name => packageJson(name.toLowerCase(), 'latest').then(data => data.version);
diff --git a/node_modules/update-notifier/node_modules/latest-version/license b/node_modules/update-notifier/node_modules/latest-version/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/index.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/index.js
new file mode 100644
index 000000000..e1d206677
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/index.js
@@ -0,0 +1,51 @@
+'use strict';
+const url = require('url');
+const got = require('got');
+const registryUrl = require('registry-url');
+const registryAuthToken = require('registry-auth-token');
+const semver = require('semver');
+
+module.exports = (name, version) => {
+ const scope = name.split('/')[0];
+ const regUrl = registryUrl(scope);
+ const pkgUrl = url.resolve(regUrl, encodeURIComponent(name).replace(/^%40/, '@'));
+ const authInfo = registryAuthToken(regUrl);
+ const headers = {};
+
+ if (authInfo) {
+ headers.authorization = `${authInfo.type} ${authInfo.token}`;
+ }
+
+ return got(pkgUrl, {json: true, headers})
+ .then(res => {
+ let data = res.body;
+
+ if (version === 'latest') {
+ data = data.versions[data['dist-tags'].latest];
+ } else if (version) {
+ if (!data.versions[version]) {
+ const versions = Object.keys(data.versions);
+ version = semver.maxSatisfying(versions, version);
+
+ if (!version) {
+ throw new Error('Version doesn\'t exist');
+ }
+ }
+
+ data = data.versions[version];
+
+ if (!data) {
+ throw new Error('Version doesn\'t exist');
+ }
+ }
+
+ return data;
+ })
+ .catch(err => {
+ if (err.statusCode === 404) {
+ throw new Error(`Package \`${name}\` doesn't exist`);
+ }
+
+ throw err;
+ });
+};
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/license b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/index.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/index.js
new file mode 100644
index 000000000..31a64dd08
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/index.js
@@ -0,0 +1,364 @@
+'use strict';
+const EventEmitter = require('events');
+const http = require('http');
+const https = require('https');
+const PassThrough = require('stream').PassThrough;
+const urlLib = require('url');
+const querystring = require('querystring');
+const duplexer3 = require('duplexer3');
+const isStream = require('is-stream');
+const getStream = require('get-stream');
+const timedOut = require('timed-out');
+const urlParseLax = require('url-parse-lax');
+const lowercaseKeys = require('lowercase-keys');
+const isRedirect = require('is-redirect');
+const unzipResponse = require('unzip-response');
+const createErrorClass = require('create-error-class');
+const isRetryAllowed = require('is-retry-allowed');
+const Buffer = require('safe-buffer').Buffer;
+const pkg = require('./package');
+
+function requestAsEventEmitter(opts) {
+ opts = opts || {};
+
+ const ee = new EventEmitter();
+ const requestUrl = opts.href || urlLib.resolve(urlLib.format(opts), opts.path);
+ let redirectCount = 0;
+ let retryCount = 0;
+ let redirectUrl;
+
+ const get = opts => {
+ const fn = opts.protocol === 'https:' ? https : http;
+
+ const req = fn.request(opts, res => {
+ const statusCode = res.statusCode;
+
+ if (isRedirect(statusCode) && opts.followRedirect && 'location' in res.headers && (opts.method === 'GET' || opts.method === 'HEAD')) {
+ res.resume();
+
+ if (++redirectCount > 10) {
+ ee.emit('error', new got.MaxRedirectsError(statusCode, opts), null, res);
+ return;
+ }
+
+ const bufferString = Buffer.from(res.headers.location, 'binary').toString();
+
+ redirectUrl = urlLib.resolve(urlLib.format(opts), bufferString);
+ const redirectOpts = Object.assign({}, opts, urlLib.parse(redirectUrl));
+
+ ee.emit('redirect', res, redirectOpts);
+
+ get(redirectOpts);
+
+ return;
+ }
+
+ setImmediate(() => {
+ const response = typeof unzipResponse === 'function' && req.method !== 'HEAD' ? unzipResponse(res) : res;
+ response.url = redirectUrl || requestUrl;
+ response.requestUrl = requestUrl;
+
+ ee.emit('response', response);
+ });
+ });
+
+ req.once('error', err => {
+ const backoff = opts.retries(++retryCount, err);
+
+ if (backoff) {
+ setTimeout(get, backoff, opts);
+ return;
+ }
+
+ ee.emit('error', new got.RequestError(err, opts));
+ });
+
+ if (opts.gotTimeout) {
+ timedOut(req, opts.gotTimeout);
+ }
+
+ setImmediate(() => {
+ ee.emit('request', req);
+ });
+ };
+
+ get(opts);
+ return ee;
+}
+
+function asPromise(opts) {
+ return new Promise((resolve, reject) => {
+ const ee = requestAsEventEmitter(opts);
+
+ ee.on('request', req => {
+ if (isStream(opts.body)) {
+ opts.body.pipe(req);
+ opts.body = undefined;
+ return;
+ }
+
+ req.end(opts.body);
+ });
+
+ ee.on('response', res => {
+ const stream = opts.encoding === null ? getStream.buffer(res) : getStream(res, opts);
+
+ stream
+ .catch(err => reject(new got.ReadError(err, opts)))
+ .then(data => {
+ const statusCode = res.statusCode;
+ const limitStatusCode = opts.followRedirect ? 299 : 399;
+
+ res.body = data;
+
+ if (opts.json && res.body) {
+ try {
+ res.body = JSON.parse(res.body);
+ } catch (e) {
+ throw new got.ParseError(e, statusCode, opts, data);
+ }
+ }
+
+ if (statusCode < 200 || statusCode > limitStatusCode) {
+ throw new got.HTTPError(statusCode, opts);
+ }
+
+ resolve(res);
+ })
+ .catch(err => {
+ Object.defineProperty(err, 'response', {value: res});
+ reject(err);
+ });
+ });
+
+ ee.on('error', reject);
+ });
+}
+
+function asStream(opts) {
+ const input = new PassThrough();
+ const output = new PassThrough();
+ const proxy = duplexer3(input, output);
+
+ if (opts.json) {
+ throw new Error('got can not be used as stream when options.json is used');
+ }
+
+ if (opts.body) {
+ proxy.write = () => {
+ throw new Error('got\'s stream is not writable when options.body is used');
+ };
+ }
+
+ const ee = requestAsEventEmitter(opts);
+
+ ee.on('request', req => {
+ proxy.emit('request', req);
+
+ if (isStream(opts.body)) {
+ opts.body.pipe(req);
+ return;
+ }
+
+ if (opts.body) {
+ req.end(opts.body);
+ return;
+ }
+
+ if (opts.method === 'POST' || opts.method === 'PUT' || opts.method === 'PATCH') {
+ input.pipe(req);
+ return;
+ }
+
+ req.end();
+ });
+
+ ee.on('response', res => {
+ const statusCode = res.statusCode;
+
+ res.pipe(output);
+
+ if (statusCode < 200 || statusCode > 299) {
+ proxy.emit('error', new got.HTTPError(statusCode, opts), null, res);
+ return;
+ }
+
+ proxy.emit('response', res);
+ });
+
+ ee.on('redirect', proxy.emit.bind(proxy, 'redirect'));
+ ee.on('error', proxy.emit.bind(proxy, 'error'));
+
+ return proxy;
+}
+
+function normalizeArguments(url, opts) {
+ if (typeof url !== 'string' && typeof url !== 'object') {
+ throw new Error(`Parameter \`url\` must be a string or object, not ${typeof url}`);
+ }
+
+ if (typeof url === 'string') {
+ url = url.replace(/^unix:/, 'http://$&');
+ url = urlParseLax(url);
+
+ if (url.auth) {
+ throw new Error('Basic authentication must be done with auth option');
+ }
+ }
+
+ opts = Object.assign(
+ {
+ protocol: 'http:',
+ path: '',
+ retries: 5
+ },
+ url,
+ opts
+ );
+
+ opts.headers = Object.assign({
+ 'user-agent': `${pkg.name}/${pkg.version} (https://github.com/sindresorhus/got)`,
+ 'accept-encoding': 'gzip,deflate'
+ }, lowercaseKeys(opts.headers));
+
+ const query = opts.query;
+
+ if (query) {
+ if (typeof query !== 'string') {
+ opts.query = querystring.stringify(query);
+ }
+
+ opts.path = `${opts.path.split('?')[0]}?${opts.query}`;
+ delete opts.query;
+ }
+
+ if (opts.json && opts.headers.accept === undefined) {
+ opts.headers.accept = 'application/json';
+ }
+
+ let body = opts.body;
+
+ if (body) {
+ if (typeof body !== 'string' && !(body !== null && typeof body === 'object')) {
+ throw new Error('options.body must be a ReadableStream, string, Buffer or plain Object');
+ }
+
+ opts.method = opts.method || 'POST';
+
+ if (isStream(body) && typeof body.getBoundary === 'function') {
+ // Special case for https://github.com/form-data/form-data
+ opts.headers['content-type'] = opts.headers['content-type'] || `multipart/form-data; boundary=${body.getBoundary()}`;
+ } else if (body !== null && typeof body === 'object' && !Buffer.isBuffer(body) && !isStream(body)) {
+ opts.headers['content-type'] = opts.headers['content-type'] || 'application/x-www-form-urlencoded';
+ body = opts.body = querystring.stringify(body);
+ }
+
+ if (opts.headers['content-length'] === undefined && opts.headers['transfer-encoding'] === undefined && !isStream(body)) {
+ const length = typeof body === 'string' ? Buffer.byteLength(body) : body.length;
+ opts.headers['content-length'] = length;
+ }
+ }
+
+ opts.method = (opts.method || 'GET').toUpperCase();
+
+ if (opts.hostname === 'unix') {
+ const matches = /(.+):(.+)/.exec(opts.path);
+
+ if (matches) {
+ opts.socketPath = matches[1];
+ opts.path = matches[2];
+ opts.host = null;
+ }
+ }
+
+ if (typeof opts.retries !== 'function') {
+ const retries = opts.retries;
+
+ opts.retries = (iter, err) => {
+ if (iter > retries || !isRetryAllowed(err)) {
+ return 0;
+ }
+
+ const noise = Math.random() * 100;
+
+ return ((1 << iter) * 1000) + noise;
+ };
+ }
+
+ if (opts.followRedirect === undefined) {
+ opts.followRedirect = true;
+ }
+
+ if (opts.timeout) {
+ opts.gotTimeout = opts.timeout;
+ delete opts.timeout;
+ }
+
+ return opts;
+}
+
+function got(url, opts) {
+ try {
+ return asPromise(normalizeArguments(url, opts));
+ } catch (err) {
+ return Promise.reject(err);
+ }
+}
+
+const helpers = [
+ 'get',
+ 'post',
+ 'put',
+ 'patch',
+ 'head',
+ 'delete'
+];
+
+helpers.forEach(el => {
+ got[el] = (url, opts) => got(url, Object.assign({}, opts, {method: el}));
+});
+
+got.stream = (url, opts) => asStream(normalizeArguments(url, opts));
+
+for (const el of helpers) {
+ got.stream[el] = (url, opts) => got.stream(url, Object.assign({}, opts, {method: el}));
+}
+
+function stdError(error, opts) {
+ if (error.code !== undefined) {
+ this.code = error.code;
+ }
+
+ Object.assign(this, {
+ message: error.message,
+ host: opts.host,
+ hostname: opts.hostname,
+ method: opts.method,
+ path: opts.path
+ });
+}
+
+got.RequestError = createErrorClass('RequestError', stdError);
+got.ReadError = createErrorClass('ReadError', stdError);
+got.ParseError = createErrorClass('ParseError', function (e, statusCode, opts, data) {
+ stdError.call(this, e, opts);
+ this.statusCode = statusCode;
+ this.statusMessage = http.STATUS_CODES[this.statusCode];
+ this.message = `${e.message} in "${urlLib.format(opts)}": \n${data.slice(0, 77)}...`;
+});
+
+got.HTTPError = createErrorClass('HTTPError', function (statusCode, opts) {
+ stdError.call(this, {}, opts);
+ this.statusCode = statusCode;
+ this.statusMessage = http.STATUS_CODES[this.statusCode];
+ this.message = `Response code ${this.statusCode} (${this.statusMessage})`;
+});
+
+got.MaxRedirectsError = createErrorClass('MaxRedirectsError', function (statusCode, opts) {
+ stdError.call(this, {}, opts);
+ this.statusCode = statusCode;
+ this.statusMessage = http.STATUS_CODES[this.statusCode];
+ this.message = 'Redirected 10 times. Aborting.';
+});
+
+module.exports = got;
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/license b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/index.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/index.js
new file mode 100644
index 000000000..e415aa7ed
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/index.js
@@ -0,0 +1,44 @@
+'use strict';
+var captureStackTrace = require('capture-stack-trace');
+
+function inherits(ctor, superCtor) {
+ ctor.super_ = superCtor;
+ ctor.prototype = Object.create(superCtor.prototype, {
+ constructor: {
+ value: ctor,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+}
+
+module.exports = function createErrorClass(className, setup) {
+ if (typeof className !== 'string') {
+ throw new TypeError('Expected className to be a string');
+ }
+
+ if (/[^0-9a-zA-Z_$]/.test(className)) {
+ throw new Error('className contains invalid characters');
+ }
+
+ setup = setup || function (message) {
+ this.message = message;
+ };
+
+ var ErrorClass = function () {
+ Object.defineProperty(this, 'name', {
+ configurable: true,
+ value: className,
+ writable: true
+ });
+
+ captureStackTrace(this, this.constructor);
+
+ setup.apply(this, arguments);
+ };
+
+ inherits(ErrorClass, Error);
+
+ return ErrorClass;
+};
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/license b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/license
new file mode 100644
index 000000000..1aeb74fd2
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Vsevolod Strukchinsky <floatdrop@gmail.com> (github.com/floatdrop)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/node_modules/capture-stack-trace/index.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/node_modules/capture-stack-trace/index.js
new file mode 100644
index 000000000..1b696c8b6
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/node_modules/capture-stack-trace/index.js
@@ -0,0 +1,18 @@
+'use strict';
+
+module.exports = Error.captureStackTrace || function (error) {
+ var container = new Error();
+
+ Object.defineProperty(error, 'stack', {
+ configurable: true,
+ get: function getStack() {
+ var stack = container.stack;
+
+ Object.defineProperty(this, 'stack', {
+ value: stack
+ });
+
+ return stack;
+ }
+ });
+};
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/node_modules/capture-stack-trace/package.json b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/node_modules/capture-stack-trace/package.json
new file mode 100644
index 000000000..f2d2ad9cf
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/node_modules/capture-stack-trace/package.json
@@ -0,0 +1,91 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "capture-stack-trace@^1.0.0",
+ "scope": null,
+ "escapedName": "capture-stack-trace",
+ "name": "capture-stack-trace",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class"
+ ]
+ ],
+ "_from": "capture-stack-trace@>=1.0.0 <2.0.0",
+ "_id": "capture-stack-trace@1.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/latest-version/package-json/got/create-error-class/capture-stack-trace",
+ "_npmUser": {
+ "name": "floatdrop",
+ "email": "floatdrop@gmail.com"
+ },
+ "_npmVersion": "1.4.28",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "capture-stack-trace@^1.0.0",
+ "scope": null,
+ "escapedName": "capture-stack-trace",
+ "name": "capture-stack-trace",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/latest-version/package-json/got/create-error-class"
+ ],
+ "_resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz",
+ "_shasum": "4a6fa07399c26bba47f0b2496b4d0fb408c5550d",
+ "_shrinkwrap": null,
+ "_spec": "capture-stack-trace@^1.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class",
+ "author": {
+ "name": "Vsevolod Strukchinsky",
+ "email": "floatdrop@gmail.com",
+ "url": "github.com/floatdrop"
+ },
+ "bugs": {
+ "url": "https://github.com/floatdrop/capture-stack-trace/issues"
+ },
+ "dependencies": {},
+ "description": "Error.captureStackTrace ponyfill",
+ "devDependencies": {
+ "mocha": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "4a6fa07399c26bba47f0b2496b4d0fb408c5550d",
+ "tarball": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "eb46ce326fa9074b6ce17a94d4b76500321a331f",
+ "homepage": "https://github.com/floatdrop/capture-stack-trace",
+ "keywords": [
+ "Error",
+ "captureStackTrace"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "floatdrop",
+ "email": "floatdrop@gmail.com"
+ }
+ ],
+ "name": "capture-stack-trace",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/floatdrop/capture-stack-trace.git"
+ },
+ "scripts": {
+ "test": "mocha"
+ },
+ "version": "1.0.0"
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/node_modules/capture-stack-trace/readme.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/node_modules/capture-stack-trace/readme.md
new file mode 100644
index 000000000..061c463c4
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/node_modules/capture-stack-trace/readme.md
@@ -0,0 +1,36 @@
+# capture-stack-trace [![Build Status](https://travis-ci.org/floatdrop/capture-stack-trace.svg?branch=master)](https://travis-ci.org/floatdrop/capture-stack-trace)
+
+> Ponyfill for Error.captureStackTrace
+
+
+## Install
+
+```
+$ npm install --save capture-stack-trace
+```
+
+
+## Usage
+
+```js
+var captureStackTrace = require('capture-stack-trace');
+
+captureStackTrace({});
+// => {stack: ...}
+```
+
+
+## API
+
+### captureStackTrace(error)
+
+#### error
+
+*Required*
+Type: `Object`
+
+Target Object, that will recieve stack property.
+
+## License
+
+MIT © [Vsevolod Strukchinsky](http://github.com/floatdrop)
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/package.json b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/package.json
new file mode 100644
index 000000000..79a0b9c6c
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/package.json
@@ -0,0 +1,95 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "create-error-class@^3.0.0",
+ "scope": null,
+ "escapedName": "create-error-class",
+ "name": "create-error-class",
+ "rawSpec": "^3.0.0",
+ "spec": ">=3.0.0 <4.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got"
+ ]
+ ],
+ "_from": "create-error-class@>=3.0.0 <4.0.0",
+ "_id": "create-error-class@3.0.2",
+ "_inCache": true,
+ "_location": "/update-notifier/latest-version/package-json/got/create-error-class",
+ "_nodeVersion": "4.4.1",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/create-error-class-3.0.2.tgz_1459840488945_0.7410781022626907"
+ },
+ "_npmUser": {
+ "name": "floatdrop",
+ "email": "floatdrop@gmail.com"
+ },
+ "_npmVersion": "2.14.20",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "create-error-class@^3.0.0",
+ "scope": null,
+ "escapedName": "create-error-class",
+ "name": "create-error-class",
+ "rawSpec": "^3.0.0",
+ "spec": ">=3.0.0 <4.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/latest-version/package-json/got"
+ ],
+ "_resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
+ "_shasum": "06be7abef947a3f14a30fd610671d401bca8b7b6",
+ "_shrinkwrap": null,
+ "_spec": "create-error-class@^3.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got",
+ "author": {
+ "name": "Vsevolod Strukchinsky",
+ "email": "floatdrop@gmail.com",
+ "url": "github.com/floatdrop"
+ },
+ "bugs": {
+ "url": "https://github.com/floatdrop/create-error-class/issues"
+ },
+ "dependencies": {
+ "capture-stack-trace": "^1.0.0"
+ },
+ "description": "Create Error classes",
+ "devDependencies": {
+ "mocha": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "06be7abef947a3f14a30fd610671d401bca8b7b6",
+ "tarball": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "af3f3979494c4eca0b0259d12035e7fb84fa302f",
+ "homepage": "https://github.com/floatdrop/create-error-class",
+ "keywords": [],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "floatdrop",
+ "email": "floatdrop@gmail.com"
+ }
+ ],
+ "name": "create-error-class",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/floatdrop/create-error-class.git"
+ },
+ "scripts": {
+ "test": "mocha"
+ },
+ "version": "3.0.2"
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/readme.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/readme.md
new file mode 100644
index 000000000..1076de88e
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/create-error-class/readme.md
@@ -0,0 +1,54 @@
+# create-error-class [![Build Status](https://travis-ci.org/floatdrop/create-error-class.svg?branch=master)](https://travis-ci.org/floatdrop/create-error-class)
+
+> Create error class
+
+
+## Install
+
+```
+$ npm install --save create-error-class
+```
+
+
+## Usage
+
+```js
+var createErrorClass = require('create-error-class');
+
+var HTTPError = createErrorClass('HTTPError', function (props) {
+ this.message = 'Status code is ' + props.statusCode;
+});
+
+throw new HTTPError({statusCode: 404});
+```
+
+
+## API
+
+### createErrorClass(className, [setup])
+
+Return constructor of Errors with `className`.
+
+#### className
+
+*Required*
+Type: `string`
+
+Class name of Error Object. Should contain characters from `[0-9a-zA-Z_$]` range.
+
+#### setup
+Type: `function`
+
+Setup function, that will be called after each Error object is created from constructor with context of Error object.
+
+By default `setup` function sets `this.message` as first argument:
+
+```js
+var MyError = createErrorClass('MyError');
+
+new MyError('Something gone wrong!').message; // => 'Something gone wrong!'
+```
+
+## License
+
+MIT © [Vsevolod Strukchinsky](http://github.com/floatdrop)
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/duplexer3/LICENSE.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/duplexer3/LICENSE.md
new file mode 100644
index 000000000..75a50f301
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/duplexer3/LICENSE.md
@@ -0,0 +1,26 @@
+Copyright (c) 2013, Deoxxa Development
+======================================
+All rights reserved.
+--------------------
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+3. Neither the name of Deoxxa Development nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY DEOXXA DEVELOPMENT ''AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL DEOXXA DEVELOPMENT BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/duplexer3/README.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/duplexer3/README.md
new file mode 100644
index 000000000..9f95ddf53
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/duplexer3/README.md
@@ -0,0 +1,115 @@
+# duplexer3 [![Build Status](https://travis-ci.org/floatdrop/duplexer3.svg?branch=master)](https://travis-ci.org/floatdrop/duplexer3) [![Coverage Status](https://coveralls.io/repos/floatdrop/duplexer3/badge.svg?branch=master&service=github)](https://coveralls.io/github/floatdrop/duplexer3?branch=master)
+
+Like [duplexer2](https://github.com/deoxxa/duplexer2) but using Streams3 without readable-stream dependency
+
+```javascript
+var stream = require("stream");
+
+var duplexer3 = require("duplexer3");
+
+var writable = new stream.Writable({objectMode: true}),
+ readable = new stream.Readable({objectMode: true});
+
+writable._write = function _write(input, encoding, done) {
+ if (readable.push(input)) {
+ return done();
+ } else {
+ readable.once("drain", done);
+ }
+};
+
+readable._read = function _read(n) {
+ // no-op
+};
+
+// simulate the readable thing closing after a bit
+writable.once("finish", function() {
+ setTimeout(function() {
+ readable.push(null);
+ }, 500);
+});
+
+var duplex = duplexer3(writable, readable);
+
+duplex.on("data", function(e) {
+ console.log("got data", JSON.stringify(e));
+});
+
+duplex.on("finish", function() {
+ console.log("got finish event");
+});
+
+duplex.on("end", function() {
+ console.log("got end event");
+});
+
+duplex.write("oh, hi there", function() {
+ console.log("finished writing");
+});
+
+duplex.end(function() {
+ console.log("finished ending");
+});
+```
+
+```
+got data "oh, hi there"
+finished writing
+got finish event
+finished ending
+got end event
+```
+
+## Overview
+
+This is a reimplementation of [duplexer](https://www.npmjs.com/package/duplexer) using the
+Streams3 API which is standard in Node as of v4. Everything largely
+works the same.
+
+
+
+## Installation
+
+[Available via `npm`](https://docs.npmjs.com/cli/install):
+
+```
+$ npm i duplexer3
+```
+
+## API
+
+### duplexer3
+
+Creates a new `DuplexWrapper` object, which is the actual class that implements
+most of the fun stuff. All that fun stuff is hidden. DON'T LOOK.
+
+```javascript
+duplexer3([options], writable, readable)
+```
+
+```javascript
+const duplex = duplexer3(new stream.Writable(), new stream.Readable());
+```
+
+Arguments
+
+* __options__ - an object specifying the regular `stream.Duplex` options, as
+ well as the properties described below.
+* __writable__ - a writable stream
+* __readable__ - a readable stream
+
+Options
+
+* __bubbleErrors__ - a boolean value that specifies whether to bubble errors
+ from the underlying readable/writable streams. Default is `true`.
+
+
+## License
+
+3-clause BSD. [A copy](./LICENSE) is included with the source.
+
+## Contact
+
+* GitHub ([deoxxa](http://github.com/deoxxa))
+* Twitter ([@deoxxa](http://twitter.com/deoxxa))
+* Email ([deoxxa@fknsrs.biz](mailto:deoxxa@fknsrs.biz))
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/duplexer3/index.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/duplexer3/index.js
new file mode 100644
index 000000000..1339ffc51
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/duplexer3/index.js
@@ -0,0 +1,76 @@
+"use strict";
+
+var stream = require("stream");
+
+function DuplexWrapper(options, writable, readable) {
+ if (typeof readable === "undefined") {
+ readable = writable;
+ writable = options;
+ options = null;
+ }
+
+ stream.Duplex.call(this, options);
+
+ if (typeof readable.read !== "function") {
+ readable = (new stream.Readable(options)).wrap(readable);
+ }
+
+ this._writable = writable;
+ this._readable = readable;
+ this._waiting = false;
+
+ var self = this;
+
+ writable.once("finish", function() {
+ self.end();
+ });
+
+ this.once("finish", function() {
+ writable.end();
+ });
+
+ readable.on("readable", function() {
+ if (self._waiting) {
+ self._waiting = false;
+ self._read();
+ }
+ });
+
+ readable.once("end", function() {
+ self.push(null);
+ });
+
+ if (!options || typeof options.bubbleErrors === "undefined" || options.bubbleErrors) {
+ writable.on("error", function(err) {
+ self.emit("error", err);
+ });
+
+ readable.on("error", function(err) {
+ self.emit("error", err);
+ });
+ }
+}
+
+DuplexWrapper.prototype = Object.create(stream.Duplex.prototype, {constructor: {value: DuplexWrapper}});
+
+DuplexWrapper.prototype._write = function _write(input, encoding, done) {
+ this._writable.write(input, encoding, done);
+};
+
+DuplexWrapper.prototype._read = function _read() {
+ var buf;
+ var reads = 0;
+ while ((buf = this._readable.read()) !== null) {
+ this.push(buf);
+ reads++;
+ }
+ if (reads === 0) {
+ this._waiting = true;
+ }
+};
+
+module.exports = function duplex2(options, writable, readable) {
+ return new DuplexWrapper(options, writable, readable);
+};
+
+module.exports.DuplexWrapper = DuplexWrapper;
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/duplexer3/package.json b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/duplexer3/package.json
new file mode 100644
index 000000000..b25f53170
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/duplexer3/package.json
@@ -0,0 +1,96 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "duplexer3@^0.1.4",
+ "scope": null,
+ "escapedName": "duplexer3",
+ "name": "duplexer3",
+ "rawSpec": "^0.1.4",
+ "spec": ">=0.1.4 <0.2.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got"
+ ]
+ ],
+ "_from": "duplexer3@>=0.1.4 <0.2.0",
+ "_id": "duplexer3@0.1.4",
+ "_inCache": true,
+ "_location": "/update-notifier/latest-version/package-json/got/duplexer3",
+ "_nodeVersion": "4.2.3",
+ "_npmUser": {
+ "name": "floatdrop",
+ "email": "floatdrop@gmail.com"
+ },
+ "_npmVersion": "2.14.7",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "duplexer3@^0.1.4",
+ "scope": null,
+ "escapedName": "duplexer3",
+ "name": "duplexer3",
+ "rawSpec": "^0.1.4",
+ "spec": ">=0.1.4 <0.2.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/latest-version/package-json/got"
+ ],
+ "_resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
+ "_shasum": "ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2",
+ "_shrinkwrap": null,
+ "_spec": "duplexer3@^0.1.4",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got",
+ "author": {
+ "name": "Conrad Pankoff",
+ "email": "deoxxa@fknsrs.biz",
+ "url": "http://www.fknsrs.biz/"
+ },
+ "bugs": {
+ "url": "https://github.com/floatdrop/duplexer3/issues"
+ },
+ "dependencies": {},
+ "description": "Like duplexer but using streams3",
+ "devDependencies": {
+ "mocha": "^2.2.5"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2",
+ "tarball": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz"
+ },
+ "engine": {
+ "node": ">=4"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "810f45fd7216a4ec4585e673ad28f05852ed05a6",
+ "homepage": "https://github.com/floatdrop/duplexer3",
+ "keywords": [
+ "duplex",
+ "duplexer",
+ "stream",
+ "stream3",
+ "join",
+ "combine"
+ ],
+ "license": "BSD-3-Clause",
+ "maintainers": [
+ {
+ "name": "floatdrop",
+ "email": "floatdrop@gmail.com"
+ }
+ ],
+ "name": "duplexer3",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/floatdrop/duplexer3.git"
+ },
+ "scripts": {
+ "test": "mocha -R tap"
+ },
+ "version": "0.1.4"
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/get-stream/buffer-stream.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/get-stream/buffer-stream.js
new file mode 100644
index 000000000..ae45d3d9e
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/get-stream/buffer-stream.js
@@ -0,0 +1,51 @@
+'use strict';
+const PassThrough = require('stream').PassThrough;
+
+module.exports = opts => {
+ opts = Object.assign({}, opts);
+
+ const array = opts.array;
+ let encoding = opts.encoding;
+ const buffer = encoding === 'buffer';
+ let objectMode = false;
+
+ if (array) {
+ objectMode = !(encoding || buffer);
+ } else {
+ encoding = encoding || 'utf8';
+ }
+
+ if (buffer) {
+ encoding = null;
+ }
+
+ let len = 0;
+ const ret = [];
+ const stream = new PassThrough({objectMode});
+
+ if (encoding) {
+ stream.setEncoding(encoding);
+ }
+
+ stream.on('data', chunk => {
+ ret.push(chunk);
+
+ if (objectMode) {
+ len = ret.length;
+ } else {
+ len += chunk.length;
+ }
+ });
+
+ stream.getBufferedValue = () => {
+ if (array) {
+ return ret;
+ }
+
+ return buffer ? Buffer.concat(ret, len) : ret.join('');
+ };
+
+ stream.getBufferedLength = () => len;
+
+ return stream;
+};
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/get-stream/index.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/get-stream/index.js
new file mode 100644
index 000000000..2dc5ee96a
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/get-stream/index.js
@@ -0,0 +1,51 @@
+'use strict';
+const bufferStream = require('./buffer-stream');
+
+function getStream(inputStream, opts) {
+ if (!inputStream) {
+ return Promise.reject(new Error('Expected a stream'));
+ }
+
+ opts = Object.assign({maxBuffer: Infinity}, opts);
+
+ const maxBuffer = opts.maxBuffer;
+ let stream;
+ let clean;
+
+ const p = new Promise((resolve, reject) => {
+ const error = err => {
+ if (err) { // null check
+ err.bufferedData = stream.getBufferedValue();
+ }
+
+ reject(err);
+ };
+
+ stream = bufferStream(opts);
+ inputStream.once('error', error);
+ inputStream.pipe(stream);
+
+ stream.on('data', () => {
+ if (stream.getBufferedLength() > maxBuffer) {
+ reject(new Error('maxBuffer exceeded'));
+ }
+ });
+ stream.once('error', error);
+ stream.on('end', resolve);
+
+ clean = () => {
+ // some streams doesn't implement the `stream.Readable` interface correctly
+ if (inputStream.unpipe) {
+ inputStream.unpipe(stream);
+ }
+ };
+ });
+
+ p.then(clean, clean);
+
+ return p.then(() => stream.getBufferedValue());
+}
+
+module.exports = getStream;
+module.exports.buffer = (stream, opts) => getStream(stream, Object.assign({}, opts, {encoding: 'buffer'}));
+module.exports.array = (stream, opts) => getStream(stream, Object.assign({}, opts, {array: true}));
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/get-stream/license b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/get-stream/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/get-stream/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/get-stream/package.json b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/get-stream/package.json
new file mode 100644
index 000000000..5f7ad687a
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/get-stream/package.json
@@ -0,0 +1,120 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "get-stream@^3.0.0",
+ "scope": null,
+ "escapedName": "get-stream",
+ "name": "get-stream",
+ "rawSpec": "^3.0.0",
+ "spec": ">=3.0.0 <4.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got"
+ ]
+ ],
+ "_from": "get-stream@>=3.0.0 <4.0.0",
+ "_id": "get-stream@3.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/latest-version/package-json/got/get-stream",
+ "_nodeVersion": "4.6.2",
+ "_npmOperationalInternal": {
+ "host": "packages-18-east.internal.npmjs.com",
+ "tmp": "tmp/get-stream-3.0.0.tgz_1479869385406_0.47692562686279416"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.15.11",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "get-stream@^3.0.0",
+ "scope": null,
+ "escapedName": "get-stream",
+ "name": "get-stream",
+ "rawSpec": "^3.0.0",
+ "spec": ">=3.0.0 <4.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/latest-version/package-json/got"
+ ],
+ "_resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "_shasum": "8e943d1358dc37555054ecbe2edb05aa174ede14",
+ "_shrinkwrap": null,
+ "_spec": "get-stream@^3.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/get-stream/issues"
+ },
+ "dependencies": {},
+ "description": "Get a stream as a string, buffer, or array",
+ "devDependencies": {
+ "ava": "*",
+ "into-stream": "^3.0.0",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "8e943d1358dc37555054ecbe2edb05aa174ede14",
+ "tarball": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "files": [
+ "index.js",
+ "buffer-stream.js"
+ ],
+ "gitHead": "3023bc31dec6680dda4f935a2b320b3a4f18c815",
+ "homepage": "https://github.com/sindresorhus/get-stream#readme",
+ "keywords": [
+ "get",
+ "stream",
+ "promise",
+ "concat",
+ "string",
+ "str",
+ "text",
+ "buffer",
+ "read",
+ "data",
+ "consume",
+ "readable",
+ "readablestream",
+ "array",
+ "object",
+ "obj"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "jamestalmage",
+ "email": "james@talmage.io"
+ },
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "get-stream",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/get-stream.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "3.0.0",
+ "xo": {
+ "esnext": true
+ }
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/get-stream/readme.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/get-stream/readme.md
new file mode 100644
index 000000000..73b188fb4
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/get-stream/readme.md
@@ -0,0 +1,117 @@
+# get-stream [![Build Status](https://travis-ci.org/sindresorhus/get-stream.svg?branch=master)](https://travis-ci.org/sindresorhus/get-stream)
+
+> Get a stream as a string, buffer, or array
+
+
+## Install
+
+```
+$ npm install --save get-stream
+```
+
+
+## Usage
+
+```js
+const fs = require('fs');
+const getStream = require('get-stream');
+const stream = fs.createReadStream('unicorn.txt');
+
+getStream(stream).then(str => {
+ console.log(str);
+ /*
+ ,,))))))));,
+ __)))))))))))))),
+ \|/ -\(((((''''((((((((.
+ -*-==//////(('' . `)))))),
+ /|\ ))| o ;-. '((((( ,(,
+ ( `| / ) ;))))' ,_))^;(~
+ | | | ,))((((_ _____------~~~-. %,;(;(>';'~
+ o_); ; )))(((` ~---~ `:: \ %%~~)(v;(`('~
+ ; ''''```` `: `:::|\,__,%% );`'; ~
+ | _ ) / `:|`----' `-'
+ ______/\/~ | / /
+ /~;;.____/;;' / ___--,-( `;;;/
+ / // _;______;'------~~~~~ /;;/\ /
+ // | | / ; \;;,\
+ (<_ | ; /',/-----' _>
+ \_| ||_ //~;~~~~~~~~~
+ `\_| (,~~
+ \~\
+ ~~
+ */
+});
+```
+
+
+## API
+
+The methods returns a promise that resolves when the `end` event fires on the stream, indicating that there is no more data to be read. The stream is switched to flowing mode.
+
+### getStream(stream, [options])
+
+Get the `stream` as a string.
+
+#### options
+
+##### encoding
+
+Type: `string`<br>
+Default: `utf8`
+
+[Encoding](https://nodejs.org/api/buffer.html#buffer_buffer) of the incoming stream.
+
+##### maxBuffer
+
+Type: `number`<br>
+Default: `Infinity`
+
+Maximum length of the returned string. If it exceeds this value before the stream ends, the promise will be rejected.
+
+### getStream.buffer(stream, [options])
+
+Get the `stream` as a buffer.
+
+It honors the `maxBuffer` option as above, but it refers to byte length rather than string length.
+
+### getStream.array(stream, [options])
+
+Get the `stream` as an array of values.
+
+It honors both the `maxBuffer` and `encoding` options. The behavior changes slightly based on the encoding chosen:
+
+- When `encoding` is unset, it assumes an [object mode stream](https://nodesource.com/blog/understanding-object-streams/) and collects values emitted from `stream` unmodified. In this case `maxBuffer` refers to the number of items in the array (not the sum of their sizes).
+
+- When `encoding` is set to `buffer`, it collects an array of buffers. `maxBuffer` refers to the summed byte lengths of every buffer in the array.
+
+- When `encoding` is set to anything else, it collects an array of strings. `maxBuffer` refers to the summed character lengths of every string in the array.
+
+
+## Errors
+
+If the input stream emits an `error` event, the promise will be rejected with the error. The buffered data will be attached to the `bufferedData` property of the error.
+
+```js
+getStream(streamThatErrorsAtTheEnd('unicorn'))
+ .catch(err => {
+ console.log(err.bufferedData);
+ //=> 'unicorn'
+ });
+```
+
+
+## FAQ
+
+### How is this different from [`concat-stream`](https://github.com/maxogden/concat-stream)?
+
+This module accepts a stream instead of being one and returns a promise instead of using a callback. The API is simpler and it only supports returning a string, buffer, or array. It doesn't have a fragile type inference. You explicitly choose what you want. And it doesn't depend on the huge `readable-stream` package.
+
+
+## Related
+
+- [get-stdin](https://github.com/sindresorhus/get-stdin) - Get stdin as a string or buffer
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-redirect/index.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-redirect/index.js
new file mode 100644
index 000000000..75ec0090e
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-redirect/index.js
@@ -0,0 +1,14 @@
+'use strict';
+module.exports = function (x) {
+ if (typeof x !== 'number') {
+ throw new TypeError('Expected a number');
+ }
+
+ return x === 300 ||
+ x === 301 ||
+ x === 302 ||
+ x === 303 ||
+ x === 305 ||
+ x === 307 ||
+ x === 308;
+};
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-redirect/license b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-redirect/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-redirect/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-redirect/package.json b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-redirect/package.json
new file mode 100644
index 000000000..85b9fbc27
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-redirect/package.json
@@ -0,0 +1,99 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "is-redirect@^1.0.0",
+ "scope": null,
+ "escapedName": "is-redirect",
+ "name": "is-redirect",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got"
+ ]
+ ],
+ "_from": "is-redirect@>=1.0.0 <2.0.0",
+ "_id": "is-redirect@1.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/latest-version/package-json/got/is-redirect",
+ "_nodeVersion": "0.12.4",
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.10.1",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "is-redirect@^1.0.0",
+ "scope": null,
+ "escapedName": "is-redirect",
+ "name": "is-redirect",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/latest-version/package-json/got"
+ ],
+ "_resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
+ "_shasum": "1d03dded53bd8db0f30c26e4f95d36fc7c87dc24",
+ "_shrinkwrap": null,
+ "_spec": "is-redirect@^1.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/is-redirect/issues"
+ },
+ "dependencies": {},
+ "description": "Check if a number is a redirect HTTP status code",
+ "devDependencies": {
+ "ava": "0.0.4"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "1d03dded53bd8db0f30c26e4f95d36fc7c87dc24",
+ "tarball": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "53bc816ba54447a55676930138151feb0f917c18",
+ "homepage": "https://github.com/sindresorhus/is-redirect",
+ "keywords": [
+ "redirect",
+ "http",
+ "https",
+ "status",
+ "code",
+ "codes",
+ "is",
+ "check",
+ "detect"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "is-redirect",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/is-redirect.git"
+ },
+ "scripts": {
+ "test": "node test.js"
+ },
+ "version": "1.0.0"
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-redirect/readme.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-redirect/readme.md
new file mode 100644
index 000000000..e9f0a393d
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-redirect/readme.md
@@ -0,0 +1,28 @@
+# is-redirect [![Build Status](https://travis-ci.org/sindresorhus/is-redirect.svg?branch=master)](https://travis-ci.org/sindresorhus/is-redirect)
+
+> Check if a number is a [redirect HTTP status code](http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_Redirection)
+
+
+## Install
+
+```
+$ npm install --save is-redirect
+```
+
+
+## Usage
+
+```js
+var isRedirect = require('is-redirect');
+
+isRedirect(302);
+//=> true
+
+isRedirect(200);
+//=> false
+```
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-retry-allowed/index.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-retry-allowed/index.js
new file mode 100644
index 000000000..663ee338f
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-retry-allowed/index.js
@@ -0,0 +1,60 @@
+'use strict';
+
+var WHITELIST = [
+ 'ETIMEDOUT',
+ 'ECONNRESET',
+ 'EADDRINUSE',
+ 'ESOCKETTIMEDOUT',
+ 'ECONNREFUSED',
+ 'EPIPE'
+];
+
+var BLACKLIST = [
+ 'ENOTFOUND',
+ 'ENETUNREACH',
+
+ // SSL errors from https://github.com/nodejs/node/blob/ed3d8b13ee9a705d89f9e0397d9e96519e7e47ac/src/node_crypto.cc#L1950
+ 'UNABLE_TO_GET_ISSUER_CERT',
+ 'UNABLE_TO_GET_CRL',
+ 'UNABLE_TO_DECRYPT_CERT_SIGNATURE',
+ 'UNABLE_TO_DECRYPT_CRL_SIGNATURE',
+ 'UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY',
+ 'CERT_SIGNATURE_FAILURE',
+ 'CRL_SIGNATURE_FAILURE',
+ 'CERT_NOT_YET_VALID',
+ 'CERT_HAS_EXPIRED',
+ 'CRL_NOT_YET_VALID',
+ 'CRL_HAS_EXPIRED',
+ 'ERROR_IN_CERT_NOT_BEFORE_FIELD',
+ 'ERROR_IN_CERT_NOT_AFTER_FIELD',
+ 'ERROR_IN_CRL_LAST_UPDATE_FIELD',
+ 'ERROR_IN_CRL_NEXT_UPDATE_FIELD',
+ 'OUT_OF_MEM',
+ 'DEPTH_ZERO_SELF_SIGNED_CERT',
+ 'SELF_SIGNED_CERT_IN_CHAIN',
+ 'UNABLE_TO_GET_ISSUER_CERT_LOCALLY',
+ 'UNABLE_TO_VERIFY_LEAF_SIGNATURE',
+ 'CERT_CHAIN_TOO_LONG',
+ 'CERT_REVOKED',
+ 'INVALID_CA',
+ 'PATH_LENGTH_EXCEEDED',
+ 'INVALID_PURPOSE',
+ 'CERT_UNTRUSTED',
+ 'CERT_REJECTED'
+];
+
+module.exports = function (err) {
+ if (!err || !err.code) {
+ return true;
+ }
+
+ if (WHITELIST.indexOf(err.code) !== -1) {
+ return true;
+ }
+
+ if (BLACKLIST.indexOf(err.code) !== -1) {
+ return false;
+ }
+
+ return true;
+};
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-retry-allowed/license b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-retry-allowed/license
new file mode 100644
index 000000000..1aeb74fd2
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-retry-allowed/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Vsevolod Strukchinsky <floatdrop@gmail.com> (github.com/floatdrop)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-retry-allowed/package.json b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-retry-allowed/package.json
new file mode 100644
index 000000000..8e177dd43
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-retry-allowed/package.json
@@ -0,0 +1,98 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "is-retry-allowed@^1.0.0",
+ "scope": null,
+ "escapedName": "is-retry-allowed",
+ "name": "is-retry-allowed",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got"
+ ]
+ ],
+ "_from": "is-retry-allowed@>=1.0.0 <2.0.0",
+ "_id": "is-retry-allowed@1.1.0",
+ "_inCache": true,
+ "_location": "/update-notifier/latest-version/package-json/got/is-retry-allowed",
+ "_nodeVersion": "4.4.7",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/is-retry-allowed-1.1.0.tgz_1467498831328_0.0396464669611305"
+ },
+ "_npmUser": {
+ "name": "floatdrop",
+ "email": "floatdrop@gmail.com"
+ },
+ "_npmVersion": "2.15.8",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "is-retry-allowed@^1.0.0",
+ "scope": null,
+ "escapedName": "is-retry-allowed",
+ "name": "is-retry-allowed",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/latest-version/package-json/got"
+ ],
+ "_resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz",
+ "_shasum": "11a060568b67339444033d0125a61a20d564fb34",
+ "_shrinkwrap": null,
+ "_spec": "is-retry-allowed@^1.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got",
+ "author": {
+ "name": "Vsevolod Strukchinsky",
+ "email": "floatdrop@gmail.com",
+ "url": "github.com/floatdrop"
+ },
+ "bugs": {
+ "url": "https://github.com/floatdrop/is-retry-allowed/issues"
+ },
+ "dependencies": {},
+ "description": "My prime module",
+ "devDependencies": {
+ "ava": "^0.8.0",
+ "xo": "^0.12.1"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "11a060568b67339444033d0125a61a20d564fb34",
+ "tarball": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "8ca0d01b23b0a92bcf232d97801c3f08c41231a3",
+ "homepage": "https://github.com/floatdrop/is-retry-allowed#readme",
+ "keywords": [],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "floatdrop",
+ "email": "floatdrop@gmail.com"
+ },
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "is-retry-allowed",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/floatdrop/is-retry-allowed.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "1.1.0"
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-retry-allowed/readme.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-retry-allowed/readme.md
new file mode 100644
index 000000000..4212d099b
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-retry-allowed/readme.md
@@ -0,0 +1,42 @@
+# is-retry-allowed [![Build Status](https://travis-ci.org/floatdrop/is-retry-allowed.svg?branch=master)](https://travis-ci.org/floatdrop/is-retry-allowed)
+
+Is retry allowed for Error?
+
+
+## Install
+
+```
+$ npm install --save is-retry-allowed
+```
+
+
+## Usage
+
+```js
+const isRetryAllowed = require('is-retry-allowed');
+
+isRetryAllowed({code: 'ETIMEDOUT'});
+//=> true
+
+isRetryAllowed({code: 'ENOTFOUND'});
+//=> false
+
+isRetryAllowed({});
+//=> true
+```
+
+
+## API
+
+### isRetryAllowed(error)
+
+#### error
+
+Type: `object`
+
+Object with `code` property, which will be used to determine retry.
+
+
+## License
+
+MIT © [Vsevolod Strukchinsky](http://github.com/floatdrop)
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-stream/index.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-stream/index.js
new file mode 100644
index 000000000..6f7ec91a4
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-stream/index.js
@@ -0,0 +1,21 @@
+'use strict';
+
+var isStream = module.exports = function (stream) {
+ return stream !== null && typeof stream === 'object' && typeof stream.pipe === 'function';
+};
+
+isStream.writable = function (stream) {
+ return isStream(stream) && stream.writable !== false && typeof stream._write === 'function' && typeof stream._writableState === 'object';
+};
+
+isStream.readable = function (stream) {
+ return isStream(stream) && stream.readable !== false && typeof stream._read === 'function' && typeof stream._readableState === 'object';
+};
+
+isStream.duplex = function (stream) {
+ return isStream.writable(stream) && isStream.readable(stream);
+};
+
+isStream.transform = function (stream) {
+ return isStream.duplex(stream) && typeof stream._transform === 'function' && typeof stream._transformState === 'object';
+};
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-stream/license b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-stream/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-stream/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-stream/package.json b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-stream/package.json
new file mode 100644
index 000000000..a97d5ad6f
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-stream/package.json
@@ -0,0 +1,118 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "is-stream@^1.1.0",
+ "scope": null,
+ "escapedName": "is-stream",
+ "name": "is-stream",
+ "rawSpec": "^1.1.0",
+ "spec": ">=1.1.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/boxen/node_modules/term-size/node_modules/execa"
+ ],
+ [
+ {
+ "raw": "is-stream@^1.0.0",
+ "scope": null,
+ "escapedName": "is-stream",
+ "name": "is-stream",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got"
+ ]
+ ],
+ "_from": "is-stream@^1.0.0",
+ "_id": "is-stream@1.1.0",
+ "_inCache": true,
+ "_location": "/update-notifier/latest-version/package-json/got/is-stream",
+ "_nodeVersion": "4.4.2",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/is-stream-1.1.0.tgz_1460446915184_0.806101513793692"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.15.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "is-stream@^1.0.0",
+ "scope": null,
+ "escapedName": "is-stream",
+ "name": "is-stream",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/latest-version/package-json/got"
+ ],
+ "_resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "_shasum": "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44",
+ "_shrinkwrap": null,
+ "_spec": "is-stream@^1.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/is-stream/issues"
+ },
+ "dependencies": {},
+ "description": "Check if something is a Node.js stream",
+ "devDependencies": {
+ "ava": "*",
+ "tempfile": "^1.1.0",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44",
+ "tarball": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "e21d73f1028c189d16150cea52641059b0936310",
+ "homepage": "https://github.com/sindresorhus/is-stream#readme",
+ "keywords": [
+ "stream",
+ "type",
+ "streams",
+ "writable",
+ "readable",
+ "duplex",
+ "transform",
+ "check",
+ "detect",
+ "is"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "is-stream",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/is-stream.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "1.1.0"
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-stream/readme.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-stream/readme.md
new file mode 100644
index 000000000..d8afce81d
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/is-stream/readme.md
@@ -0,0 +1,42 @@
+# is-stream [![Build Status](https://travis-ci.org/sindresorhus/is-stream.svg?branch=master)](https://travis-ci.org/sindresorhus/is-stream)
+
+> Check if something is a [Node.js stream](https://nodejs.org/api/stream.html)
+
+
+## Install
+
+```
+$ npm install --save is-stream
+```
+
+
+## Usage
+
+```js
+const fs = require('fs');
+const isStream = require('is-stream');
+
+isStream(fs.createReadStream('unicorn.png'));
+//=> true
+
+isStream({});
+//=> false
+```
+
+
+## API
+
+### isStream(stream)
+
+#### isStream.writable(stream)
+
+#### isStream.readable(stream)
+
+#### isStream.duplex(stream)
+
+#### isStream.transform(stream)
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/lowercase-keys/index.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/lowercase-keys/index.js
new file mode 100644
index 000000000..b8d889836
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/lowercase-keys/index.js
@@ -0,0 +1,11 @@
+'use strict';
+module.exports = function (obj) {
+ var ret = {};
+ var keys = Object.keys(Object(obj));
+
+ for (var i = 0; i < keys.length; i++) {
+ ret[keys[i].toLowerCase()] = obj[keys[i]];
+ }
+
+ return ret;
+};
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/lowercase-keys/package.json b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/lowercase-keys/package.json
new file mode 100644
index 000000000..8569ff683
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/lowercase-keys/package.json
@@ -0,0 +1,98 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "lowercase-keys@^1.0.0",
+ "scope": null,
+ "escapedName": "lowercase-keys",
+ "name": "lowercase-keys",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got"
+ ]
+ ],
+ "_from": "lowercase-keys@>=1.0.0 <2.0.0",
+ "_id": "lowercase-keys@1.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/latest-version/package-json/got/lowercase-keys",
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "1.4.28",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "lowercase-keys@^1.0.0",
+ "scope": null,
+ "escapedName": "lowercase-keys",
+ "name": "lowercase-keys",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/latest-version/package-json/got"
+ ],
+ "_resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz",
+ "_shasum": "4e3366b39e7f5457e35f1324bdf6f88d0bfc7306",
+ "_shrinkwrap": null,
+ "_spec": "lowercase-keys@^1.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/lowercase-keys/issues"
+ },
+ "dependencies": {},
+ "description": "Lowercase the keys of an object",
+ "devDependencies": {
+ "ava": "0.0.4"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "4e3366b39e7f5457e35f1324bdf6f88d0bfc7306",
+ "tarball": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "4b1423164b551faa7a51a5b8f903c51e00c0ea94",
+ "homepage": "https://github.com/sindresorhus/lowercase-keys",
+ "keywords": [
+ "object",
+ "assign",
+ "extend",
+ "properties",
+ "lowercase",
+ "lower-case",
+ "case",
+ "keys",
+ "key"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "lowercase-keys",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/lowercase-keys.git"
+ },
+ "scripts": {
+ "test": "node test.js"
+ },
+ "version": "1.0.0"
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/lowercase-keys/readme.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/lowercase-keys/readme.md
new file mode 100644
index 000000000..dc65770a3
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/lowercase-keys/readme.md
@@ -0,0 +1,33 @@
+# lowercase-keys [![Build Status](https://travis-ci.org/sindresorhus/lowercase-keys.svg?branch=master)](https://travis-ci.org/sindresorhus/lowercase-keys)
+
+> Lowercase the keys of an object
+
+
+## Install
+
+```
+$ npm install --save lowercase-keys
+```
+
+
+## Usage
+
+```js
+var lowercaseKeys = require('lowercase-keys');
+
+lowercaseKeys({FOO: true, bAr: false});
+//=> {foo: true, bar: false}
+```
+
+
+## API
+
+### lowercaseKeys(object)
+
+Lowercases the keys and returns a new object.
+
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/.travis.yml b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/.travis.yml
new file mode 100644
index 000000000..7b20f28cb
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/.travis.yml
@@ -0,0 +1,7 @@
+language: node_js
+node_js:
+ - 'node'
+ - '5'
+ - '4'
+ - '0.12'
+ - '0.10'
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/LICENSE b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/LICENSE
new file mode 100644
index 000000000..0c068ceec
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Feross Aboukhadijeh
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/README.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/README.md
new file mode 100644
index 000000000..96eb387aa
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/README.md
@@ -0,0 +1,581 @@
+# safe-buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][npm-url]
+
+#### Safer Node.js Buffer API
+
+**Use the new Node.js v6 Buffer APIs (`Buffer.from`, `Buffer.alloc`,
+`Buffer.allocUnsafe`, `Buffer.allocUnsafeSlow`) in Node.js v0.10, v0.12, v4.x, and v5.x.**
+
+**Uses the built-in implementations when available.**
+
+[travis-image]: https://img.shields.io/travis/feross/safe-buffer.svg
+[travis-url]: https://travis-ci.org/feross/safe-buffer
+[npm-image]: https://img.shields.io/npm/v/safe-buffer.svg
+[npm-url]: https://npmjs.org/package/safe-buffer
+[downloads-image]: https://img.shields.io/npm/dm/safe-buffer.svg
+
+## install
+
+```
+npm install safe-buffer
+```
+
+## usage
+
+The goal of this package is to provide a safe replacement for the node.js `Buffer`.
+
+It's a drop-in replacement for `Buffer`. You can use it by adding one `require` line to
+the top of your node.js modules:
+
+```js
+var Buffer = require('safe-buffer').Buffer
+
+// Existing buffer code will continue to work without issues:
+
+new Buffer('hey', 'utf8')
+new Buffer([1, 2, 3], 'utf8')
+new Buffer(obj)
+new Buffer(16) // create an uninitialized buffer (potentially unsafe)
+
+// But you can use these new explicit APIs to make clear what you want:
+
+Buffer.from('hey', 'utf8') // convert from many types to a Buffer
+Buffer.alloc(16) // create a zero-filled buffer (safe)
+Buffer.allocUnsafe(16) // create an uninitialized buffer (potentially unsafe)
+```
+
+## api
+
+### Class Method: Buffer.from(array)
+<!-- YAML
+added: v3.0.0
+-->
+
+* `array` {Array}
+
+Allocates a new `Buffer` using an `array` of octets.
+
+```js
+const buf = Buffer.from([0x62,0x75,0x66,0x66,0x65,0x72]);
+ // creates a new Buffer containing ASCII bytes
+ // ['b','u','f','f','e','r']
+```
+
+A `TypeError` will be thrown if `array` is not an `Array`.
+
+### Class Method: Buffer.from(arrayBuffer[, byteOffset[, length]])
+<!-- YAML
+added: v5.10.0
+-->
+
+* `arrayBuffer` {ArrayBuffer} The `.buffer` property of a `TypedArray` or
+ a `new ArrayBuffer()`
+* `byteOffset` {Number} Default: `0`
+* `length` {Number} Default: `arrayBuffer.length - byteOffset`
+
+When passed a reference to the `.buffer` property of a `TypedArray` instance,
+the newly created `Buffer` will share the same allocated memory as the
+TypedArray.
+
+```js
+const arr = new Uint16Array(2);
+arr[0] = 5000;
+arr[1] = 4000;
+
+const buf = Buffer.from(arr.buffer); // shares the memory with arr;
+
+console.log(buf);
+ // Prints: <Buffer 88 13 a0 0f>
+
+// changing the TypedArray changes the Buffer also
+arr[1] = 6000;
+
+console.log(buf);
+ // Prints: <Buffer 88 13 70 17>
+```
+
+The optional `byteOffset` and `length` arguments specify a memory range within
+the `arrayBuffer` that will be shared by the `Buffer`.
+
+```js
+const ab = new ArrayBuffer(10);
+const buf = Buffer.from(ab, 0, 2);
+console.log(buf.length);
+ // Prints: 2
+```
+
+A `TypeError` will be thrown if `arrayBuffer` is not an `ArrayBuffer`.
+
+### Class Method: Buffer.from(buffer)
+<!-- YAML
+added: v3.0.0
+-->
+
+* `buffer` {Buffer}
+
+Copies the passed `buffer` data onto a new `Buffer` instance.
+
+```js
+const buf1 = Buffer.from('buffer');
+const buf2 = Buffer.from(buf1);
+
+buf1[0] = 0x61;
+console.log(buf1.toString());
+ // 'auffer'
+console.log(buf2.toString());
+ // 'buffer' (copy is not changed)
+```
+
+A `TypeError` will be thrown if `buffer` is not a `Buffer`.
+
+### Class Method: Buffer.from(str[, encoding])
+<!-- YAML
+added: v5.10.0
+-->
+
+* `str` {String} String to encode.
+* `encoding` {String} Encoding to use, Default: `'utf8'`
+
+Creates a new `Buffer` containing the given JavaScript string `str`. If
+provided, the `encoding` parameter identifies the character encoding.
+If not provided, `encoding` defaults to `'utf8'`.
+
+```js
+const buf1 = Buffer.from('this is a tést');
+console.log(buf1.toString());
+ // prints: this is a tést
+console.log(buf1.toString('ascii'));
+ // prints: this is a tC)st
+
+const buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex');
+console.log(buf2.toString());
+ // prints: this is a tést
+```
+
+A `TypeError` will be thrown if `str` is not a string.
+
+### Class Method: Buffer.alloc(size[, fill[, encoding]])
+<!-- YAML
+added: v5.10.0
+-->
+
+* `size` {Number}
+* `fill` {Value} Default: `undefined`
+* `encoding` {String} Default: `utf8`
+
+Allocates a new `Buffer` of `size` bytes. If `fill` is `undefined`, the
+`Buffer` will be *zero-filled*.
+
+```js
+const buf = Buffer.alloc(5);
+console.log(buf);
+ // <Buffer 00 00 00 00 00>
+```
+
+The `size` must be less than or equal to the value of
+`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is
+`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will
+be created if a `size` less than or equal to 0 is specified.
+
+If `fill` is specified, the allocated `Buffer` will be initialized by calling
+`buf.fill(fill)`. See [`buf.fill()`][] for more information.
+
+```js
+const buf = Buffer.alloc(5, 'a');
+console.log(buf);
+ // <Buffer 61 61 61 61 61>
+```
+
+If both `fill` and `encoding` are specified, the allocated `Buffer` will be
+initialized by calling `buf.fill(fill, encoding)`. For example:
+
+```js
+const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64');
+console.log(buf);
+ // <Buffer 68 65 6c 6c 6f 20 77 6f 72 6c 64>
+```
+
+Calling `Buffer.alloc(size)` can be significantly slower than the alternative
+`Buffer.allocUnsafe(size)` but ensures that the newly created `Buffer` instance
+contents will *never contain sensitive data*.
+
+A `TypeError` will be thrown if `size` is not a number.
+
+### Class Method: Buffer.allocUnsafe(size)
+<!-- YAML
+added: v5.10.0
+-->
+
+* `size` {Number}
+
+Allocates a new *non-zero-filled* `Buffer` of `size` bytes. The `size` must
+be less than or equal to the value of `require('buffer').kMaxLength` (on 64-bit
+architectures, `kMaxLength` is `(2^31)-1`). Otherwise, a [`RangeError`][] is
+thrown. A zero-length Buffer will be created if a `size` less than or equal to
+0 is specified.
+
+The underlying memory for `Buffer` instances created in this way is *not
+initialized*. The contents of the newly created `Buffer` are unknown and
+*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such
+`Buffer` instances to zeroes.
+
+```js
+const buf = Buffer.allocUnsafe(5);
+console.log(buf);
+ // <Buffer 78 e0 82 02 01>
+ // (octets will be different, every time)
+buf.fill(0);
+console.log(buf);
+ // <Buffer 00 00 00 00 00>
+```
+
+A `TypeError` will be thrown if `size` is not a number.
+
+Note that the `Buffer` module pre-allocates an internal `Buffer` instance of
+size `Buffer.poolSize` that is used as a pool for the fast allocation of new
+`Buffer` instances created using `Buffer.allocUnsafe(size)` (and the deprecated
+`new Buffer(size)` constructor) only when `size` is less than or equal to
+`Buffer.poolSize >> 1` (floor of `Buffer.poolSize` divided by two). The default
+value of `Buffer.poolSize` is `8192` but can be modified.
+
+Use of this pre-allocated internal memory pool is a key difference between
+calling `Buffer.alloc(size, fill)` vs. `Buffer.allocUnsafe(size).fill(fill)`.
+Specifically, `Buffer.alloc(size, fill)` will *never* use the internal Buffer
+pool, while `Buffer.allocUnsafe(size).fill(fill)` *will* use the internal
+Buffer pool if `size` is less than or equal to half `Buffer.poolSize`. The
+difference is subtle but can be important when an application requires the
+additional performance that `Buffer.allocUnsafe(size)` provides.
+
+### Class Method: Buffer.allocUnsafeSlow(size)
+<!-- YAML
+added: v5.10.0
+-->
+
+* `size` {Number}
+
+Allocates a new *non-zero-filled* and non-pooled `Buffer` of `size` bytes. The
+`size` must be less than or equal to the value of
+`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is
+`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will
+be created if a `size` less than or equal to 0 is specified.
+
+The underlying memory for `Buffer` instances created in this way is *not
+initialized*. The contents of the newly created `Buffer` are unknown and
+*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such
+`Buffer` instances to zeroes.
+
+When using `Buffer.allocUnsafe()` to allocate new `Buffer` instances,
+allocations under 4KB are, by default, sliced from a single pre-allocated
+`Buffer`. This allows applications to avoid the garbage collection overhead of
+creating many individually allocated Buffers. This approach improves both
+performance and memory usage by eliminating the need to track and cleanup as
+many `Persistent` objects.
+
+However, in the case where a developer may need to retain a small chunk of
+memory from a pool for an indeterminate amount of time, it may be appropriate
+to create an un-pooled Buffer instance using `Buffer.allocUnsafeSlow()` then
+copy out the relevant bits.
+
+```js
+// need to keep around a few small chunks of memory
+const store = [];
+
+socket.on('readable', () => {
+ const data = socket.read();
+ // allocate for retained data
+ const sb = Buffer.allocUnsafeSlow(10);
+ // copy the data into the new allocation
+ data.copy(sb, 0, 0, 10);
+ store.push(sb);
+});
+```
+
+Use of `Buffer.allocUnsafeSlow()` should be used only as a last resort *after*
+a developer has observed undue memory retention in their applications.
+
+A `TypeError` will be thrown if `size` is not a number.
+
+### All the Rest
+
+The rest of the `Buffer` API is exactly the same as in node.js.
+[See the docs](https://nodejs.org/api/buffer.html).
+
+
+## Related links
+
+- [Node.js issue: Buffer(number) is unsafe](https://github.com/nodejs/node/issues/4660)
+- [Node.js Enhancement Proposal: Buffer.from/Buffer.alloc/Buffer.zalloc/Buffer() soft-deprecate](https://github.com/nodejs/node-eps/pull/4)
+
+## Why is `Buffer` unsafe?
+
+Today, the node.js `Buffer` constructor is overloaded to handle many different argument
+types like `String`, `Array`, `Object`, `TypedArrayView` (`Uint8Array`, etc.),
+`ArrayBuffer`, and also `Number`.
+
+The API is optimized for convenience: you can throw any type at it, and it will try to do
+what you want.
+
+Because the Buffer constructor is so powerful, you often see code like this:
+
+```js
+// Convert UTF-8 strings to hex
+function toHex (str) {
+ return new Buffer(str).toString('hex')
+}
+```
+
+***But what happens if `toHex` is called with a `Number` argument?***
+
+### Remote Memory Disclosure
+
+If an attacker can make your program call the `Buffer` constructor with a `Number`
+argument, then they can make it allocate uninitialized memory from the node.js process.
+This could potentially disclose TLS private keys, user data, or database passwords.
+
+When the `Buffer` constructor is passed a `Number` argument, it returns an
+**UNINITIALIZED** block of memory of the specified `size`. When you create a `Buffer` like
+this, you **MUST** overwrite the contents before returning it to the user.
+
+From the [node.js docs](https://nodejs.org/api/buffer.html#buffer_new_buffer_size):
+
+> `new Buffer(size)`
+>
+> - `size` Number
+>
+> The underlying memory for `Buffer` instances created in this way is not initialized.
+> **The contents of a newly created `Buffer` are unknown and could contain sensitive
+> data.** Use `buf.fill(0)` to initialize a Buffer to zeroes.
+
+(Emphasis our own.)
+
+Whenever the programmer intended to create an uninitialized `Buffer` you often see code
+like this:
+
+```js
+var buf = new Buffer(16)
+
+// Immediately overwrite the uninitialized buffer with data from another buffer
+for (var i = 0; i < buf.length; i++) {
+ buf[i] = otherBuf[i]
+}
+```
+
+
+### Would this ever be a problem in real code?
+
+Yes. It's surprisingly common to forget to check the type of your variables in a
+dynamically-typed language like JavaScript.
+
+Usually the consequences of assuming the wrong type is that your program crashes with an
+uncaught exception. But the failure mode for forgetting to check the type of arguments to
+the `Buffer` constructor is more catastrophic.
+
+Here's an example of a vulnerable service that takes a JSON payload and converts it to
+hex:
+
+```js
+// Take a JSON payload {str: "some string"} and convert it to hex
+var server = http.createServer(function (req, res) {
+ var data = ''
+ req.setEncoding('utf8')
+ req.on('data', function (chunk) {
+ data += chunk
+ })
+ req.on('end', function () {
+ var body = JSON.parse(data)
+ res.end(new Buffer(body.str).toString('hex'))
+ })
+})
+
+server.listen(8080)
+```
+
+In this example, an http client just has to send:
+
+```json
+{
+ "str": 1000
+}
+```
+
+and it will get back 1,000 bytes of uninitialized memory from the server.
+
+This is a very serious bug. It's similar in severity to the
+[the Heartbleed bug](http://heartbleed.com/) that allowed disclosure of OpenSSL process
+memory by remote attackers.
+
+
+### Which real-world packages were vulnerable?
+
+#### [`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht)
+
+[Mathias Buus](https://github.com/mafintosh) and I
+([Feross Aboukhadijeh](http://feross.org/)) found this issue in one of our own packages,
+[`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht). The bug would allow
+anyone on the internet to send a series of messages to a user of `bittorrent-dht` and get
+them to reveal 20 bytes at a time of uninitialized memory from the node.js process.
+
+Here's
+[the commit](https://github.com/feross/bittorrent-dht/commit/6c7da04025d5633699800a99ec3fbadf70ad35b8)
+that fixed it. We released a new fixed version, created a
+[Node Security Project disclosure](https://nodesecurity.io/advisories/68), and deprecated all
+vulnerable versions on npm so users will get a warning to upgrade to a newer version.
+
+#### [`ws`](https://www.npmjs.com/package/ws)
+
+That got us wondering if there were other vulnerable packages. Sure enough, within a short
+period of time, we found the same issue in [`ws`](https://www.npmjs.com/package/ws), the
+most popular WebSocket implementation in node.js.
+
+If certain APIs were called with `Number` parameters instead of `String` or `Buffer` as
+expected, then uninitialized server memory would be disclosed to the remote peer.
+
+These were the vulnerable methods:
+
+```js
+socket.send(number)
+socket.ping(number)
+socket.pong(number)
+```
+
+Here's a vulnerable socket server with some echo functionality:
+
+```js
+server.on('connection', function (socket) {
+ socket.on('message', function (message) {
+ message = JSON.parse(message)
+ if (message.type === 'echo') {
+ socket.send(message.data) // send back the user's message
+ }
+ })
+})
+```
+
+`socket.send(number)` called on the server, will disclose server memory.
+
+Here's [the release](https://github.com/websockets/ws/releases/tag/1.0.1) where the issue
+was fixed, with a more detailed explanation. Props to
+[Arnout Kazemier](https://github.com/3rd-Eden) for the quick fix. Here's the
+[Node Security Project disclosure](https://nodesecurity.io/advisories/67).
+
+
+### What's the solution?
+
+It's important that node.js offers a fast way to get memory otherwise performance-critical
+applications would needlessly get a lot slower.
+
+But we need a better way to *signal our intent* as programmers. **When we want
+uninitialized memory, we should request it explicitly.**
+
+Sensitive functionality should not be packed into a developer-friendly API that loosely
+accepts many different types. This type of API encourages the lazy practice of passing
+variables in without checking the type very carefully.
+
+#### A new API: `Buffer.allocUnsafe(number)`
+
+The functionality of creating buffers with uninitialized memory should be part of another
+API. We propose `Buffer.allocUnsafe(number)`. This way, it's not part of an API that
+frequently gets user input of all sorts of different types passed into it.
+
+```js
+var buf = Buffer.allocUnsafe(16) // careful, uninitialized memory!
+
+// Immediately overwrite the uninitialized buffer with data from another buffer
+for (var i = 0; i < buf.length; i++) {
+ buf[i] = otherBuf[i]
+}
+```
+
+
+### How do we fix node.js core?
+
+We sent [a PR to node.js core](https://github.com/nodejs/node/pull/4514) (merged as
+`semver-major`) which defends against one case:
+
+```js
+var str = 16
+new Buffer(str, 'utf8')
+```
+
+In this situation, it's implied that the programmer intended the first argument to be a
+string, since they passed an encoding as a second argument. Today, node.js will allocate
+uninitialized memory in the case of `new Buffer(number, encoding)`, which is probably not
+what the programmer intended.
+
+But this is only a partial solution, since if the programmer does `new Buffer(variable)`
+(without an `encoding` parameter) there's no way to know what they intended. If `variable`
+is sometimes a number, then uninitialized memory will sometimes be returned.
+
+### What's the real long-term fix?
+
+We could deprecate and remove `new Buffer(number)` and use `Buffer.allocUnsafe(number)` when
+we need uninitialized memory. But that would break 1000s of packages.
+
+~~We believe the best solution is to:~~
+
+~~1. Change `new Buffer(number)` to return safe, zeroed-out memory~~
+
+~~2. Create a new API for creating uninitialized Buffers. We propose: `Buffer.allocUnsafe(number)`~~
+
+#### Update
+
+We now support adding three new APIs:
+
+- `Buffer.from(value)` - convert from any type to a buffer
+- `Buffer.alloc(size)` - create a zero-filled buffer
+- `Buffer.allocUnsafe(size)` - create an uninitialized buffer with given size
+
+This solves the core problem that affected `ws` and `bittorrent-dht` which is
+`Buffer(variable)` getting tricked into taking a number argument.
+
+This way, existing code continues working and the impact on the npm ecosystem will be
+minimal. Over time, npm maintainers can migrate performance-critical code to use
+`Buffer.allocUnsafe(number)` instead of `new Buffer(number)`.
+
+
+### Conclusion
+
+We think there's a serious design issue with the `Buffer` API as it exists today. It
+promotes insecure software by putting high-risk functionality into a convenient API
+with friendly "developer ergonomics".
+
+This wasn't merely a theoretical exercise because we found the issue in some of the
+most popular npm packages.
+
+Fortunately, there's an easy fix that can be applied today. Use `safe-buffer` in place of
+`buffer`.
+
+```js
+var Buffer = require('safe-buffer').Buffer
+```
+
+Eventually, we hope that node.js core can switch to this new, safer behavior. We believe
+the impact on the ecosystem would be minimal since it's not a breaking change.
+Well-maintained, popular packages would be updated to use `Buffer.alloc` quickly, while
+older, insecure packages would magically become safe from this attack vector.
+
+
+## links
+
+- [Node.js PR: buffer: throw if both length and enc are passed](https://github.com/nodejs/node/pull/4514)
+- [Node Security Project disclosure for `ws`](https://nodesecurity.io/advisories/67)
+- [Node Security Project disclosure for`bittorrent-dht`](https://nodesecurity.io/advisories/68)
+
+
+## credit
+
+The original issues in `bittorrent-dht`
+([disclosure](https://nodesecurity.io/advisories/68)) and
+`ws` ([disclosure](https://nodesecurity.io/advisories/67)) were discovered by
+[Mathias Buus](https://github.com/mafintosh) and
+[Feross Aboukhadijeh](http://feross.org/).
+
+Thanks to [Adam Baldwin](https://github.com/evilpacket) for helping disclose these issues
+and for his work running the [Node Security Project](https://nodesecurity.io/).
+
+Thanks to [John Hiesey](https://github.com/jhiesey) for proofreading this README and
+auditing the code.
+
+
+## license
+
+MIT. Copyright (C) [Feross Aboukhadijeh](http://feross.org)
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/browser.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/browser.js
new file mode 100644
index 000000000..0bd12027d
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/browser.js
@@ -0,0 +1 @@
+module.exports = require('buffer')
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/index.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/index.js
new file mode 100644
index 000000000..74a7358ee
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/index.js
@@ -0,0 +1,58 @@
+var buffer = require('buffer')
+
+if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
+ module.exports = buffer
+} else {
+ // Copy properties from require('buffer')
+ Object.keys(buffer).forEach(function (prop) {
+ exports[prop] = buffer[prop]
+ })
+ exports.Buffer = SafeBuffer
+}
+
+function SafeBuffer (arg, encodingOrOffset, length) {
+ return Buffer(arg, encodingOrOffset, length)
+}
+
+// Copy static methods from Buffer
+Object.keys(Buffer).forEach(function (prop) {
+ SafeBuffer[prop] = Buffer[prop]
+})
+
+SafeBuffer.from = function (arg, encodingOrOffset, length) {
+ if (typeof arg === 'number') {
+ throw new TypeError('Argument must not be a number')
+ }
+ return Buffer(arg, encodingOrOffset, length)
+}
+
+SafeBuffer.alloc = function (size, fill, encoding) {
+ if (typeof size !== 'number') {
+ throw new TypeError('Argument must be a number')
+ }
+ var buf = Buffer(size)
+ if (fill !== undefined) {
+ if (typeof encoding === 'string') {
+ buf.fill(fill, encoding)
+ } else {
+ buf.fill(fill)
+ }
+ } else {
+ buf.fill(0)
+ }
+ return buf
+}
+
+SafeBuffer.allocUnsafe = function (size) {
+ if (typeof size !== 'number') {
+ throw new TypeError('Argument must be a number')
+ }
+ return Buffer(size)
+}
+
+SafeBuffer.allocUnsafeSlow = function (size) {
+ if (typeof size !== 'number') {
+ throw new TypeError('Argument must be a number')
+ }
+ return buffer.SlowBuffer(size)
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/package.json b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/package.json
new file mode 100644
index 000000000..f0a552d02
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/package.json
@@ -0,0 +1,103 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "safe-buffer@^5.0.1",
+ "scope": null,
+ "escapedName": "safe-buffer",
+ "name": "safe-buffer",
+ "rawSpec": "^5.0.1",
+ "spec": ">=5.0.1 <6.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got"
+ ]
+ ],
+ "_from": "safe-buffer@>=5.0.1 <6.0.0",
+ "_id": "safe-buffer@5.0.1",
+ "_inCache": true,
+ "_location": "/update-notifier/latest-version/package-json/got/safe-buffer",
+ "_nodeVersion": "4.4.5",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/safe-buffer-5.0.1.tgz_1464588482081_0.8112505874596536"
+ },
+ "_npmUser": {
+ "name": "feross",
+ "email": "feross@feross.org"
+ },
+ "_npmVersion": "2.15.5",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "safe-buffer@^5.0.1",
+ "scope": null,
+ "escapedName": "safe-buffer",
+ "name": "safe-buffer",
+ "rawSpec": "^5.0.1",
+ "spec": ">=5.0.1 <6.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/latest-version/package-json/got"
+ ],
+ "_resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz",
+ "_shasum": "d263ca54696cd8a306b5ca6551e92de57918fbe7",
+ "_shrinkwrap": null,
+ "_spec": "safe-buffer@^5.0.1",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got",
+ "author": {
+ "name": "Feross Aboukhadijeh",
+ "email": "feross@feross.org",
+ "url": "http://feross.org"
+ },
+ "browser": "./browser.js",
+ "bugs": {
+ "url": "https://github.com/feross/safe-buffer/issues"
+ },
+ "dependencies": {},
+ "description": "Safer Node.js Buffer API",
+ "devDependencies": {
+ "standard": "^7.0.0",
+ "tape": "^4.0.0",
+ "zuul": "^3.0.0"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "d263ca54696cd8a306b5ca6551e92de57918fbe7",
+ "tarball": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz"
+ },
+ "gitHead": "1e371a367da962afae2bebc527b50271c739d28c",
+ "homepage": "https://github.com/feross/safe-buffer",
+ "keywords": [
+ "buffer",
+ "buffer allocate",
+ "node security",
+ "safe",
+ "safe-buffer",
+ "security",
+ "uninitialized"
+ ],
+ "license": "MIT",
+ "main": "index.js",
+ "maintainers": [
+ {
+ "name": "feross",
+ "email": "feross@feross.org"
+ },
+ {
+ "name": "mafintosh",
+ "email": "mathiasbuus@gmail.com"
+ }
+ ],
+ "name": "safe-buffer",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/feross/safe-buffer.git"
+ },
+ "scripts": {
+ "test": "standard && tape test.js"
+ },
+ "version": "5.0.1"
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/test.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/test.js
new file mode 100644
index 000000000..7da8ad761
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/safe-buffer/test.js
@@ -0,0 +1,99 @@
+var test = require('tape')
+var SafeBuffer = require('./').Buffer
+
+test('new SafeBuffer(value) works just like Buffer', function (t) {
+ t.deepEqual(new SafeBuffer('hey'), new Buffer('hey'))
+ t.deepEqual(new SafeBuffer('hey', 'utf8'), new Buffer('hey', 'utf8'))
+ t.deepEqual(new SafeBuffer('686579', 'hex'), new Buffer('686579', 'hex'))
+ t.deepEqual(new SafeBuffer([1, 2, 3]), new Buffer([1, 2, 3]))
+ t.deepEqual(new SafeBuffer(new Uint8Array([1, 2, 3])), new Buffer(new Uint8Array([1, 2, 3])))
+
+ t.equal(typeof SafeBuffer.isBuffer, 'function')
+ t.equal(SafeBuffer.isBuffer(new SafeBuffer('hey')), true)
+ t.equal(Buffer.isBuffer(new SafeBuffer('hey')), true)
+ t.notOk(SafeBuffer.isBuffer({}))
+
+ t.end()
+})
+
+test('SafeBuffer.from(value) converts to a Buffer', function (t) {
+ t.deepEqual(SafeBuffer.from('hey'), new Buffer('hey'))
+ t.deepEqual(SafeBuffer.from('hey', 'utf8'), new Buffer('hey', 'utf8'))
+ t.deepEqual(SafeBuffer.from('686579', 'hex'), new Buffer('686579', 'hex'))
+ t.deepEqual(SafeBuffer.from([1, 2, 3]), new Buffer([1, 2, 3]))
+ t.deepEqual(SafeBuffer.from(new Uint8Array([1, 2, 3])), new Buffer(new Uint8Array([1, 2, 3])))
+
+ t.end()
+})
+
+test('SafeBuffer.alloc(number) returns zeroed-out memory', function (t) {
+ for (var i = 0; i < 10; i++) {
+ var expected1 = new Buffer(1000)
+ expected1.fill(0)
+ t.deepEqual(SafeBuffer.alloc(1000), expected1)
+
+ var expected2 = new Buffer(1000 * 1000)
+ expected2.fill(0)
+ t.deepEqual(SafeBuffer.alloc(1000 * 1000), expected2)
+ }
+ t.end()
+})
+
+test('SafeBuffer.allocUnsafe(number)', function (t) {
+ var buf = SafeBuffer.allocUnsafe(100) // unitialized memory
+ t.equal(buf.length, 100)
+ t.equal(SafeBuffer.isBuffer(buf), true)
+ t.equal(Buffer.isBuffer(buf), true)
+ t.end()
+})
+
+test('SafeBuffer.from() throws with number types', function (t) {
+ t.plan(5)
+ t.throws(function () {
+ SafeBuffer.from(0)
+ })
+ t.throws(function () {
+ SafeBuffer.from(-1)
+ })
+ t.throws(function () {
+ SafeBuffer.from(NaN)
+ })
+ t.throws(function () {
+ SafeBuffer.from(Infinity)
+ })
+ t.throws(function () {
+ SafeBuffer.from(99)
+ })
+})
+
+test('SafeBuffer.allocUnsafe() throws with non-number types', function (t) {
+ t.plan(4)
+ t.throws(function () {
+ SafeBuffer.allocUnsafe('hey')
+ })
+ t.throws(function () {
+ SafeBuffer.allocUnsafe('hey', 'utf8')
+ })
+ t.throws(function () {
+ SafeBuffer.allocUnsafe([1, 2, 3])
+ })
+ t.throws(function () {
+ SafeBuffer.allocUnsafe({})
+ })
+})
+
+test('SafeBuffer.alloc() throws with non-number types', function (t) {
+ t.plan(4)
+ t.throws(function () {
+ SafeBuffer.alloc('hey')
+ })
+ t.throws(function () {
+ SafeBuffer.alloc('hey', 'utf8')
+ })
+ t.throws(function () {
+ SafeBuffer.alloc([1, 2, 3])
+ })
+ t.throws(function () {
+ SafeBuffer.alloc({})
+ })
+})
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/timed-out/index.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/timed-out/index.js
new file mode 100644
index 000000000..94007a4ae
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/timed-out/index.js
@@ -0,0 +1,55 @@
+'use strict';
+
+module.exports = function (req, time) {
+ if (req.timeoutTimer) {
+ return req;
+ }
+
+ var delays = isNaN(time) ? time : {socket: time, connect: time};
+ var host = req._headers ? (' to ' + req._headers.host) : '';
+
+ if (delays.connect !== undefined) {
+ req.timeoutTimer = setTimeout(function timeoutHandler() {
+ req.abort();
+ var e = new Error('Connection timed out on request' + host);
+ e.code = 'ETIMEDOUT';
+ req.emit('error', e);
+ }, delays.connect);
+ }
+
+ // Clear the connection timeout timer once a socket is assigned to the
+ // request and is connected.
+ req.on('socket', function assign(socket) {
+ // Socket may come from Agent pool and may be already connected.
+ if (!(socket.connecting || socket._connecting)) {
+ connect();
+ return;
+ }
+
+ socket.once('connect', connect);
+ });
+
+ function clear() {
+ if (req.timeoutTimer) {
+ clearTimeout(req.timeoutTimer);
+ req.timeoutTimer = null;
+ }
+ }
+
+ function connect() {
+ clear();
+
+ if (delays.socket !== undefined) {
+ // Abort the request if there is no activity on the socket for more
+ // than `delays.socket` milliseconds.
+ req.setTimeout(delays.socket, function socketTimeoutHandler() {
+ req.abort();
+ var e = new Error('Socket timed out on request' + host);
+ e.code = 'ESOCKETTIMEDOUT';
+ req.emit('error', e);
+ });
+ }
+ }
+
+ return req.on('error', clear);
+};
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/timed-out/license b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/timed-out/license
new file mode 100644
index 000000000..faadd5287
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/timed-out/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Vsevolod Strukchinsky <floatdrop@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/timed-out/package.json b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/timed-out/package.json
new file mode 100644
index 000000000..dce040af9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/timed-out/package.json
@@ -0,0 +1,104 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "timed-out@^4.0.0",
+ "scope": null,
+ "escapedName": "timed-out",
+ "name": "timed-out",
+ "rawSpec": "^4.0.0",
+ "spec": ">=4.0.0 <5.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got"
+ ]
+ ],
+ "_from": "timed-out@>=4.0.0 <5.0.0",
+ "_id": "timed-out@4.0.1",
+ "_inCache": true,
+ "_location": "/update-notifier/latest-version/package-json/got/timed-out",
+ "_nodeVersion": "6.9.3",
+ "_npmOperationalInternal": {
+ "host": "packages-18-east.internal.npmjs.com",
+ "tmp": "tmp/timed-out-4.0.1.tgz_1484575090971_0.24377561057917774"
+ },
+ "_npmUser": {
+ "name": "floatdrop",
+ "email": "floatdrop@gmail.com"
+ },
+ "_npmVersion": "3.10.10",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "timed-out@^4.0.0",
+ "scope": null,
+ "escapedName": "timed-out",
+ "name": "timed-out",
+ "rawSpec": "^4.0.0",
+ "spec": ">=4.0.0 <5.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/latest-version/package-json/got"
+ ],
+ "_resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
+ "_shasum": "f32eacac5a175bea25d7fab565ab3ed8741ef56f",
+ "_shrinkwrap": null,
+ "_spec": "timed-out@^4.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got",
+ "author": {
+ "name": "Vsevolod Strukchinsky",
+ "email": "floatdrop@gmail.com"
+ },
+ "bugs": {
+ "url": "https://github.com/floatdrop/timed-out/issues"
+ },
+ "dependencies": {},
+ "description": "Emit `ETIMEDOUT` or `ESOCKETTIMEDOUT` when ClientRequest is hanged",
+ "devDependencies": {
+ "mocha": "*",
+ "xo": "^0.16.0"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "f32eacac5a175bea25d7fab565ab3ed8741ef56f",
+ "tarball": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "2f00fdafb6af0a9b91fb23a04a9271766c5559a4",
+ "homepage": "https://github.com/floatdrop/timed-out#readme",
+ "keywords": [
+ "http",
+ "https",
+ "get",
+ "got",
+ "url",
+ "uri",
+ "request",
+ "util",
+ "utility",
+ "simple"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "floatdrop",
+ "email": "floatdrop@gmail.com"
+ }
+ ],
+ "name": "timed-out",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/floatdrop/timed-out.git"
+ },
+ "scripts": {
+ "test": "xo && mocha"
+ },
+ "version": "4.0.1"
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/timed-out/readme.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/timed-out/readme.md
new file mode 100644
index 000000000..d0eb92341
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/timed-out/readme.md
@@ -0,0 +1,42 @@
+# timed-out [![Build Status](https://travis-ci.org/floatdrop/timed-out.svg?branch=master)](https://travis-ci.org/floatdrop/timed-out)
+
+> Timeout HTTP/HTTPS requests
+
+Emit Error object with `code` property equal `ETIMEDOUT` or `ESOCKETTIMEDOUT` when ClientRequest is hanged.
+
+## Usage
+
+```js
+var get = require('http').get;
+var timeout = require('timed-out');
+
+var req = get('http://www.google.ru');
+timeout(req, 2000); // Set 2 seconds limit
+```
+
+### API
+
+#### timedout(request, time)
+
+##### request
+
+*Required*
+Type: [`ClientRequest`](http://nodejs.org/api/http.html#http_class_http_clientrequest)
+
+The request to watch on.
+
+##### time
+
+*Required*
+Type: `number` or `object`
+
+Time in milliseconds to wait for `connect` event on socket and also time to wait on inactive socket.
+
+Or you can pass Object with following fields:
+
+- `connect` - time to wait for connection
+- `socket` - time to wait for activity on socket
+
+## License
+
+MIT © [Vsevolod Strukchinsky](floatdrop@gmail.com)
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/unzip-response/index.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/unzip-response/index.js
new file mode 100644
index 000000000..e97b9937a
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/unzip-response/index.js
@@ -0,0 +1,36 @@
+'use strict';
+const PassThrough = require('stream').PassThrough;
+const zlib = require('zlib');
+
+module.exports = res => {
+ // TODO: use Array#includes when targeting Node.js 6
+ if (['gzip', 'deflate'].indexOf(res.headers['content-encoding']) === -1) {
+ return res;
+ }
+
+ const unzip = zlib.createUnzip();
+ const stream = new PassThrough();
+
+ stream.httpVersion = res.httpVersion;
+ stream.headers = res.headers;
+ stream.rawHeaders = res.rawHeaders;
+ stream.trailers = res.trailers;
+ stream.rawTrailers = res.rawTrailers;
+ stream.setTimeout = res.setTimeout.bind(res);
+ stream.statusCode = res.statusCode;
+ stream.statusMessage = res.statusMessage;
+ stream.socket = res.socket;
+
+ unzip.on('error', err => {
+ if (err.code === 'Z_BUF_ERROR') {
+ stream.end();
+ return;
+ }
+
+ stream.emit('error', err);
+ });
+
+ res.pipe(unzip).pipe(stream);
+
+ return stream;
+};
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/unzip-response/license b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/unzip-response/license
new file mode 100644
index 000000000..32a16ce32
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/unzip-response/license
@@ -0,0 +1,21 @@
+`The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/unzip-response/package.json b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/unzip-response/package.json
new file mode 100644
index 000000000..fef4ccb79
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/unzip-response/package.json
@@ -0,0 +1,109 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "unzip-response@^2.0.1",
+ "scope": null,
+ "escapedName": "unzip-response",
+ "name": "unzip-response",
+ "rawSpec": "^2.0.1",
+ "spec": ">=2.0.1 <3.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got"
+ ]
+ ],
+ "_from": "unzip-response@>=2.0.1 <3.0.0",
+ "_id": "unzip-response@2.0.1",
+ "_inCache": true,
+ "_location": "/update-notifier/latest-version/package-json/got/unzip-response",
+ "_nodeVersion": "4.5.0",
+ "_npmOperationalInternal": {
+ "host": "packages-16-east.internal.npmjs.com",
+ "tmp": "tmp/unzip-response-2.0.1.tgz_1473187386171_0.46349130012094975"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.15.9",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "unzip-response@^2.0.1",
+ "scope": null,
+ "escapedName": "unzip-response",
+ "name": "unzip-response",
+ "rawSpec": "^2.0.1",
+ "spec": ">=2.0.1 <3.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/latest-version/package-json/got"
+ ],
+ "_resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz",
+ "_shasum": "d2f0f737d16b0615e72a6935ed04214572d56f97",
+ "_shrinkwrap": null,
+ "_spec": "unzip-response@^2.0.1",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got",
+ "bugs": {
+ "url": "https://github.com/sindresorhus/unzip-response/issues"
+ },
+ "dependencies": {},
+ "description": "Unzip a HTTP response if needed",
+ "devDependencies": {
+ "ava": "*",
+ "get-stream": "^2.3.0",
+ "pify": "^2.3.0",
+ "rfpify": "^1.0.0",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "d2f0f737d16b0615e72a6935ed04214572d56f97",
+ "tarball": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "71858052fe94b89678d14ba54e8e96cacbda92c3",
+ "homepage": "https://github.com/sindresorhus/unzip-response#readme",
+ "keywords": [
+ "http",
+ "unzip",
+ "zlib",
+ "gzip",
+ "deflate",
+ "incoming",
+ "message",
+ "response",
+ "stream"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ {
+ "name": "floatdrop",
+ "email": "floatdrop@gmail.com"
+ }
+ ],
+ "name": "unzip-response",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/unzip-response.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "2.0.1",
+ "xo": {
+ "esnext": true
+ }
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/unzip-response/readme.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/unzip-response/readme.md
new file mode 100644
index 000000000..87a62c4b3
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/unzip-response/readme.md
@@ -0,0 +1,29 @@
+# unzip-response [![Build Status](https://travis-ci.org/sindresorhus/unzip-response.svg?branch=master)](https://travis-ci.org/sindresorhus/unzip-response)
+
+> Unzip a HTTP response if needed
+
+Unzips the response from [`http.request`](https://nodejs.org/api/http.html#http_http_request_options_callback) if it's gzipped/deflated, otherwise just passes it through.
+
+
+## Install
+
+```
+$ npm install --save unzip-response
+```
+
+
+## Usage
+
+```js
+const http = require('http');
+const unzipResponse = require('unzip-response');
+
+http.get('http://sindresorhus.com', res => {
+ res = unzipResponse(res);
+});
+```
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/index.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/index.js
new file mode 100644
index 000000000..f9c0c65af
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/index.js
@@ -0,0 +1,14 @@
+'use strict';
+var url = require('url');
+var prependHttp = require('prepend-http');
+
+module.exports = function (x) {
+ var withProtocol = prependHttp(x);
+ var parsed = url.parse(withProtocol);
+
+ if (withProtocol !== x) {
+ parsed.protocol = null;
+ }
+
+ return parsed;
+};
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/license b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/node_modules/prepend-http/index.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/node_modules/prepend-http/index.js
new file mode 100644
index 000000000..60f532ac5
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/node_modules/prepend-http/index.js
@@ -0,0 +1,14 @@
+'use strict';
+module.exports = function (url) {
+ if (typeof url !== 'string') {
+ throw new TypeError('Expected a string, got ' + typeof url);
+ }
+
+ url = url.trim();
+
+ if (/^\.*\/|^(?!localhost)\w+:/.test(url)) {
+ return url;
+ }
+
+ return url.replace(/^(?!(?:\w+:)?\/\/)/, 'http://');
+};
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/node_modules/prepend-http/license b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/node_modules/prepend-http/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/node_modules/prepend-http/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/node_modules/prepend-http/package.json b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/node_modules/prepend-http/package.json
new file mode 100644
index 000000000..b97917cea
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/node_modules/prepend-http/package.json
@@ -0,0 +1,103 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "prepend-http@^1.0.1",
+ "scope": null,
+ "escapedName": "prepend-http",
+ "name": "prepend-http",
+ "rawSpec": "^1.0.1",
+ "spec": ">=1.0.1 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax"
+ ]
+ ],
+ "_from": "prepend-http@>=1.0.1 <2.0.0",
+ "_id": "prepend-http@1.0.4",
+ "_inCache": true,
+ "_location": "/update-notifier/latest-version/package-json/got/url-parse-lax/prepend-http",
+ "_nodeVersion": "4.4.2",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/prepend-http-1.0.4.tgz_1462857682803_0.5703588796313852"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.15.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "prepend-http@^1.0.1",
+ "scope": null,
+ "escapedName": "prepend-http",
+ "name": "prepend-http",
+ "rawSpec": "^1.0.1",
+ "spec": ">=1.0.1 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/latest-version/package-json/got/url-parse-lax"
+ ],
+ "_resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
+ "_shasum": "d4f4562b0ce3696e41ac52d0e002e57a635dc6dc",
+ "_shrinkwrap": null,
+ "_spec": "prepend-http@^1.0.1",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/prepend-http/issues"
+ },
+ "dependencies": {},
+ "description": "Prepend `http://` to humanized URLs like todomvc.com and localhost",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "d4f4562b0ce3696e41ac52d0e002e57a635dc6dc",
+ "tarball": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "4f2fbbcdd5daa579c062f9e54a99c8714ddc80d8",
+ "homepage": "https://github.com/sindresorhus/prepend-http#readme",
+ "keywords": [
+ "prepend",
+ "protocol",
+ "scheme",
+ "url",
+ "uri",
+ "http",
+ "https",
+ "humanized"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "prepend-http",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/prepend-http.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "1.0.4"
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/node_modules/prepend-http/readme.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/node_modules/prepend-http/readme.md
new file mode 100644
index 000000000..df7557e36
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/node_modules/prepend-http/readme.md
@@ -0,0 +1,31 @@
+# prepend-http [![Build Status](https://travis-ci.org/sindresorhus/prepend-http.svg?branch=master)](https://travis-ci.org/sindresorhus/prepend-http)
+
+> Prepend `http://` to humanized URLs like `todomvc.com` and `localhost`
+
+
+## Install
+
+```
+$ npm install --save prepend-http
+```
+
+
+## Usage
+
+```js
+const prependHttp = require('prepend-http');
+
+prependHttp('todomvc.com');
+//=> 'http://todomvc.com'
+
+prependHttp('localhost');
+//=> 'http://localhost'
+
+prependHttp('http://todomvc.com');
+//=> 'http://todomvc.com'
+```
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/package.json b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/package.json
new file mode 100644
index 000000000..76db6dc3b
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/package.json
@@ -0,0 +1,104 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "url-parse-lax@^1.0.0",
+ "scope": null,
+ "escapedName": "url-parse-lax",
+ "name": "url-parse-lax",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got"
+ ]
+ ],
+ "_from": "url-parse-lax@>=1.0.0 <2.0.0",
+ "_id": "url-parse-lax@1.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/latest-version/package-json/got/url-parse-lax",
+ "_nodeVersion": "0.12.5",
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.11.2",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "url-parse-lax@^1.0.0",
+ "scope": null,
+ "escapedName": "url-parse-lax",
+ "name": "url-parse-lax",
+ "rawSpec": "^1.0.0",
+ "spec": ">=1.0.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/latest-version/package-json/got"
+ ],
+ "_resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
+ "_shasum": "7af8f303645e9bd79a272e7a14ac68bc0609da73",
+ "_shrinkwrap": null,
+ "_spec": "url-parse-lax@^1.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/url-parse-lax/issues"
+ },
+ "dependencies": {
+ "prepend-http": "^1.0.1"
+ },
+ "description": "url.parse() with support for protocol-less URLs & IPs",
+ "devDependencies": {
+ "ava": "0.0.4"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "7af8f303645e9bd79a272e7a14ac68bc0609da73",
+ "tarball": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "1c2c7473ee75bb84a92c8aca532a6e615e531380",
+ "homepage": "https://github.com/sindresorhus/url-parse-lax#readme",
+ "keywords": [
+ "url",
+ "uri",
+ "parse",
+ "parser",
+ "loose",
+ "lax",
+ "protocol",
+ "less",
+ "protocol-less",
+ "ip",
+ "ipv4",
+ "ipv6"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "url-parse-lax",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/url-parse-lax.git"
+ },
+ "scripts": {
+ "test": "node test.js"
+ },
+ "version": "1.0.0"
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/readme.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/readme.md
new file mode 100644
index 000000000..f2639446e
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/node_modules/url-parse-lax/readme.md
@@ -0,0 +1,100 @@
+# url-parse-lax [![Build Status](https://travis-ci.org/sindresorhus/url-parse-lax.svg?branch=master)](https://travis-ci.org/sindresorhus/url-parse-lax)
+
+> [`url.parse()`](https://nodejs.org/docs/latest/api/url.html#url_url_parse_urlstr_parsequerystring_slashesdenotehost) with support for protocol-less URLs & IPs
+
+
+## Install
+
+```
+$ npm install --save url-parse-lax
+```
+
+
+## Usage
+
+```js
+var urlParseLax = require('url-parse-lax');
+
+urlParseLax('sindresorhus.com');
+/*
+{
+ protocol: null,
+ slashes: true,
+ auth: null,
+ host: 'sindresorhus.com',
+ port: null,
+ hostname: 'sindresorhus.com',
+ hash: null,
+ search: null,
+ query: null,
+ pathname: '/',
+ path: '/',
+ href: 'http://sindresorhus.com/'
+}
+*/
+
+urlParseLax('[2001:db8::]:8000');
+/*
+{
+ protocol: null,
+ slashes: true,
+ auth: null,
+ host: '[2001:db8::]:8000',
+ port: '8000',
+ hostname: '2001:db8::',
+ hash: null,
+ search: null,
+ query: null,
+ pathname: '/',
+ path: '/',
+ href: 'http://[2001:db8::]:8000/'
+}
+*/
+```
+
+And with the built-in `url.parse()`:
+
+```js
+var url = require('url');
+
+url.parse('sindresorhus.com');
+/*
+{
+ protocol: null,
+ slashes: null,
+ auth: null,
+ host: null,
+ port: null,
+ hostname: null,
+ hash: null,
+ search: null,
+ query: null,
+ pathname: 'sindresorhus',
+ path: 'sindresorhus',
+ href: 'sindresorhus'
+}
+*/
+
+url.parse('[2001:db8::]:8000');
+/*
+{
+ protocol: null,
+ slashes: null,
+ auth: null,
+ host: null,
+ port: null,
+ hostname: null,
+ hash: null,
+ search: null,
+ query: null,
+ pathname: '[2001:db8::]:8000',
+ path: '[2001:db8::]:8000',
+ href: '[2001:db8::]:8000'
+}
+*/
+```
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/package.json b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/package.json
new file mode 100644
index 000000000..b32273844
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/package.json
@@ -0,0 +1,141 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "got@^6.7.1",
+ "scope": null,
+ "escapedName": "got",
+ "name": "got",
+ "rawSpec": "^6.7.1",
+ "spec": ">=6.7.1 <7.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json"
+ ]
+ ],
+ "_from": "got@>=6.7.1 <7.0.0",
+ "_id": "got@6.7.1",
+ "_inCache": true,
+ "_location": "/update-notifier/latest-version/package-json/got",
+ "_nodeVersion": "6.9.2",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/got-6.7.1.tgz_1483022570319_0.12133173388428986"
+ },
+ "_npmUser": {
+ "name": "floatdrop",
+ "email": "floatdrop@gmail.com"
+ },
+ "_npmVersion": "3.10.9",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "got@^6.7.1",
+ "scope": null,
+ "escapedName": "got",
+ "name": "got",
+ "rawSpec": "^6.7.1",
+ "spec": ">=6.7.1 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/latest-version/package-json"
+ ],
+ "_resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
+ "_shasum": "240cd05785a9a18e561dc1b44b41c763ef1e8db0",
+ "_shrinkwrap": null,
+ "_spec": "got@^6.7.1",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json",
+ "ava": {
+ "concurrency": 4
+ },
+ "browser": {
+ "unzip-response": false
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/got/issues"
+ },
+ "dependencies": {
+ "create-error-class": "^3.0.0",
+ "duplexer3": "^0.1.4",
+ "get-stream": "^3.0.0",
+ "is-redirect": "^1.0.0",
+ "is-retry-allowed": "^1.0.0",
+ "is-stream": "^1.0.0",
+ "lowercase-keys": "^1.0.0",
+ "safe-buffer": "^5.0.1",
+ "timed-out": "^4.0.0",
+ "unzip-response": "^2.0.1",
+ "url-parse-lax": "^1.0.0"
+ },
+ "description": "Simplified HTTP requests",
+ "devDependencies": {
+ "ava": "^0.17.0",
+ "coveralls": "^2.11.4",
+ "form-data": "^2.1.1",
+ "get-port": "^2.0.0",
+ "into-stream": "^3.0.0",
+ "nyc": "^10.0.0",
+ "pem": "^1.4.4",
+ "pify": "^2.3.0",
+ "tempfile": "^1.1.1",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "240cd05785a9a18e561dc1b44b41c763ef1e8db0",
+ "tarball": "https://registry.npmjs.org/got/-/got-6.7.1.tgz"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "52da6067ddac5250d6c2e76af9a150b9cf4ba025",
+ "homepage": "https://github.com/sindresorhus/got#readme",
+ "keywords": [
+ "http",
+ "https",
+ "get",
+ "got",
+ "url",
+ "uri",
+ "request",
+ "util",
+ "utility",
+ "simple",
+ "curl",
+ "wget",
+ "fetch"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ {
+ "name": "floatdrop",
+ "email": "floatdrop@gmail.com"
+ },
+ {
+ "name": "kevva",
+ "email": "kevinmartensson@gmail.com"
+ }
+ ],
+ "name": "got",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/got.git"
+ },
+ "scripts": {
+ "coveralls": "nyc report --reporter=text-lcov | coveralls",
+ "test": "xo && nyc ava"
+ },
+ "version": "6.7.1",
+ "xo": {
+ "esnext": true
+ }
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/readme.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/readme.md
new file mode 100644
index 000000000..bfab06767
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/got/readme.md
@@ -0,0 +1,335 @@
+<h1 align="center">
+ <br>
+ <img width="360" src="https://rawgit.com/sindresorhus/got/master/media/logo.svg" alt="got">
+ <br>
+ <br>
+ <br>
+</h1>
+
+> Simplified HTTP requests
+
+[![Build Status](https://travis-ci.org/sindresorhus/got.svg?branch=master)](https://travis-ci.org/sindresorhus/got) [![Coverage Status](https://coveralls.io/repos/github/sindresorhus/got/badge.svg?branch=master)](https://coveralls.io/github/sindresorhus/got?branch=master) [![Downloads](https://img.shields.io/npm/dm/got.svg)](https://npmjs.com/got)
+
+A nicer interface to the built-in [`http`](http://nodejs.org/api/http.html) module.
+
+It supports following redirects, promises, streams, retries, automagically handling gzip/deflate and some convenience options.
+
+Created because [`request`](https://github.com/request/request) is bloated *(several megabytes!)*.
+
+
+## Install
+
+**WARNING: Node.js 4 or higher is required for got@6 and above.** For older Node.js versions use [got@5](https://github.com/sindresorhus/got/tree/v5.x).
+
+```
+$ npm install --save got
+```
+
+
+## Usage
+
+```js
+const fs = require('fs');
+const got = require('got');
+
+got('todomvc.com')
+ .then(response => {
+ console.log(response.body);
+ //=> '<!doctype html> ...'
+ })
+ .catch(error => {
+ console.log(error.response.body);
+ //=> 'Internal server error ...'
+ });
+
+// Streams
+got.stream('todomvc.com').pipe(fs.createWriteStream('index.html'));
+
+// For POST, PUT and PATCH methods got.stream returns a WritableStream
+fs.createReadStream('index.html').pipe(got.stream.post('todomvc.com'));
+```
+
+
+### API
+
+It's a `GET` request by default, but can be changed in `options`.
+
+#### got(url, [options])
+
+Returns a Promise for a `response` object with a `body` property, a `url` property with the request URL or the final URL after redirects, and a `requestUrl` property with the original request URL.
+
+##### url
+
+Type: `string`, `object`
+
+The URL to request or a [`http.request` options](https://nodejs.org/api/http.html#http_http_request_options_callback) object.
+
+Properties from `options` will override properties in the parsed `url`.
+
+##### options
+
+Type: `object`
+
+Any of the [`http.request`](http://nodejs.org/api/http.html#http_http_request_options_callback) options.
+
+###### body
+
+Type: `string`, `buffer`, `readableStream`, `object`
+
+*This is mutually exclusive with stream mode.*
+
+Body that will be sent with a `POST` request.
+
+If present in `options` and `options.method` is not set, `options.method` will be set to `POST`.
+
+If `content-length` or `transfer-encoding` is not set in `options.headers` and `body` is a string or buffer, `content-length` will be set to the body length.
+
+If `body` is a plain object, it will be stringified with [`querystring.stringify`](https://nodejs.org/api/querystring.html#querystring_querystring_stringify_obj_sep_eq_options) and sent as `application/x-www-form-urlencoded`.
+
+###### encoding
+
+Type: `string`, `null`<br>
+Default: `'utf8'`
+
+Encoding to be used on `setEncoding` of the response data. If `null`, the body is returned as a Buffer.
+
+###### json
+
+Type: `boolean`<br>
+Default: `false`
+
+*This is mutually exclusive with stream mode.*
+
+Parse response body with `JSON.parse` and set `accept` header to `application/json`.
+
+###### query
+
+Type: `string`, `object`<br>
+
+Query string object that will be added to the request URL. This will override the query string in `url`.
+
+###### timeout
+
+Type: `number`, `object`
+
+Milliseconds to wait for a server to send response headers before aborting request with `ETIMEDOUT` error.
+
+Option accepts `object` with separate `connect` and `socket` fields for connection and socket inactivity timeouts.
+
+###### retries
+
+Type: `number`, `function`<br>
+Default: `5`
+
+Number of request retries when network errors happens. Delays between retries counts with function `1000 * Math.pow(2, retry) + Math.random() * 100`, where `retry` is attempt number (starts from 0).
+
+Option accepts `function` with `retry` and `error` arguments. Function must return delay in milliseconds (`0` return value cancels retry).
+
+**Note:** if `retries` is `number`, `ENOTFOUND` and `ENETUNREACH` error will not be retried (see full list in [`is-retry-allowed`](https://github.com/floatdrop/is-retry-allowed/blob/master/index.js#L12) module).
+
+###### followRedirect
+
+Type: `boolean`<br>
+Default: `true`
+
+Defines if redirect responses should be followed automatically.
+
+
+#### Streams
+
+#### got.stream(url, [options])
+
+`stream` method will return Duplex stream with additional events:
+
+##### .on('request', request)
+
+`request` event to get the request object of the request.
+
+**Tip**: You can use `request` event to abort request:
+
+```js
+got.stream('github.com')
+ .on('request', req => setTimeout(() => req.abort(), 50));
+```
+
+##### .on('response', response)
+
+`response` event to get the response object of the final request.
+
+##### .on('redirect', response, nextOptions)
+
+`redirect` event to get the response object of a redirect. The second argument is options for the next request to the redirect location.
+
+##### .on('error', error, body, response)
+
+`error` event emitted in case of protocol error (like `ENOTFOUND` etc.) or status error (4xx or 5xx). The second argument is the body of the server response in case of status error. The third argument is response object.
+
+#### got.get(url, [options])
+#### got.post(url, [options])
+#### got.put(url, [options])
+#### got.patch(url, [options])
+#### got.head(url, [options])
+#### got.delete(url, [options])
+
+Sets `options.method` to the method name and makes a request.
+
+
+## Errors
+
+Each error contains (if available) `statusCode`, `statusMessage`, `host`, `hostname`, `method` and `path` properties to make debugging easier.
+
+In Promise mode, the `response` is attached to the error.
+
+#### got.RequestError
+
+When a request fails. Contains a `code` property with error class code, like `ECONNREFUSED`.
+
+#### got.ReadError
+
+When reading from response stream fails.
+
+#### got.ParseError
+
+When `json` option is enabled and `JSON.parse` fails.
+
+#### got.HTTPError
+
+When server response code is not 2xx. Contains `statusCode` and `statusMessage`.
+
+#### got.MaxRedirectsError
+
+When server redirects you more than 10 times.
+
+
+## Proxies
+
+You can use the [`tunnel`](https://github.com/koichik/node-tunnel) module with the `agent` option to work with proxies:
+
+```js
+const got = require('got');
+const tunnel = require('tunnel');
+
+got('todomvc.com', {
+ agent: tunnel.httpOverHttp({
+ proxy: {
+ host: 'localhost'
+ }
+ })
+});
+```
+
+
+## Cookies
+
+You can use the [`cookie`](https://github.com/jshttp/cookie) module to include cookies in a request:
+
+```js
+const got = require('got');
+const cookie = require('cookie');
+
+got('google.com', {
+ headers: {
+ cookie: cookie.serialize('foo', 'bar')
+ }
+});
+```
+
+
+## Form data
+
+You can use the [`form-data`](https://github.com/form-data/form-data) module to create POST request with form data:
+
+```js
+const fs = require('fs');
+const got = require('got');
+const FormData = require('form-data');
+const form = new FormData();
+
+form.append('my_file', fs.createReadStream('/foo/bar.jpg'));
+
+got.post('google.com', {
+ body: form
+});
+```
+
+
+## OAuth
+
+You can use the [`oauth-1.0a`](https://github.com/ddo/oauth-1.0a) module to create a signed OAuth request:
+
+```js
+const got = require('got');
+const crypto = require('crypto');
+const OAuth = require('oauth-1.0a');
+
+const oauth = OAuth({
+ consumer: {
+ key: process.env.CONSUMER_KEY,
+ secret: process.env.CONSUMER_SECRET
+ },
+ signature_method: 'HMAC-SHA1',
+ hash_function: (baseString, key) => crypto.createHmac('sha1', key).update(baseString).digest('base64')
+});
+
+const token = {
+ key: process.env.ACCESS_TOKEN,
+ secret: process.env.ACCESS_TOKEN_SECRET
+};
+
+const url = 'https://api.twitter.com/1.1/statuses/home_timeline.json';
+
+got(url, {
+ headers: oauth.toHeader(oauth.authorize({url, method: 'GET'}, token)),
+ json: true
+});
+```
+
+
+## Unix Domain Sockets
+
+Requests can also be sent via [unix domain sockets](http://serverfault.com/questions/124517/whats-the-difference-between-unix-socket-and-tcp-ip-socket). Use the following URL scheme: `PROTOCOL://unix:SOCKET:PATH`.
+
+- `PROTOCOL` - `http` or `https` *(optional)*
+- `SOCKET` - absolute path to a unix domain socket, e.g. `/var/run/docker.sock`
+- `PATH` - request path, e.g. `/v2/keys`
+
+```js
+got('http://unix:/var/run/docker.sock:/containers/json');
+
+// or without protocol (http by default)
+got('unix:/var/run/docker.sock:/containers/json');
+```
+
+
+## Tip
+
+It's a good idea to set the `'user-agent'` header so the provider can more easily see how their resource is used. By default, it's the URL to this repo.
+
+```js
+const got = require('got');
+const pkg = require('./package.json');
+
+got('todomvc.com', {
+ headers: {
+ 'user-agent': `my-module/${pkg.version} (https://github.com/username/my-module)`
+ }
+});
+```
+
+
+## Related
+
+- [gh-got](https://github.com/sindresorhus/gh-got) - Convenience wrapper for interacting with the GitHub API
+- [travis-got](https://github.com/samverschueren/travis-got) - Convenience wrapper for interacting with the Travis API
+
+
+## Created by
+
+[![Sindre Sorhus](https://avatars.githubusercontent.com/u/170270?v=3&s=100)](https://sindresorhus.com) | [![Vsevolod Strukchinsky](https://avatars.githubusercontent.com/u/365089?v=3&s=100)](https://github.com/floatdrop)
+---|---
+[Sindre Sorhus](https://sindresorhus.com) | [Vsevolod Strukchinsky](https://github.com/floatdrop)
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/.npmignore b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/.npmignore
new file mode 100644
index 000000000..419602846
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/.npmignore
@@ -0,0 +1,6 @@
+.editorconfig
+.eslintignore
+.eslintrc
+.travis.yml
+npm-debug.log
+coverage
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/CHANGELOG.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/CHANGELOG.md
new file mode 100644
index 000000000..7b8f450fa
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/CHANGELOG.md
@@ -0,0 +1,57 @@
+# Change Log
+
+All notable changes will be documented in this file.
+
+## [3.0.1] - 2016-08-07
+
+### Changes
+
+- Fix recursion bug (Lukas Eipert)
+- Implement alternative base64 encoding/decoding implementation for Node 6 (Lukas Eipert)
+
+## [3.0.0] - 2016-08-04
+
+### Added
+
+- Support for Basic Authentication (username/password) (Lukas Eipert)
+
+### Changes
+
+- The result format of the output changed from a simple string to an object which contains the token type
+
+```js
+ // before: returns 'tokenString'
+ // after: returns {token: 'tokenString', type: 'Bearer'}
+ getAuthToken()
+```
+
+## [2.1.1] - 2016-07-10
+
+### Changes
+
+- Fix infinite loop when recursively resolving registry URLs on Windows (Espen Hovlandsdal)
+
+## [2.1.0] - 2016-07-07
+
+### Added
+
+- Add feature to find configured registry URL for a scope (Espen Hovlandsdal)
+
+## [2.0.0] - 2016-06-17
+
+### Changes
+
+- Fix tokens defined by reference to environment variables (Dan MacTough)
+
+## [1.1.1] - 2016-04-26
+
+### Changes
+
+- Fix for registries with port number in URL (Ryan Day)
+
+[1.1.1]: https://github.com/rexxars/registry-auth-token/compare/a5b4fe2f5ff982110eb8a813ba1b3b3c5d851af1...v1.1.1
+[2.0.0]: https://github.com/rexxars/registry-auth-token/compare/v1.1.1...v2.0.0
+[2.1.0]: https://github.com/rexxars/registry-auth-token/compare/v2.0.0...v2.1.0
+[2.1.1]: https://github.com/rexxars/registry-auth-token/compare/v2.1.0...v2.1.1
+[3.0.0]: https://github.com/rexxars/registry-auth-token/compare/v2.1.1...v3.0.0
+[3.0.1]: https://github.com/rexxars/registry-auth-token/compare/v3.0.0...v3.0.1
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/LICENSE b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/LICENSE
new file mode 100644
index 000000000..0de12e338
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2016 Espen Hovlandsdal
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/README.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/README.md
new file mode 100644
index 000000000..841bdc01a
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/README.md
@@ -0,0 +1,57 @@
+# registry-auth-token
+
+[![npm version](http://img.shields.io/npm/v/registry-auth-token.svg?style=flat-square)](http://browsenpm.org/package/registry-auth-token)[![Build Status](http://img.shields.io/travis/rexxars/registry-auth-token/master.svg?style=flat-square)](https://travis-ci.org/rexxars/registry-auth-token)
+
+Get the auth token set for an npm registry from `.npmrc`. Also allows fetching the configured registry URL for a given npm scope.
+
+## Installing
+
+```
+npm install --save registry-auth-token
+```
+
+## Usage
+
+Returns an object containing `token` and `type`, or `undefined` if no token can be found. `type` can be either `Bearer` or `Basic`.
+
+```js
+var getAuthToken = require('registry-auth-token')
+var getRegistryUrl = require('registry-auth-token/registry-url')
+
+// Get auth token and type for default `registry` set in `.npmrc`
+console.log(getAuthToken()) // {token: 'someToken', type: 'Bearer'}
+
+// Get auth token for a specific registry URL
+console.log(getAuthToken('//registry.foo.bar'))
+
+// Find the registry auth token for a given URL (with deep path):
+// If registry is at `//some.host/registry`
+// URL passed is `//some.host/registry/deep/path`
+// Will find token the closest matching path; `//some.host/registry`
+console.log(getAuthToken('//some.host/registry/deep/path', {recursive: true}))
+
+// Find the configured registry url for scope `@foobar`.
+// Falls back to the global registry if not defined.
+console.log(getRegistryUrl('@foobar'))
+```
+
+## Return value
+
+```js
+// If auth info can be found:
+{token: 'someToken', type: 'Bearer'}
+
+// Or:
+{token: 'someOtherToken', type: 'Basic'}
+
+// Or, if nothing is found:
+undefined
+```
+
+## Security
+
+Please be careful when using this. Leaking your auth token is dangerous.
+
+## License
+
+MIT-licensed. See LICENSE.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/base64.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/base64.js
new file mode 100644
index 000000000..e150099d0
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/base64.js
@@ -0,0 +1,20 @@
+function decodeBase64Old(base64) {
+ return new Buffer(base64, 'base64').toString('utf8')
+}
+
+function decodeBase64New(base64) {
+ return Buffer.from(base64, 'base64').toString('utf8')
+}
+
+function encodeBase64Old(string) {
+ return new Buffer(string, 'utf8').toString('base64')
+}
+
+function encodeBase64New(string) {
+ return Buffer.from(string, 'utf8').toString('base64')
+}
+
+module.exports = {
+ decodeBase64: Buffer.prototype.from ? decodeBase64New : decodeBase64Old,
+ encodeBase64: Buffer.prototype.from ? encodeBase64New : encodeBase64Old
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/index.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/index.js
new file mode 100644
index 000000000..fbddf6cf0
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/index.js
@@ -0,0 +1,92 @@
+var url = require('url')
+var base64 = require('./base64')
+
+var decodeBase64 = base64.decodeBase64
+var encodeBase64 = base64.encodeBase64
+
+var tokenKey = ':_authToken'
+var userKey = ':username'
+var passwordKey = ':_password'
+
+module.exports = function getRegistryAuthInfo(registryUrl, opts) {
+ var options = opts || {}
+ var npmrc = require('rc')('npm', {registry: 'https://registry.npmjs.org/'})
+ var parsed = url.parse(registryUrl || npmrc.registry, false, true)
+ var pathname
+
+ while (pathname !== '/') {
+ pathname = parsed.pathname || '/'
+
+ var regUrl = '//' + parsed.host + pathname.replace(/\/$/, '')
+ var authInfo = getAuthInfoForUrl(regUrl, npmrc)
+ if (authInfo) {
+ return authInfo
+ }
+
+ // break if not recursive
+ if (!options.recursive) {
+ return undefined
+ }
+
+ parsed.pathname = url.resolve(normalizePath(pathname), '..') || '/'
+ }
+
+ return undefined
+}
+
+function normalizePath(path) {
+ return path[path.length - 1] === '/' ? path : path + '/'
+}
+
+function getAuthInfoForUrl(regUrl, npmrc) {
+ // try to get bearer token
+ var bearerAuth = getBearerToken(npmrc[regUrl + tokenKey] || npmrc[regUrl + '/' + tokenKey])
+ if (bearerAuth) {
+ return bearerAuth
+ }
+
+ // try to get basic token
+ var username = npmrc[regUrl + userKey] || npmrc[regUrl + '/' + userKey]
+ var password = npmrc[regUrl + passwordKey] || npmrc[regUrl + '/' + passwordKey]
+ var basicAuth = getTokenForUsernameAndPassword(username, password)
+ if (basicAuth) {
+ return basicAuth
+ }
+
+ return undefined
+}
+
+function getBearerToken(tok) {
+ if (!tok) {
+ return undefined
+ }
+
+ // check if bearer token
+ var token = tok.replace(/^\$\{?([^}]*)\}?$/, function (fullMatch, envVar) {
+ return process.env[envVar]
+ })
+
+ return {token: token, type: 'Bearer'}
+}
+
+function getTokenForUsernameAndPassword(username, password) {
+ if (!username || !password) {
+ return undefined
+ }
+
+ // passwords are base64 encoded, so we need to decode it
+ // See https://github.com/npm/npm/blob/v3.10.6/lib/config/set-credentials-by-uri.js#L26
+ var pass = decodeBase64(password)
+
+ // a basic auth token is base64 encoded 'username:password'
+ // See https://github.com/npm/npm/blob/v3.10.6/lib/config/get-credentials-by-uri.js#L70
+ var token = encodeBase64(username + ':' + pass)
+
+ // we found a basicToken token so let's exit the loop
+ return {
+ token: token,
+ type: 'Basic',
+ password: pass,
+ username: username
+ }
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/.bin/rc b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/.bin/rc
new file mode 120000
index 000000000..a3f6fc7f1
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/.bin/rc
@@ -0,0 +1 @@
+../rc/index.js \ No newline at end of file
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/.npmignore b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/.npmignore
new file mode 100644
index 000000000..13abef4f5
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/.npmignore
@@ -0,0 +1,3 @@
+node_modules
+node_modules/*
+npm_debug.log
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/LICENSE.APACHE2 b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/LICENSE.APACHE2
new file mode 100644
index 000000000..6366c0471
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/LICENSE.APACHE2
@@ -0,0 +1,15 @@
+Apache License, Version 2.0
+
+Copyright (c) 2011 Dominic Tarr
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/LICENSE.BSD b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/LICENSE.BSD
new file mode 100644
index 000000000..c6f2e5490
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/LICENSE.BSD
@@ -0,0 +1,26 @@
+Copyright (c) 2013, Dominic Tarr
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+The views and conclusions contained in the software and documentation are those
+of the authors and should not be interpreted as representing official policies,
+either expressed or implied, of the FreeBSD Project.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/LICENSE.MIT b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/LICENSE.MIT
new file mode 100644
index 000000000..49e7da41f
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/LICENSE.MIT
@@ -0,0 +1,24 @@
+The MIT License
+
+Copyright (c) 2011 Dominic Tarr
+
+Permission is hereby granted, free of charge,
+to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to
+deal in the Software without restriction, including
+without limitation the rights to use, copy, modify,
+merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom
+the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
+ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/README.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/README.md
new file mode 100644
index 000000000..b7f77d566
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/README.md
@@ -0,0 +1,149 @@
+# rc
+
+The non-configurable configuration loader for lazy people.
+
+## Usage
+
+The only option is to pass rc the name of your app, and your default configuration.
+
+```javascript
+var conf = require('rc')(appname, {
+ //defaults go here.
+ port: 2468,
+
+ //defaults which are objects will be merged, not replaced
+ views: {
+ engine: 'jade'
+ }
+});
+```
+
+`rc` will return your configuration options merged with the defaults you specify.
+If you pass in a predefined defaults object, it will be mutated:
+
+```javascript
+var conf = {};
+require('rc')(appname, conf);
+```
+
+If `rc` finds any config files for your app, the returned config object will have
+a `configs` array containing their paths:
+
+```javascript
+var appCfg = require('rc')(appname, conf);
+appCfg.configs[0] // /etc/appnamerc
+appCfg.configs[1] // /home/dominictarr/.config/appname
+appCfg.config // same as appCfg.configs[appCfg.configs.length - 1]
+```
+
+## Standards
+
+Given your application name (`appname`), rc will look in all the obvious places for configuration.
+
+ * command line arguments (parsed by minimist)
+ * environment variables prefixed with `${appname}_`
+ * or use "\_\_" to indicate nested properties <br/> _(e.g. `appname_foo__bar__baz` => `foo.bar.baz`)_
+ * if you passed an option `--config file` then from that file
+ * a local `.${appname}rc` or the first found looking in `./ ../ ../../ ../../../` etc.
+ * `$HOME/.${appname}rc`
+ * `$HOME/.${appname}/config`
+ * `$HOME/.config/${appname}`
+ * `$HOME/.config/${appname}/config`
+ * `/etc/${appname}rc`
+ * `/etc/${appname}/config`
+ * the defaults object you passed in.
+
+All configuration sources that were found will be flattened into one object,
+so that sources **earlier** in this list override later ones.
+
+
+## Configuration File Formats
+
+Configuration files (e.g. `.appnamerc`) may be in either [json](http://json.org/example) or [ini](http://en.wikipedia.org/wiki/INI_file) format. The example configurations below are equivalent:
+
+
+#### Formatted as `ini`
+
+```
+; You can include comments in `ini` format if you want.
+
+dependsOn=0.10.0
+
+
+; `rc` has built-in support for ini sections, see?
+
+[commands]
+ www = ./commands/www
+ console = ./commands/repl
+
+
+; You can even do nested sections
+
+[generators.options]
+ engine = ejs
+
+[generators.modules]
+ new = generate-new
+ engine = generate-backend
+
+```
+
+#### Formatted as `json`
+
+```javascript
+{
+ // You can even comment your JSON, if you want
+ "dependsOn": "0.10.0",
+ "commands": {
+ "www": "./commands/www",
+ "console": "./commands/repl"
+ },
+ "generators": {
+ "options": {
+ "engine": "ejs"
+ },
+ "modules": {
+ "new": "generate-new",
+ "backend": "generate-backend"
+ }
+ }
+}
+```
+
+Comments are stripped from JSON config via [strip-json-comments](https://github.com/sindresorhus/strip-json-comments).
+
+> Since ini, and env variables do not have a standard for types, your application needs be prepared for strings.
+
+
+
+## Advanced Usage
+
+#### Pass in your own `argv`
+
+You may pass in your own `argv` as the third argument to `rc`. This is in case you want to [use your own command-line opts parser](https://github.com/dominictarr/rc/pull/12).
+
+```javascript
+require('rc')(appname, defaults, customArgvParser);
+```
+
+## Pass in your own parser
+
+If you have a special need to use a non-standard parser,
+you can do so by passing in the parser as the 4th argument.
+(leave the 3rd as null to get the default args parser)
+
+```javascript
+require('rc')(appname, defaults, null, parser);
+```
+
+This may also be used to force a more strict format,
+such as strict, valid JSON only.
+
+## Note on Performance
+
+`rc` is running `fs.statSync`-- so make sure you don't use it in a hot code path (e.g. a request handler)
+
+
+## License
+
+Multi-licensed under the two-clause BSD License, MIT License, or Apache License, version 2.0
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/browser.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/browser.js
new file mode 100644
index 000000000..9ea1a3e39
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/browser.js
@@ -0,0 +1,7 @@
+
+// when this is loaded into the browser,
+// just use the defaults...
+
+module.exports = function (name, defaults) {
+ return defaults
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/index.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/index.js
new file mode 100755
index 000000000..6f8f1139d
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/index.js
@@ -0,0 +1,60 @@
+#! /usr/bin/env node
+var cc = require('./lib/utils')
+var join = require('path').join
+var deepExtend = require('deep-extend')
+var etc = '/etc'
+var win = process.platform === "win32"
+var home = win
+ ? process.env.USERPROFILE
+ : process.env.HOME
+
+module.exports = function (name, defaults, argv, parse) {
+ if('string' !== typeof name)
+ throw new Error('rc(name): name *must* be string')
+ if(!argv)
+ argv = require('minimist')(process.argv.slice(2))
+ defaults = (
+ 'string' === typeof defaults
+ ? cc.json(defaults) : defaults
+ ) || {}
+
+ parse = parse || cc.parse
+
+ var env = cc.env(name + '_')
+
+ var configs = [defaults]
+ var configFiles = []
+ function addConfigFile (file) {
+ if (configFiles.indexOf(file) >= 0) return
+ var fileConfig = cc.file(file)
+ if (fileConfig) {
+ configs.push(parse(fileConfig))
+ configFiles.push(file)
+ }
+ }
+
+ // which files do we look at?
+ if (!win)
+ [join(etc, name, 'config'),
+ join(etc, name + 'rc')].forEach(addConfigFile)
+ if (home)
+ [join(home, '.config', name, 'config'),
+ join(home, '.config', name),
+ join(home, '.' + name, 'config'),
+ join(home, '.' + name + 'rc')].forEach(addConfigFile)
+ addConfigFile(cc.find('.'+name+'rc'))
+ if (env.config) addConfigFile(env.config)
+ if (argv.config) addConfigFile(argv.config)
+
+ return deepExtend.apply(null, configs.concat([
+ env,
+ argv,
+ configFiles.length ? {configs: configFiles, config: configFiles[configFiles.length - 1]} : undefined,
+ ]))
+}
+
+if(!module.parent) {
+ console.log(
+ JSON.stringify(module.exports(process.argv[2]), false, 2)
+ )
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/lib/utils.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/lib/utils.js
new file mode 100644
index 000000000..c1bbe4d38
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/lib/utils.js
@@ -0,0 +1,102 @@
+'use strict';
+var fs = require('fs')
+var ini = require('ini')
+var path = require('path')
+var stripJsonComments = require('strip-json-comments')
+
+var parse = exports.parse = function (content) {
+
+ //if it ends in .json or starts with { then it must be json.
+ //must be done this way, because ini accepts everything.
+ //can't just try and parse it and let it throw if it's not ini.
+ //everything is ini. even json with a syntax error.
+
+ if(/^\s*{/.test(content))
+ return JSON.parse(stripJsonComments(content))
+ return ini.parse(content)
+
+}
+
+var file = exports.file = function () {
+ var args = [].slice.call(arguments).filter(function (arg) { return arg != null })
+
+ //path.join breaks if it's a not a string, so just skip this.
+ for(var i in args)
+ if('string' !== typeof args[i])
+ return
+
+ var file = path.join.apply(null, args)
+ var content
+ try {
+ return fs.readFileSync(file,'utf-8')
+ } catch (err) {
+ return
+ }
+}
+
+var json = exports.json = function () {
+ var content = file.apply(null, arguments)
+ return content ? parse(content) : null
+}
+
+var env = exports.env = function (prefix, env) {
+ env = env || process.env
+ var obj = {}
+ var l = prefix.length
+ for(var k in env) {
+ if((k.indexOf(prefix)) === 0) {
+
+ var keypath = k.substring(l).split('__')
+
+ // Trim empty strings from keypath array
+ var _emptyStringIndex
+ while ((_emptyStringIndex=keypath.indexOf('')) > -1) {
+ keypath.splice(_emptyStringIndex, 1)
+ }
+
+ var cursor = obj
+ keypath.forEach(function _buildSubObj(_subkey,i){
+
+ // (check for _subkey first so we ignore empty strings)
+ // (check for cursor to avoid assignment to primitive objects)
+ if (!_subkey || typeof cursor !== 'object')
+ return
+
+ // If this is the last key, just stuff the value in there
+ // Assigns actual value from env variable to final key
+ // (unless it's just an empty string- in that case use the last valid key)
+ if (i === keypath.length-1)
+ cursor[_subkey] = env[k]
+
+
+ // Build sub-object if nothing already exists at the keypath
+ if (cursor[_subkey] === undefined)
+ cursor[_subkey] = {}
+
+ // Increment cursor used to track the object at the current depth
+ cursor = cursor[_subkey]
+
+ })
+
+ }
+
+ }
+
+ return obj
+}
+
+var find = exports.find = function () {
+ var rel = path.join.apply(null, [].slice.call(arguments))
+
+ function find(start, rel) {
+ var file = path.join(start, rel)
+ try {
+ fs.statSync(file)
+ return file
+ } catch (err) {
+ if(path.dirname(start) !== start) // root
+ return find(path.dirname(start), rel)
+ }
+ }
+ return find(process.cwd(), rel)
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/.bin/strip-json-comments b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/.bin/strip-json-comments
new file mode 120000
index 000000000..63d549f96
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/.bin/strip-json-comments
@@ -0,0 +1 @@
+../strip-json-comments/cli.js \ No newline at end of file
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/deep-extend/CHANGELOG.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/deep-extend/CHANGELOG.md
new file mode 100644
index 000000000..f3efe0b22
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/deep-extend/CHANGELOG.md
@@ -0,0 +1,21 @@
+Changelog
+=========
+
+v0.4.1
+------
+
+- Removed test code from <b>npm</b> package
+ ([see pull request #21](https://github.com/unclechu/node-deep-extend/pull/21));
+- Increased minimal version of Node from 0.4.0 to 0.12.0
+ (because can't run tests on lesser version anyway).
+
+v0.4.0
+------
+
+Broken backward compatibility with v0.3.x
+
+- Fixed bug with extending arrays instead of cloning;
+- Deep cloning for arrays;
+- Check for own property;
+- Fixed some documentation issues;
+- Strict JS mode.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/deep-extend/LICENSE b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/deep-extend/LICENSE
new file mode 100644
index 000000000..acc4662ea
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/deep-extend/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2013-2015, Viacheslav Lotsmanov
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/deep-extend/README.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/deep-extend/README.md
new file mode 100644
index 000000000..cc17c9cd0
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/deep-extend/README.md
@@ -0,0 +1,90 @@
+Deep Extend
+===========
+
+Recursive object extending.
+
+[![NPM](https://nodei.co/npm/deep-extend.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/deep-extend/)
+[![NPM](https://nodei.co/npm-dl/deep-extend.png?height=3)](https://nodei.co/npm/deep-extend/)
+
+Install
+-------
+
+```bash
+$ npm install deep-extend
+```
+
+Usage
+-----
+
+```javascript
+var deepExtend = require('deep-extend');
+var obj1 = {
+ a: 1,
+ b: 2,
+ d: {
+ a: 1,
+ b: [],
+ c: { test1: 123, test2: 321 }
+ },
+ f: 5,
+ g: 123,
+ i: 321,
+ j: [1, 2]
+};
+var obj2 = {
+ b: 3,
+ c: 5,
+ d: {
+ b: { first: 'one', second: 'two' },
+ c: { test2: 222 }
+ },
+ e: { one: 1, two: 2 },
+ f: [],
+ g: (void 0),
+ h: /abc/g,
+ i: null,
+ j: [3, 4]
+};
+
+deepExtend(obj1, obj2);
+
+console.log(obj1);
+/*
+{ a: 1,
+ b: 3,
+ d:
+ { a: 1,
+ b: { first: 'one', second: 'two' },
+ c: { test1: 123, test2: 222 } },
+ f: null,
+ g: undefined,
+ c: 5,
+ e: { one: 1, two: 2 },
+ h: /abc/g,
+ i: null,
+ j: [3, 4] }
+*/
+```
+
+Unit testing
+------------
+
+```bash
+$ npm test
+```
+
+Changelog
+---------
+
+[CHANGELOG.md](./CHANGELOG.md)
+
+Any issues?
+-----------
+
+Please, report about issues
+[here](https://github.com/unclechu/node-deep-extend/issues).
+
+License
+-------
+
+[MIT](./LICENSE)
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/deep-extend/index.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/deep-extend/index.js
new file mode 100644
index 000000000..762d81e95
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/deep-extend/index.js
@@ -0,0 +1 @@
+module.exports = require('./lib/deep-extend');
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/deep-extend/lib/deep-extend.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/deep-extend/lib/deep-extend.js
new file mode 100644
index 000000000..522461d4d
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/deep-extend/lib/deep-extend.js
@@ -0,0 +1,144 @@
+/*!
+ * @description Recursive object extending
+ * @author Viacheslav Lotsmanov <lotsmanov89@gmail.com>
+ * @license MIT
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2013-2015 Viacheslav Lotsmanov
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+ * the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+'use strict';
+
+function isSpecificValue(val) {
+ return (
+ val instanceof Buffer
+ || val instanceof Date
+ || val instanceof RegExp
+ ) ? true : false;
+}
+
+function cloneSpecificValue(val) {
+ if (val instanceof Buffer) {
+ var x = new Buffer(val.length);
+ val.copy(x);
+ return x;
+ } else if (val instanceof Date) {
+ return new Date(val.getTime());
+ } else if (val instanceof RegExp) {
+ return new RegExp(val);
+ } else {
+ throw new Error('Unexpected situation');
+ }
+}
+
+/**
+ * Recursive cloning array.
+ */
+function deepCloneArray(arr) {
+ var clone = [];
+ arr.forEach(function (item, index) {
+ if (typeof item === 'object' && item !== null) {
+ if (Array.isArray(item)) {
+ clone[index] = deepCloneArray(item);
+ } else if (isSpecificValue(item)) {
+ clone[index] = cloneSpecificValue(item);
+ } else {
+ clone[index] = deepExtend({}, item);
+ }
+ } else {
+ clone[index] = item;
+ }
+ });
+ return clone;
+}
+
+/**
+ * Extening object that entered in first argument.
+ *
+ * Returns extended object or false if have no target object or incorrect type.
+ *
+ * If you wish to clone source object (without modify it), just use empty new
+ * object as first argument, like this:
+ * deepExtend({}, yourObj_1, [yourObj_N]);
+ */
+var deepExtend = module.exports = function (/*obj_1, [obj_2], [obj_N]*/) {
+ if (arguments.length < 1 || typeof arguments[0] !== 'object') {
+ return false;
+ }
+
+ if (arguments.length < 2) {
+ return arguments[0];
+ }
+
+ var target = arguments[0];
+
+ // convert arguments to array and cut off target object
+ var args = Array.prototype.slice.call(arguments, 1);
+
+ var val, src, clone;
+
+ args.forEach(function (obj) {
+ // skip argument if it is array or isn't object
+ if (typeof obj !== 'object' || Array.isArray(obj)) {
+ return;
+ }
+
+ Object.keys(obj).forEach(function (key) {
+ src = target[key]; // source value
+ val = obj[key]; // new value
+
+ // recursion prevention
+ if (val === target) {
+ return;
+
+ /**
+ * if new value isn't object then just overwrite by new value
+ * instead of extending.
+ */
+ } else if (typeof val !== 'object' || val === null) {
+ target[key] = val;
+ return;
+
+ // just clone arrays (and recursive clone objects inside)
+ } else if (Array.isArray(val)) {
+ target[key] = deepCloneArray(val);
+ return;
+
+ // custom cloning and overwrite for specific objects
+ } else if (isSpecificValue(val)) {
+ target[key] = cloneSpecificValue(val);
+ return;
+
+ // overwrite by new value if source isn't object or array
+ } else if (typeof src !== 'object' || src === null || Array.isArray(src)) {
+ target[key] = deepExtend({}, val);
+ return;
+
+ // source value and new value is objects both, extending...
+ } else {
+ target[key] = deepExtend(src, val);
+ return;
+ }
+ });
+ });
+
+ return target;
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/deep-extend/package.json b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/deep-extend/package.json
new file mode 100644
index 000000000..f725d2069
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/deep-extend/package.json
@@ -0,0 +1,120 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "deep-extend@~0.4.0",
+ "scope": null,
+ "escapedName": "deep-extend",
+ "name": "deep-extend",
+ "rawSpec": "~0.4.0",
+ "spec": ">=0.4.0 <0.5.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc"
+ ]
+ ],
+ "_from": "deep-extend@>=0.4.0 <0.5.0",
+ "_id": "deep-extend@0.4.1",
+ "_inCache": true,
+ "_location": "/update-notifier/latest-version/package-json/registry-auth-token/rc/deep-extend",
+ "_nodeVersion": "0.12.0",
+ "_npmUser": {
+ "name": "unclechu",
+ "email": "lotsmanov89@gmail.com"
+ },
+ "_npmVersion": "2.5.1",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "deep-extend@~0.4.0",
+ "scope": null,
+ "escapedName": "deep-extend",
+ "name": "deep-extend",
+ "rawSpec": "~0.4.0",
+ "spec": ">=0.4.0 <0.5.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/latest-version/package-json/registry-auth-token/rc"
+ ],
+ "_resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz",
+ "_shasum": "efe4113d08085f4e6f9687759810f807469e2253",
+ "_shrinkwrap": null,
+ "_spec": "deep-extend@~0.4.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc",
+ "author": {
+ "name": "Viacheslav Lotsmanov",
+ "email": "lotsmanov89@gmail.com"
+ },
+ "bugs": {
+ "url": "https://github.com/unclechu/node-deep-extend/issues"
+ },
+ "contributors": [
+ {
+ "name": "Romain Prieto",
+ "url": "https://github.com/rprieto"
+ },
+ {
+ "name": "Max Maximov",
+ "url": "https://github.com/maxmaximov"
+ }
+ ],
+ "dependencies": {},
+ "description": "Recursive object extending",
+ "devDependencies": {
+ "mocha": "^2.2.1",
+ "should": "^5.2.0"
+ },
+ "directories": {
+ "lib": "./lib/",
+ "test": "./test/"
+ },
+ "dist": {
+ "shasum": "efe4113d08085f4e6f9687759810f807469e2253",
+ "tarball": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz"
+ },
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.12.0"
+ },
+ "files": [
+ "lib/deep-extend.js",
+ "index.js"
+ ],
+ "gitHead": "08e39356bba769744c669eb219a31fee07decd19",
+ "homepage": "https://github.com/unclechu/node-deep-extend",
+ "keywords": [
+ "deep-extend",
+ "extend",
+ "deep",
+ "recursive",
+ "xtend",
+ "clone",
+ "merge",
+ "json"
+ ],
+ "license": "MIT",
+ "licenses": [
+ {
+ "type": "MIT",
+ "url": "https://raw.githubusercontent.com/unclechu/node-deep-extend/master/LICENSE"
+ }
+ ],
+ "main": "lib/deep-extend.js",
+ "maintainers": [
+ {
+ "name": "unclechu",
+ "email": "lotsmanov89@gmail.com"
+ }
+ ],
+ "name": "deep-extend",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/unclechu/node-deep-extend.git"
+ },
+ "scripts": {
+ "test": "mocha"
+ },
+ "version": "0.4.1"
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/.travis.yml b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/.travis.yml
new file mode 100644
index 000000000..74c57bf15
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/.travis.yml
@@ -0,0 +1,8 @@
+language: node_js
+node_js:
+ - "0.8"
+ - "0.10"
+ - "0.12"
+ - "iojs"
+before_install:
+ - npm install -g npm@~1.4.6
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/LICENSE b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/LICENSE
new file mode 100644
index 000000000..ee27ba4b4
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/LICENSE
@@ -0,0 +1,18 @@
+This software is released under the MIT license:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/example/parse.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/example/parse.js
new file mode 100644
index 000000000..abff3e8ee
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/example/parse.js
@@ -0,0 +1,2 @@
+var argv = require('../')(process.argv.slice(2));
+console.dir(argv);
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/index.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/index.js
new file mode 100644
index 000000000..e06783fb1
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/index.js
@@ -0,0 +1,235 @@
+module.exports = function (args, opts) {
+ if (!opts) opts = {};
+
+ var flags = { bools : {}, strings : {}, unknownFn: null };
+
+ if (typeof opts['unknown'] === 'function') {
+ flags.unknownFn = opts['unknown'];
+ }
+
+ if (typeof opts['boolean'] === 'boolean' && opts['boolean']) {
+ flags.allBools = true;
+ } else {
+ [].concat(opts['boolean']).filter(Boolean).forEach(function (key) {
+ flags.bools[key] = true;
+ });
+ }
+
+ var aliases = {};
+ Object.keys(opts.alias || {}).forEach(function (key) {
+ aliases[key] = [].concat(opts.alias[key]);
+ aliases[key].forEach(function (x) {
+ aliases[x] = [key].concat(aliases[key].filter(function (y) {
+ return x !== y;
+ }));
+ });
+ });
+
+ [].concat(opts.string).filter(Boolean).forEach(function (key) {
+ flags.strings[key] = true;
+ if (aliases[key]) {
+ flags.strings[aliases[key]] = true;
+ }
+ });
+
+ var defaults = opts['default'] || {};
+
+ var argv = { _ : [] };
+ Object.keys(flags.bools).forEach(function (key) {
+ setArg(key, defaults[key] === undefined ? false : defaults[key]);
+ });
+
+ var notFlags = [];
+
+ if (args.indexOf('--') !== -1) {
+ notFlags = args.slice(args.indexOf('--')+1);
+ args = args.slice(0, args.indexOf('--'));
+ }
+
+ function argDefined(key, arg) {
+ return (flags.allBools && /^--[^=]+$/.test(arg)) ||
+ flags.strings[key] || flags.bools[key] || aliases[key];
+ }
+
+ function setArg (key, val, arg) {
+ if (arg && flags.unknownFn && !argDefined(key, arg)) {
+ if (flags.unknownFn(arg) === false) return;
+ }
+
+ var value = !flags.strings[key] && isNumber(val)
+ ? Number(val) : val
+ ;
+ setKey(argv, key.split('.'), value);
+
+ (aliases[key] || []).forEach(function (x) {
+ setKey(argv, x.split('.'), value);
+ });
+ }
+
+ function setKey (obj, keys, value) {
+ var o = obj;
+ keys.slice(0,-1).forEach(function (key) {
+ if (o[key] === undefined) o[key] = {};
+ o = o[key];
+ });
+
+ var key = keys[keys.length - 1];
+ if (o[key] === undefined || flags.bools[key] || typeof o[key] === 'boolean') {
+ o[key] = value;
+ }
+ else if (Array.isArray(o[key])) {
+ o[key].push(value);
+ }
+ else {
+ o[key] = [ o[key], value ];
+ }
+ }
+
+ function aliasIsBoolean(key) {
+ return aliases[key].some(function (x) {
+ return flags.bools[x];
+ });
+ }
+
+ for (var i = 0; i < args.length; i++) {
+ var arg = args[i];
+
+ if (/^--.+=/.test(arg)) {
+ // Using [\s\S] instead of . because js doesn't support the
+ // 'dotall' regex modifier. See:
+ // http://stackoverflow.com/a/1068308/13216
+ var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
+ var key = m[1];
+ var value = m[2];
+ if (flags.bools[key]) {
+ value = value !== 'false';
+ }
+ setArg(key, value, arg);
+ }
+ else if (/^--no-.+/.test(arg)) {
+ var key = arg.match(/^--no-(.+)/)[1];
+ setArg(key, false, arg);
+ }
+ else if (/^--.+/.test(arg)) {
+ var key = arg.match(/^--(.+)/)[1];
+ var next = args[i + 1];
+ if (next !== undefined && !/^-/.test(next)
+ && !flags.bools[key]
+ && !flags.allBools
+ && (aliases[key] ? !aliasIsBoolean(key) : true)) {
+ setArg(key, next, arg);
+ i++;
+ }
+ else if (/^(true|false)$/.test(next)) {
+ setArg(key, next === 'true', arg);
+ i++;
+ }
+ else {
+ setArg(key, flags.strings[key] ? '' : true, arg);
+ }
+ }
+ else if (/^-[^-]+/.test(arg)) {
+ var letters = arg.slice(1,-1).split('');
+
+ var broken = false;
+ for (var j = 0; j < letters.length; j++) {
+ var next = arg.slice(j+2);
+
+ if (next === '-') {
+ setArg(letters[j], next, arg)
+ continue;
+ }
+
+ if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) {
+ setArg(letters[j], next.split('=')[1], arg);
+ broken = true;
+ break;
+ }
+
+ if (/[A-Za-z]/.test(letters[j])
+ && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
+ setArg(letters[j], next, arg);
+ broken = true;
+ break;
+ }
+
+ if (letters[j+1] && letters[j+1].match(/\W/)) {
+ setArg(letters[j], arg.slice(j+2), arg);
+ broken = true;
+ break;
+ }
+ else {
+ setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);
+ }
+ }
+
+ var key = arg.slice(-1)[0];
+ if (!broken && key !== '-') {
+ if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1])
+ && !flags.bools[key]
+ && (aliases[key] ? !aliasIsBoolean(key) : true)) {
+ setArg(key, args[i+1], arg);
+ i++;
+ }
+ else if (args[i+1] && /true|false/.test(args[i+1])) {
+ setArg(key, args[i+1] === 'true', arg);
+ i++;
+ }
+ else {
+ setArg(key, flags.strings[key] ? '' : true, arg);
+ }
+ }
+ }
+ else {
+ if (!flags.unknownFn || flags.unknownFn(arg) !== false) {
+ argv._.push(
+ flags.strings['_'] || !isNumber(arg) ? arg : Number(arg)
+ );
+ }
+ if (opts.stopEarly) {
+ argv._.push.apply(argv._, args.slice(i + 1));
+ break;
+ }
+ }
+ }
+
+ Object.keys(defaults).forEach(function (key) {
+ if (!hasKey(argv, key.split('.'))) {
+ setKey(argv, key.split('.'), defaults[key]);
+
+ (aliases[key] || []).forEach(function (x) {
+ setKey(argv, x.split('.'), defaults[key]);
+ });
+ }
+ });
+
+ if (opts['--']) {
+ argv['--'] = new Array();
+ notFlags.forEach(function(key) {
+ argv['--'].push(key);
+ });
+ }
+ else {
+ notFlags.forEach(function(key) {
+ argv._.push(key);
+ });
+ }
+
+ return argv;
+};
+
+function hasKey (obj, keys) {
+ var o = obj;
+ keys.slice(0,-1).forEach(function (key) {
+ o = (o[key] || {});
+ });
+
+ var key = keys[keys.length - 1];
+ return key in o;
+}
+
+function isNumber (x) {
+ if (typeof x === 'number') return true;
+ if (/^0x[0-9a-f]+$/i.test(x)) return true;
+ return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/package.json b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/package.json
new file mode 100644
index 000000000..6f1cd336d
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/package.json
@@ -0,0 +1,105 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "minimist@^1.2.0",
+ "scope": null,
+ "escapedName": "minimist",
+ "name": "minimist",
+ "rawSpec": "^1.2.0",
+ "spec": ">=1.2.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc"
+ ]
+ ],
+ "_from": "minimist@>=1.2.0 <2.0.0",
+ "_id": "minimist@1.2.0",
+ "_inCache": true,
+ "_location": "/update-notifier/latest-version/package-json/registry-auth-token/rc/minimist",
+ "_nodeVersion": "2.4.0",
+ "_npmUser": {
+ "name": "substack",
+ "email": "substack@gmail.com"
+ },
+ "_npmVersion": "3.2.2",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "minimist@^1.2.0",
+ "scope": null,
+ "escapedName": "minimist",
+ "name": "minimist",
+ "rawSpec": "^1.2.0",
+ "spec": ">=1.2.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/latest-version/package-json/registry-auth-token/rc"
+ ],
+ "_resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "_shasum": "a35008b20f41383eec1fb914f4cd5df79a264284",
+ "_shrinkwrap": null,
+ "_spec": "minimist@^1.2.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc",
+ "author": {
+ "name": "James Halliday",
+ "email": "mail@substack.net",
+ "url": "http://substack.net"
+ },
+ "bugs": {
+ "url": "https://github.com/substack/minimist/issues"
+ },
+ "dependencies": {},
+ "description": "parse argument options",
+ "devDependencies": {
+ "covert": "^1.0.0",
+ "tap": "~0.4.0",
+ "tape": "^3.5.0"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "a35008b20f41383eec1fb914f4cd5df79a264284",
+ "tarball": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz"
+ },
+ "gitHead": "dc624482fcfec5bc669c68cdb861f00573ed4e64",
+ "homepage": "https://github.com/substack/minimist",
+ "keywords": [
+ "argv",
+ "getopt",
+ "parser",
+ "optimist"
+ ],
+ "license": "MIT",
+ "main": "index.js",
+ "maintainers": [
+ {
+ "name": "substack",
+ "email": "mail@substack.net"
+ }
+ ],
+ "name": "minimist",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/substack/minimist.git"
+ },
+ "scripts": {
+ "coverage": "covert test/*.js",
+ "test": "tap test/*.js"
+ },
+ "testling": {
+ "files": "test/*.js",
+ "browsers": [
+ "ie/6..latest",
+ "ff/5",
+ "firefox/latest",
+ "chrome/10",
+ "chrome/latest",
+ "safari/5.1",
+ "safari/latest",
+ "opera/12"
+ ]
+ },
+ "version": "1.2.0"
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/readme.markdown b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/readme.markdown
new file mode 100644
index 000000000..30a74cf8c
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/readme.markdown
@@ -0,0 +1,91 @@
+# minimist
+
+parse argument options
+
+This module is the guts of optimist's argument parser without all the
+fanciful decoration.
+
+[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)
+
+[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)
+
+# example
+
+``` js
+var argv = require('minimist')(process.argv.slice(2));
+console.dir(argv);
+```
+
+```
+$ node example/parse.js -a beep -b boop
+{ _: [], a: 'beep', b: 'boop' }
+```
+
+```
+$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz
+{ _: [ 'foo', 'bar', 'baz' ],
+ x: 3,
+ y: 4,
+ n: 5,
+ a: true,
+ b: true,
+ c: true,
+ beep: 'boop' }
+```
+
+# methods
+
+``` js
+var parseArgs = require('minimist')
+```
+
+## var argv = parseArgs(args, opts={})
+
+Return an argument object `argv` populated with the array arguments from `args`.
+
+`argv._` contains all the arguments that didn't have an option associated with
+them.
+
+Numeric-looking arguments will be returned as numbers unless `opts.string` or
+`opts.boolean` is set for that argument name.
+
+Any arguments after `'--'` will not be parsed and will end up in `argv._`.
+
+options can be:
+
+* `opts.string` - a string or array of strings argument names to always treat as
+strings
+* `opts.boolean` - a boolean, string or array of strings to always treat as
+booleans. if `true` will treat all double hyphenated arguments without equal signs
+as boolean (e.g. affects `--foo`, not `-f` or `--foo=bar`)
+* `opts.alias` - an object mapping string names to strings or arrays of string
+argument names to use as aliases
+* `opts.default` - an object mapping string argument names to default values
+* `opts.stopEarly` - when true, populate `argv._` with everything after the
+first non-option
+* `opts['--']` - when true, populate `argv._` with everything before the `--`
+and `argv['--']` with everything after the `--`. Here's an example:
+* `opts.unknown` - a function which is invoked with a command line parameter not
+defined in the `opts` configuration object. If the function returns `false`, the
+unknown option is not added to `argv`.
+
+```
+> require('./')('one two three -- four five --six'.split(' '), { '--': true })
+{ _: [ 'one', 'two', 'three' ],
+ '--': [ 'four', 'five', '--six' ] }
+```
+
+Note that with `opts['--']` set, parsing for arguments still stops after the
+`--`.
+
+# install
+
+With [npm](https://npmjs.org) do:
+
+```
+npm install minimist
+```
+
+# license
+
+MIT
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/all_bool.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/all_bool.js
new file mode 100644
index 000000000..25df1654b
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/all_bool.js
@@ -0,0 +1,32 @@
+var parse = require('../');
+var test = require('tape');
+
+test('flag boolean true (default all --args to boolean)', function (t) {
+ var argv = parse(['moo', '--honk', 'cow'], {
+ boolean: true
+ });
+
+ t.deepEqual(argv, {
+ honk: true,
+ _: ['moo', 'cow']
+ });
+
+ t.deepEqual(typeof argv.honk, 'boolean');
+ t.end();
+});
+
+test('flag boolean true only affects double hyphen arguments without equals signs', function (t) {
+ var argv = parse(['moo', '--honk', 'cow', '-p', '55', '--tacos=good'], {
+ boolean: true
+ });
+
+ t.deepEqual(argv, {
+ honk: true,
+ tacos: 'good',
+ p: 55,
+ _: ['moo', 'cow']
+ });
+
+ t.deepEqual(typeof argv.honk, 'boolean');
+ t.end();
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/bool.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/bool.js
new file mode 100644
index 000000000..6e793e4b6
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/bool.js
@@ -0,0 +1,166 @@
+var parse = require('../');
+var test = require('tape');
+
+test('flag boolean default false', function (t) {
+ var argv = parse(['moo'], {
+ boolean: ['t', 'verbose'],
+ default: { verbose: false, t: false }
+ });
+
+ t.deepEqual(argv, {
+ verbose: false,
+ t: false,
+ _: ['moo']
+ });
+
+ t.deepEqual(typeof argv.verbose, 'boolean');
+ t.deepEqual(typeof argv.t, 'boolean');
+ t.end();
+
+});
+
+test('boolean groups', function (t) {
+ var argv = parse([ '-x', '-z', 'one', 'two', 'three' ], {
+ boolean: ['x','y','z']
+ });
+
+ t.deepEqual(argv, {
+ x : true,
+ y : false,
+ z : true,
+ _ : [ 'one', 'two', 'three' ]
+ });
+
+ t.deepEqual(typeof argv.x, 'boolean');
+ t.deepEqual(typeof argv.y, 'boolean');
+ t.deepEqual(typeof argv.z, 'boolean');
+ t.end();
+});
+test('boolean and alias with chainable api', function (t) {
+ var aliased = [ '-h', 'derp' ];
+ var regular = [ '--herp', 'derp' ];
+ var opts = {
+ herp: { alias: 'h', boolean: true }
+ };
+ var aliasedArgv = parse(aliased, {
+ boolean: 'herp',
+ alias: { h: 'herp' }
+ });
+ var propertyArgv = parse(regular, {
+ boolean: 'herp',
+ alias: { h: 'herp' }
+ });
+ var expected = {
+ herp: true,
+ h: true,
+ '_': [ 'derp' ]
+ };
+
+ t.same(aliasedArgv, expected);
+ t.same(propertyArgv, expected);
+ t.end();
+});
+
+test('boolean and alias with options hash', function (t) {
+ var aliased = [ '-h', 'derp' ];
+ var regular = [ '--herp', 'derp' ];
+ var opts = {
+ alias: { 'h': 'herp' },
+ boolean: 'herp'
+ };
+ var aliasedArgv = parse(aliased, opts);
+ var propertyArgv = parse(regular, opts);
+ var expected = {
+ herp: true,
+ h: true,
+ '_': [ 'derp' ]
+ };
+ t.same(aliasedArgv, expected);
+ t.same(propertyArgv, expected);
+ t.end();
+});
+
+test('boolean and alias array with options hash', function (t) {
+ var aliased = [ '-h', 'derp' ];
+ var regular = [ '--herp', 'derp' ];
+ var alt = [ '--harp', 'derp' ];
+ var opts = {
+ alias: { 'h': ['herp', 'harp'] },
+ boolean: 'h'
+ };
+ var aliasedArgv = parse(aliased, opts);
+ var propertyArgv = parse(regular, opts);
+ var altPropertyArgv = parse(alt, opts);
+ var expected = {
+ harp: true,
+ herp: true,
+ h: true,
+ '_': [ 'derp' ]
+ };
+ t.same(aliasedArgv, expected);
+ t.same(propertyArgv, expected);
+ t.same(altPropertyArgv, expected);
+ t.end();
+});
+
+test('boolean and alias using explicit true', function (t) {
+ var aliased = [ '-h', 'true' ];
+ var regular = [ '--herp', 'true' ];
+ var opts = {
+ alias: { h: 'herp' },
+ boolean: 'h'
+ };
+ var aliasedArgv = parse(aliased, opts);
+ var propertyArgv = parse(regular, opts);
+ var expected = {
+ herp: true,
+ h: true,
+ '_': [ ]
+ };
+
+ t.same(aliasedArgv, expected);
+ t.same(propertyArgv, expected);
+ t.end();
+});
+
+// regression, see https://github.com/substack/node-optimist/issues/71
+test('boolean and --x=true', function(t) {
+ var parsed = parse(['--boool', '--other=true'], {
+ boolean: 'boool'
+ });
+
+ t.same(parsed.boool, true);
+ t.same(parsed.other, 'true');
+
+ parsed = parse(['--boool', '--other=false'], {
+ boolean: 'boool'
+ });
+
+ t.same(parsed.boool, true);
+ t.same(parsed.other, 'false');
+ t.end();
+});
+
+test('boolean --boool=true', function (t) {
+ var parsed = parse(['--boool=true'], {
+ default: {
+ boool: false
+ },
+ boolean: ['boool']
+ });
+
+ t.same(parsed.boool, true);
+ t.end();
+});
+
+test('boolean --boool=false', function (t) {
+ var parsed = parse(['--boool=false'], {
+ default: {
+ boool: true
+ },
+ boolean: ['boool']
+ });
+
+ t.same(parsed.boool, false);
+ t.end();
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/dash.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/dash.js
new file mode 100644
index 000000000..5a4fa5be4
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/dash.js
@@ -0,0 +1,31 @@
+var parse = require('../');
+var test = require('tape');
+
+test('-', function (t) {
+ t.plan(5);
+ t.deepEqual(parse([ '-n', '-' ]), { n: '-', _: [] });
+ t.deepEqual(parse([ '-' ]), { _: [ '-' ] });
+ t.deepEqual(parse([ '-f-' ]), { f: '-', _: [] });
+ t.deepEqual(
+ parse([ '-b', '-' ], { boolean: 'b' }),
+ { b: true, _: [ '-' ] }
+ );
+ t.deepEqual(
+ parse([ '-s', '-' ], { string: 's' }),
+ { s: '-', _: [] }
+ );
+});
+
+test('-a -- b', function (t) {
+ t.plan(3);
+ t.deepEqual(parse([ '-a', '--', 'b' ]), { a: true, _: [ 'b' ] });
+ t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
+ t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
+});
+
+test('move arguments after the -- into their own `--` array', function(t) {
+ t.plan(1);
+ t.deepEqual(
+ parse([ '--name', 'John', 'before', '--', 'after' ], { '--': true }),
+ { name: 'John', _: [ 'before' ], '--': [ 'after' ] });
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/default_bool.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/default_bool.js
new file mode 100644
index 000000000..780a31127
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/default_bool.js
@@ -0,0 +1,35 @@
+var test = require('tape');
+var parse = require('../');
+
+test('boolean default true', function (t) {
+ var argv = parse([], {
+ boolean: 'sometrue',
+ default: { sometrue: true }
+ });
+ t.equal(argv.sometrue, true);
+ t.end();
+});
+
+test('boolean default false', function (t) {
+ var argv = parse([], {
+ boolean: 'somefalse',
+ default: { somefalse: false }
+ });
+ t.equal(argv.somefalse, false);
+ t.end();
+});
+
+test('boolean default to null', function (t) {
+ var argv = parse([], {
+ boolean: 'maybe',
+ default: { maybe: null }
+ });
+ t.equal(argv.maybe, null);
+ var argv = parse(['--maybe'], {
+ boolean: 'maybe',
+ default: { maybe: null }
+ });
+ t.equal(argv.maybe, true);
+ t.end();
+
+})
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/dotted.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/dotted.js
new file mode 100644
index 000000000..d8b3e856e
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/dotted.js
@@ -0,0 +1,22 @@
+var parse = require('../');
+var test = require('tape');
+
+test('dotted alias', function (t) {
+ var argv = parse(['--a.b', '22'], {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
+ t.equal(argv.a.b, 22);
+ t.equal(argv.aa.bb, 22);
+ t.end();
+});
+
+test('dotted default', function (t) {
+ var argv = parse('', {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
+ t.equal(argv.a.b, 11);
+ t.equal(argv.aa.bb, 11);
+ t.end();
+});
+
+test('dotted default with no alias', function (t) {
+ var argv = parse('', {default: {'a.b': 11}});
+ t.equal(argv.a.b, 11);
+ t.end();
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/kv_short.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/kv_short.js
new file mode 100644
index 000000000..ae880be46
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/kv_short.js
@@ -0,0 +1,16 @@
+var parse = require('../');
+var test = require('tape');
+
+test('short -k=v' , function (t) {
+ t.plan(1);
+
+ var argv = parse([ '-b=123' ]);
+ t.deepEqual(argv, { b: 123, _: [] });
+});
+
+test('multi short -k=v' , function (t) {
+ t.plan(1);
+
+ var argv = parse([ '-a=whatever', '-b=robots' ]);
+ t.deepEqual(argv, { a: 'whatever', b: 'robots', _: [] });
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/long.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/long.js
new file mode 100644
index 000000000..5d3a1e09d
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/long.js
@@ -0,0 +1,31 @@
+var test = require('tape');
+var parse = require('../');
+
+test('long opts', function (t) {
+ t.deepEqual(
+ parse([ '--bool' ]),
+ { bool : true, _ : [] },
+ 'long boolean'
+ );
+ t.deepEqual(
+ parse([ '--pow', 'xixxle' ]),
+ { pow : 'xixxle', _ : [] },
+ 'long capture sp'
+ );
+ t.deepEqual(
+ parse([ '--pow=xixxle' ]),
+ { pow : 'xixxle', _ : [] },
+ 'long capture eq'
+ );
+ t.deepEqual(
+ parse([ '--host', 'localhost', '--port', '555' ]),
+ { host : 'localhost', port : 555, _ : [] },
+ 'long captures sp'
+ );
+ t.deepEqual(
+ parse([ '--host=localhost', '--port=555' ]),
+ { host : 'localhost', port : 555, _ : [] },
+ 'long captures eq'
+ );
+ t.end();
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/num.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/num.js
new file mode 100644
index 000000000..2cc77f4d6
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/num.js
@@ -0,0 +1,36 @@
+var parse = require('../');
+var test = require('tape');
+
+test('nums', function (t) {
+ var argv = parse([
+ '-x', '1234',
+ '-y', '5.67',
+ '-z', '1e7',
+ '-w', '10f',
+ '--hex', '0xdeadbeef',
+ '789'
+ ]);
+ t.deepEqual(argv, {
+ x : 1234,
+ y : 5.67,
+ z : 1e7,
+ w : '10f',
+ hex : 0xdeadbeef,
+ _ : [ 789 ]
+ });
+ t.deepEqual(typeof argv.x, 'number');
+ t.deepEqual(typeof argv.y, 'number');
+ t.deepEqual(typeof argv.z, 'number');
+ t.deepEqual(typeof argv.w, 'string');
+ t.deepEqual(typeof argv.hex, 'number');
+ t.deepEqual(typeof argv._[0], 'number');
+ t.end();
+});
+
+test('already a number', function (t) {
+ var argv = parse([ '-x', 1234, 789 ]);
+ t.deepEqual(argv, { x : 1234, _ : [ 789 ] });
+ t.deepEqual(typeof argv.x, 'number');
+ t.deepEqual(typeof argv._[0], 'number');
+ t.end();
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/parse.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/parse.js
new file mode 100644
index 000000000..58f24572c
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/parse.js
@@ -0,0 +1,197 @@
+var parse = require('../');
+var test = require('tape');
+
+test('parse args', function (t) {
+ t.deepEqual(
+ parse([ '--no-moo' ]),
+ { moo : false, _ : [] },
+ 'no'
+ );
+ t.deepEqual(
+ parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]),
+ { v : ['a','b','c'], _ : [] },
+ 'multi'
+ );
+ t.end();
+});
+
+test('comprehensive', function (t) {
+ t.deepEqual(
+ parse([
+ '--name=meowmers', 'bare', '-cats', 'woo',
+ '-h', 'awesome', '--multi=quux',
+ '--key', 'value',
+ '-b', '--bool', '--no-meep', '--multi=baz',
+ '--', '--not-a-flag', 'eek'
+ ]),
+ {
+ c : true,
+ a : true,
+ t : true,
+ s : 'woo',
+ h : 'awesome',
+ b : true,
+ bool : true,
+ key : 'value',
+ multi : [ 'quux', 'baz' ],
+ meep : false,
+ name : 'meowmers',
+ _ : [ 'bare', '--not-a-flag', 'eek' ]
+ }
+ );
+ t.end();
+});
+
+test('flag boolean', function (t) {
+ var argv = parse([ '-t', 'moo' ], { boolean: 't' });
+ t.deepEqual(argv, { t : true, _ : [ 'moo' ] });
+ t.deepEqual(typeof argv.t, 'boolean');
+ t.end();
+});
+
+test('flag boolean value', function (t) {
+ var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], {
+ boolean: [ 't', 'verbose' ],
+ default: { verbose: true }
+ });
+
+ t.deepEqual(argv, {
+ verbose: false,
+ t: true,
+ _: ['moo']
+ });
+
+ t.deepEqual(typeof argv.verbose, 'boolean');
+ t.deepEqual(typeof argv.t, 'boolean');
+ t.end();
+});
+
+test('newlines in params' , function (t) {
+ var args = parse([ '-s', "X\nX" ])
+ t.deepEqual(args, { _ : [], s : "X\nX" });
+
+ // reproduce in bash:
+ // VALUE="new
+ // line"
+ // node program.js --s="$VALUE"
+ args = parse([ "--s=X\nX" ])
+ t.deepEqual(args, { _ : [], s : "X\nX" });
+ t.end();
+});
+
+test('strings' , function (t) {
+ var s = parse([ '-s', '0001234' ], { string: 's' }).s;
+ t.equal(s, '0001234');
+ t.equal(typeof s, 'string');
+
+ var x = parse([ '-x', '56' ], { string: 'x' }).x;
+ t.equal(x, '56');
+ t.equal(typeof x, 'string');
+ t.end();
+});
+
+test('stringArgs', function (t) {
+ var s = parse([ ' ', ' ' ], { string: '_' })._;
+ t.same(s.length, 2);
+ t.same(typeof s[0], 'string');
+ t.same(s[0], ' ');
+ t.same(typeof s[1], 'string');
+ t.same(s[1], ' ');
+ t.end();
+});
+
+test('empty strings', function(t) {
+ var s = parse([ '-s' ], { string: 's' }).s;
+ t.equal(s, '');
+ t.equal(typeof s, 'string');
+
+ var str = parse([ '--str' ], { string: 'str' }).str;
+ t.equal(str, '');
+ t.equal(typeof str, 'string');
+
+ var letters = parse([ '-art' ], {
+ string: [ 'a', 't' ]
+ });
+
+ t.equal(letters.a, '');
+ t.equal(letters.r, true);
+ t.equal(letters.t, '');
+
+ t.end();
+});
+
+
+test('string and alias', function(t) {
+ var x = parse([ '--str', '000123' ], {
+ string: 's',
+ alias: { s: 'str' }
+ });
+
+ t.equal(x.str, '000123');
+ t.equal(typeof x.str, 'string');
+ t.equal(x.s, '000123');
+ t.equal(typeof x.s, 'string');
+
+ var y = parse([ '-s', '000123' ], {
+ string: 'str',
+ alias: { str: 's' }
+ });
+
+ t.equal(y.str, '000123');
+ t.equal(typeof y.str, 'string');
+ t.equal(y.s, '000123');
+ t.equal(typeof y.s, 'string');
+ t.end();
+});
+
+test('slashBreak', function (t) {
+ t.same(
+ parse([ '-I/foo/bar/baz' ]),
+ { I : '/foo/bar/baz', _ : [] }
+ );
+ t.same(
+ parse([ '-xyz/foo/bar/baz' ]),
+ { x : true, y : true, z : '/foo/bar/baz', _ : [] }
+ );
+ t.end();
+});
+
+test('alias', function (t) {
+ var argv = parse([ '-f', '11', '--zoom', '55' ], {
+ alias: { z: 'zoom' }
+ });
+ t.equal(argv.zoom, 55);
+ t.equal(argv.z, argv.zoom);
+ t.equal(argv.f, 11);
+ t.end();
+});
+
+test('multiAlias', function (t) {
+ var argv = parse([ '-f', '11', '--zoom', '55' ], {
+ alias: { z: [ 'zm', 'zoom' ] }
+ });
+ t.equal(argv.zoom, 55);
+ t.equal(argv.z, argv.zoom);
+ t.equal(argv.z, argv.zm);
+ t.equal(argv.f, 11);
+ t.end();
+});
+
+test('nested dotted objects', function (t) {
+ var argv = parse([
+ '--foo.bar', '3', '--foo.baz', '4',
+ '--foo.quux.quibble', '5', '--foo.quux.o_O',
+ '--beep.boop'
+ ]);
+
+ t.same(argv.foo, {
+ bar : 3,
+ baz : 4,
+ quux : {
+ quibble : 5,
+ o_O : true
+ }
+ });
+ t.same(argv.beep, { boop : true });
+ t.end();
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/parse_modified.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/parse_modified.js
new file mode 100644
index 000000000..a22248532
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/parse_modified.js
@@ -0,0 +1,9 @@
+var parse = require('../');
+var test = require('tape');
+
+test('parse with modifier functions' , function (t) {
+ t.plan(1);
+
+ var argv = parse([ '-b', '123' ], { boolean: 'b' });
+ t.deepEqual(argv, { b: true, _: [123] });
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/short.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/short.js
new file mode 100644
index 000000000..ac18880f1
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/short.js
@@ -0,0 +1,67 @@
+var parse = require('../');
+var test = require('tape');
+
+test('numeric short args', function (t) {
+ t.plan(2);
+ t.deepEqual(parse([ '-n123' ]), { n: 123, _: [] });
+ t.deepEqual(
+ parse([ '-123', '456' ]),
+ { 1: true, 2: true, 3: 456, _: [] }
+ );
+});
+
+test('short', function (t) {
+ t.deepEqual(
+ parse([ '-b' ]),
+ { b : true, _ : [] },
+ 'short boolean'
+ );
+ t.deepEqual(
+ parse([ 'foo', 'bar', 'baz' ]),
+ { _ : [ 'foo', 'bar', 'baz' ] },
+ 'bare'
+ );
+ t.deepEqual(
+ parse([ '-cats' ]),
+ { c : true, a : true, t : true, s : true, _ : [] },
+ 'group'
+ );
+ t.deepEqual(
+ parse([ '-cats', 'meow' ]),
+ { c : true, a : true, t : true, s : 'meow', _ : [] },
+ 'short group next'
+ );
+ t.deepEqual(
+ parse([ '-h', 'localhost' ]),
+ { h : 'localhost', _ : [] },
+ 'short capture'
+ );
+ t.deepEqual(
+ parse([ '-h', 'localhost', '-p', '555' ]),
+ { h : 'localhost', p : 555, _ : [] },
+ 'short captures'
+ );
+ t.end();
+});
+
+test('mixed short bool and capture', function (t) {
+ t.same(
+ parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
+ {
+ f : true, p : 555, h : 'localhost',
+ _ : [ 'script.js' ]
+ }
+ );
+ t.end();
+});
+
+test('short and long', function (t) {
+ t.deepEqual(
+ parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
+ {
+ f : true, p : 555, h : 'localhost',
+ _ : [ 'script.js' ]
+ }
+ );
+ t.end();
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/stop_early.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/stop_early.js
new file mode 100644
index 000000000..bdf9fbcb0
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/stop_early.js
@@ -0,0 +1,15 @@
+var parse = require('../');
+var test = require('tape');
+
+test('stops parsing on the first non-option when stopEarly is set', function (t) {
+ var argv = parse(['--aaa', 'bbb', 'ccc', '--ddd'], {
+ stopEarly: true
+ });
+
+ t.deepEqual(argv, {
+ aaa: 'bbb',
+ _: ['ccc', '--ddd']
+ });
+
+ t.end();
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/unknown.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/unknown.js
new file mode 100644
index 000000000..462a36bdd
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/unknown.js
@@ -0,0 +1,102 @@
+var parse = require('../');
+var test = require('tape');
+
+test('boolean and alias is not unknown', function (t) {
+ var unknown = [];
+ function unknownFn(arg) {
+ unknown.push(arg);
+ return false;
+ }
+ var aliased = [ '-h', 'true', '--derp', 'true' ];
+ var regular = [ '--herp', 'true', '-d', 'true' ];
+ var opts = {
+ alias: { h: 'herp' },
+ boolean: 'h',
+ unknown: unknownFn
+ };
+ var aliasedArgv = parse(aliased, opts);
+ var propertyArgv = parse(regular, opts);
+
+ t.same(unknown, ['--derp', '-d']);
+ t.end();
+});
+
+test('flag boolean true any double hyphen argument is not unknown', function (t) {
+ var unknown = [];
+ function unknownFn(arg) {
+ unknown.push(arg);
+ return false;
+ }
+ var argv = parse(['--honk', '--tacos=good', 'cow', '-p', '55'], {
+ boolean: true,
+ unknown: unknownFn
+ });
+ t.same(unknown, ['--tacos=good', 'cow', '-p']);
+ t.same(argv, {
+ honk: true,
+ _: []
+ });
+ t.end();
+});
+
+test('string and alias is not unknown', function (t) {
+ var unknown = [];
+ function unknownFn(arg) {
+ unknown.push(arg);
+ return false;
+ }
+ var aliased = [ '-h', 'hello', '--derp', 'goodbye' ];
+ var regular = [ '--herp', 'hello', '-d', 'moon' ];
+ var opts = {
+ alias: { h: 'herp' },
+ string: 'h',
+ unknown: unknownFn
+ };
+ var aliasedArgv = parse(aliased, opts);
+ var propertyArgv = parse(regular, opts);
+
+ t.same(unknown, ['--derp', '-d']);
+ t.end();
+});
+
+test('default and alias is not unknown', function (t) {
+ var unknown = [];
+ function unknownFn(arg) {
+ unknown.push(arg);
+ return false;
+ }
+ var aliased = [ '-h', 'hello' ];
+ var regular = [ '--herp', 'hello' ];
+ var opts = {
+ default: { 'h': 'bar' },
+ alias: { 'h': 'herp' },
+ unknown: unknownFn
+ };
+ var aliasedArgv = parse(aliased, opts);
+ var propertyArgv = parse(regular, opts);
+
+ t.same(unknown, []);
+ t.end();
+ unknownFn(); // exercise fn for 100% coverage
+});
+
+test('value following -- is not unknown', function (t) {
+ var unknown = [];
+ function unknownFn(arg) {
+ unknown.push(arg);
+ return false;
+ }
+ var aliased = [ '--bad', '--', 'good', 'arg' ];
+ var opts = {
+ '--': true,
+ unknown: unknownFn
+ };
+ var argv = parse(aliased, opts);
+
+ t.same(unknown, ['--bad']);
+ t.same(argv, {
+ '--': ['good', 'arg'],
+ '_': []
+ })
+ t.end();
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/whitespace.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/whitespace.js
new file mode 100644
index 000000000..8a52a58ce
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/minimist/test/whitespace.js
@@ -0,0 +1,8 @@
+var parse = require('../');
+var test = require('tape');
+
+test('whitespace should be whitespace' , function (t) {
+ t.plan(1);
+ var x = parse([ '-x', '\t' ]).x;
+ t.equal(x, '\t');
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/strip-json-comments/cli.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/strip-json-comments/cli.js
new file mode 100755
index 000000000..aec5aa20e
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/strip-json-comments/cli.js
@@ -0,0 +1,41 @@
+#!/usr/bin/env node
+'use strict';
+var fs = require('fs');
+var strip = require('./strip-json-comments');
+var input = process.argv[2];
+
+
+function getStdin(cb) {
+ var ret = '';
+
+ process.stdin.setEncoding('utf8');
+
+ process.stdin.on('data', function (data) {
+ ret += data;
+ });
+
+ process.stdin.on('end', function () {
+ cb(ret);
+ });
+}
+
+if (process.argv.indexOf('-h') !== -1 || process.argv.indexOf('--help') !== -1) {
+ console.log('strip-json-comments input-file > output-file');
+ console.log('or');
+ console.log('strip-json-comments < input-file > output-file');
+ return;
+}
+
+if (process.argv.indexOf('-v') !== -1 || process.argv.indexOf('--version') !== -1) {
+ console.log(require('./package').version);
+ return;
+}
+
+if (input) {
+ process.stdout.write(strip(fs.readFileSync(input, 'utf8')));
+ return;
+}
+
+getStdin(function (data) {
+ process.stdout.write(strip(data));
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/strip-json-comments/license b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/strip-json-comments/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/strip-json-comments/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/strip-json-comments/package.json b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/strip-json-comments/package.json
new file mode 100644
index 000000000..cf7e940c6
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/strip-json-comments/package.json
@@ -0,0 +1,112 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "strip-json-comments@~1.0.4",
+ "scope": null,
+ "escapedName": "strip-json-comments",
+ "name": "strip-json-comments",
+ "rawSpec": "~1.0.4",
+ "spec": ">=1.0.4 <1.1.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc"
+ ]
+ ],
+ "_from": "strip-json-comments@>=1.0.4 <1.1.0",
+ "_id": "strip-json-comments@1.0.4",
+ "_inCache": true,
+ "_location": "/update-notifier/latest-version/package-json/registry-auth-token/rc/strip-json-comments",
+ "_nodeVersion": "0.12.5",
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.11.2",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "strip-json-comments@~1.0.4",
+ "scope": null,
+ "escapedName": "strip-json-comments",
+ "name": "strip-json-comments",
+ "rawSpec": "~1.0.4",
+ "spec": ">=1.0.4 <1.1.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/latest-version/package-json/registry-auth-token/rc"
+ ],
+ "_resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz",
+ "_shasum": "1e15fbcac97d3ee99bf2d73b4c656b082bbafb91",
+ "_shrinkwrap": null,
+ "_spec": "strip-json-comments@~1.0.4",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bin": {
+ "strip-json-comments": "cli.js"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/strip-json-comments/issues"
+ },
+ "dependencies": {},
+ "description": "Strip comments from JSON. Lets you use comments in your JSON files!",
+ "devDependencies": {
+ "mocha": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "1e15fbcac97d3ee99bf2d73b4c656b082bbafb91",
+ "tarball": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ },
+ "files": [
+ "cli.js",
+ "strip-json-comments.js"
+ ],
+ "gitHead": "f58348696368583cc5bb18525fe31eacc9bd00e1",
+ "homepage": "https://github.com/sindresorhus/strip-json-comments",
+ "keywords": [
+ "json",
+ "strip",
+ "remove",
+ "delete",
+ "trim",
+ "comments",
+ "multiline",
+ "parse",
+ "config",
+ "configuration",
+ "conf",
+ "settings",
+ "util",
+ "env",
+ "environment",
+ "cli",
+ "bin"
+ ],
+ "license": "MIT",
+ "main": "strip-json-comments",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "strip-json-comments",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/strip-json-comments.git"
+ },
+ "scripts": {
+ "test": "mocha --ui tdd"
+ },
+ "version": "1.0.4"
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/strip-json-comments/readme.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/strip-json-comments/readme.md
new file mode 100644
index 000000000..63ce165b2
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/strip-json-comments/readme.md
@@ -0,0 +1,80 @@
+# strip-json-comments [![Build Status](https://travis-ci.org/sindresorhus/strip-json-comments.svg?branch=master)](https://travis-ci.org/sindresorhus/strip-json-comments)
+
+> Strip comments from JSON. Lets you use comments in your JSON files!
+
+This is now possible:
+
+```js
+{
+ // rainbows
+ "unicorn": /* ❤ */ "cake"
+}
+```
+
+It will remove single-line comments `//` and multi-line comments `/**/`.
+
+Also available as a [gulp](https://github.com/sindresorhus/gulp-strip-json-comments)/[grunt](https://github.com/sindresorhus/grunt-strip-json-comments)/[broccoli](https://github.com/sindresorhus/broccoli-strip-json-comments) plugin.
+
+-
+
+*There's also [`json-comments`](https://npmjs.org/package/json-comments), but it's only for Node.js, inefficient, bloated as it also minifies, and comes with a `require` hook, which is :(*
+
+
+## Install
+
+```sh
+$ npm install --save strip-json-comments
+```
+
+```sh
+$ bower install --save strip-json-comments
+```
+
+```sh
+$ component install sindresorhus/strip-json-comments
+```
+
+
+## Usage
+
+```js
+var json = '{/*rainbows*/"unicorn":"cake"}';
+JSON.parse(stripJsonComments(json));
+//=> {unicorn: 'cake'}
+```
+
+
+## API
+
+### stripJsonComments(input)
+
+#### input
+
+Type: `string`
+
+Accepts a string with JSON and returns a string without comments.
+
+
+## CLI
+
+```sh
+$ npm install --global strip-json-comments
+```
+
+```sh
+$ strip-json-comments --help
+
+strip-json-comments input-file > output-file
+# or
+strip-json-comments < input-file > output-file
+```
+
+
+## Related
+
+- [`strip-css-comments`](https://github.com/sindresorhus/strip-css-comments)
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/strip-json-comments/strip-json-comments.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/strip-json-comments/strip-json-comments.js
new file mode 100644
index 000000000..eb77ce745
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/node_modules/strip-json-comments/strip-json-comments.js
@@ -0,0 +1,73 @@
+/*!
+ strip-json-comments
+ Strip comments from JSON. Lets you use comments in your JSON files!
+ https://github.com/sindresorhus/strip-json-comments
+ by Sindre Sorhus
+ MIT License
+*/
+(function () {
+ 'use strict';
+
+ var singleComment = 1;
+ var multiComment = 2;
+
+ function stripJsonComments(str) {
+ var currentChar;
+ var nextChar;
+ var insideString = false;
+ var insideComment = false;
+ var ret = '';
+
+ for (var i = 0; i < str.length; i++) {
+ currentChar = str[i];
+ nextChar = str[i + 1];
+
+ if (!insideComment && currentChar === '"') {
+ var escaped = str[i - 1] === '\\' && str[i - 2] !== '\\';
+ if (!insideComment && !escaped && currentChar === '"') {
+ insideString = !insideString;
+ }
+ }
+
+ if (insideString) {
+ ret += currentChar;
+ continue;
+ }
+
+ if (!insideComment && currentChar + nextChar === '//') {
+ insideComment = singleComment;
+ i++;
+ } else if (insideComment === singleComment && currentChar + nextChar === '\r\n') {
+ insideComment = false;
+ i++;
+ ret += currentChar;
+ ret += nextChar;
+ continue;
+ } else if (insideComment === singleComment && currentChar === '\n') {
+ insideComment = false;
+ } else if (!insideComment && currentChar + nextChar === '/*') {
+ insideComment = multiComment;
+ i++;
+ continue;
+ } else if (insideComment === multiComment && currentChar + nextChar === '*/') {
+ insideComment = false;
+ i++;
+ continue;
+ }
+
+ if (insideComment) {
+ continue;
+ }
+
+ ret += currentChar;
+ }
+
+ return ret;
+ }
+
+ if (typeof module !== 'undefined' && module.exports) {
+ module.exports = stripJsonComments;
+ } else {
+ window.stripJsonComments = stripJsonComments;
+ }
+})();
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/package.json b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/package.json
new file mode 100644
index 000000000..afcbc8542
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/package.json
@@ -0,0 +1,96 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "rc@^1.1.6",
+ "scope": null,
+ "escapedName": "rc",
+ "name": "rc",
+ "rawSpec": "^1.1.6",
+ "spec": ">=1.1.6 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token"
+ ]
+ ],
+ "_from": "rc@>=1.1.6 <2.0.0",
+ "_id": "rc@1.1.6",
+ "_inCache": true,
+ "_location": "/update-notifier/latest-version/package-json/registry-auth-token/rc",
+ "_nodeVersion": "4.2.3",
+ "_npmUser": {
+ "name": "dominictarr",
+ "email": "dominic.tarr@gmail.com"
+ },
+ "_npmVersion": "3.5.1",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "rc@^1.1.6",
+ "scope": null,
+ "escapedName": "rc",
+ "name": "rc",
+ "rawSpec": "^1.1.6",
+ "spec": ">=1.1.6 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/latest-version/package-json/registry-auth-token"
+ ],
+ "_resolved": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz",
+ "_shasum": "43651b76b6ae53b5c802f1151fa3fc3b059969c9",
+ "_shrinkwrap": null,
+ "_spec": "rc@^1.1.6",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token",
+ "author": {
+ "name": "Dominic Tarr",
+ "email": "dominic.tarr@gmail.com",
+ "url": "dominictarr.com"
+ },
+ "bin": {
+ "rc": "./index.js"
+ },
+ "browserify": "browser.js",
+ "bugs": {
+ "url": "https://github.com/dominictarr/rc/issues"
+ },
+ "dependencies": {
+ "deep-extend": "~0.4.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~1.0.4"
+ },
+ "description": "hardwired configuration loader",
+ "devDependencies": {},
+ "directories": {},
+ "dist": {
+ "shasum": "43651b76b6ae53b5c802f1151fa3fc3b059969c9",
+ "tarball": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz"
+ },
+ "gitHead": "132062de0e61881a025cc4784d9a2798409c2bf1",
+ "homepage": "https://github.com/dominictarr/rc#readme",
+ "keywords": [
+ "config",
+ "rc",
+ "unix",
+ "defaults"
+ ],
+ "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
+ "main": "index.js",
+ "maintainers": [
+ {
+ "name": "dominictarr",
+ "email": "dominic.tarr@gmail.com"
+ }
+ ],
+ "name": "rc",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/dominictarr/rc.git"
+ },
+ "scripts": {
+ "test": "set -e; node test/test.js; node test/ini.js; node test/nested-env-vars.js"
+ },
+ "version": "1.1.6"
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/test/ini.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/test/ini.js
new file mode 100644
index 000000000..cdb199006
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/test/ini.js
@@ -0,0 +1,15 @@
+var cc =require('../lib/utils')
+var INI = require('ini')
+var assert = require('assert')
+
+function test(obj) {
+
+ var _json, _ini
+ var json = cc.parse (_json = JSON.stringify(obj))
+ var ini = cc.parse (_ini = INI.stringify(obj))
+ console.log(_ini, _json)
+ assert.deepEqual(json, ini)
+}
+
+
+test({hello: true})
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/test/nested-env-vars.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/test/nested-env-vars.js
new file mode 100644
index 000000000..47be98982
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/test/nested-env-vars.js
@@ -0,0 +1,38 @@
+
+var n = 'rc'+Math.random()
+var assert = require('assert')
+
+
+// Basic usage
+process.env[n+'_someOpt__a'] = 42
+process.env[n+'_someOpt__x__'] = 99
+process.env[n+'_someOpt__a__b'] = 186
+process.env[n+'_someOpt__a__b__c'] = 243
+process.env[n+'_someOpt__x__y'] = 1862
+process.env[n+'_someOpt__z'] = 186577
+
+// Should ignore empty strings from orphaned '__'
+process.env[n+'_someOpt__z__x__'] = 18629
+process.env[n+'_someOpt__w__w__'] = 18629
+
+// Leading '__' should ignore everything up to 'z'
+process.env[n+'___z__i__'] = 9999
+
+var config = require('../')(n, {
+ option: true
+})
+
+console.log('\n\n------ nested-env-vars ------\n',config)
+
+assert.equal(config.option, true)
+assert.equal(config.someOpt.a, 42)
+assert.equal(config.someOpt.x, 99)
+// Should not override `a` once it's been set
+assert.equal(config.someOpt.a/*.b*/, 42)
+// Should not override `x` once it's been set
+assert.equal(config.someOpt.x/*.y*/, 99)
+assert.equal(config.someOpt.z, 186577)
+// Should not override `z` once it's been set
+assert.equal(config.someOpt.z/*.x*/, 186577)
+assert.equal(config.someOpt.w.w, 18629)
+assert.equal(config.z.i, 9999)
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/test/test.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/test/test.js
new file mode 100644
index 000000000..4f6335189
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc/test/test.js
@@ -0,0 +1,59 @@
+
+var n = 'rc'+Math.random()
+var assert = require('assert')
+
+process.env[n+'_envOption'] = 42
+
+var config = require('../')(n, {
+ option: true
+})
+
+console.log(config)
+
+assert.equal(config.option, true)
+assert.equal(config.envOption, 42)
+
+var customArgv = require('../')(n, {
+ option: true
+}, { // nopt-like argv
+ option: false,
+ envOption: 24,
+ argv: {
+ remain: [],
+ cooked: ['--no-option', '--envOption', '24'],
+ original: ['--no-option', '--envOption=24']
+ }
+})
+
+console.log(customArgv)
+
+assert.equal(customArgv.option, false)
+assert.equal(customArgv.envOption, 24)
+
+var fs = require('fs')
+var path = require('path')
+var jsonrc = path.resolve('.' + n + 'rc');
+
+fs.writeFileSync(jsonrc, [
+ '{',
+ '// json overrides default',
+ '"option": false,',
+ '/* env overrides json */',
+ '"envOption": 24',
+ '}'
+].join('\n'));
+
+var commentedJSON = require('../')(n, {
+ option: true
+})
+
+fs.unlinkSync(jsonrc);
+
+console.log(commentedJSON)
+
+assert.equal(commentedJSON.option, false)
+assert.equal(commentedJSON.envOption, 42)
+
+assert.equal(commentedJSON.config, jsonrc)
+assert.equal(commentedJSON.configs.length, 1)
+assert.equal(commentedJSON.configs[0], jsonrc)
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/package.json b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/package.json
new file mode 100644
index 000000000..1c3351445
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/package.json
@@ -0,0 +1,110 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "registry-auth-token@^3.0.1",
+ "scope": null,
+ "escapedName": "registry-auth-token",
+ "name": "registry-auth-token",
+ "rawSpec": "^3.0.1",
+ "spec": ">=3.0.1 <4.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json"
+ ]
+ ],
+ "_from": "registry-auth-token@>=3.0.1 <4.0.0",
+ "_id": "registry-auth-token@3.1.0",
+ "_inCache": true,
+ "_location": "/update-notifier/latest-version/package-json/registry-auth-token",
+ "_nodeVersion": "6.6.0",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/registry-auth-token-3.1.0.tgz_1476906788283_0.3755947477184236"
+ },
+ "_npmUser": {
+ "name": "rexxars",
+ "email": "rexxars@gmail.com"
+ },
+ "_npmVersion": "3.10.3",
+ "_phantomChildren": {
+ "ini": "1.3.4"
+ },
+ "_requested": {
+ "raw": "registry-auth-token@^3.0.1",
+ "scope": null,
+ "escapedName": "registry-auth-token",
+ "name": "registry-auth-token",
+ "rawSpec": "^3.0.1",
+ "spec": ">=3.0.1 <4.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/latest-version/package-json"
+ ],
+ "_resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.1.0.tgz",
+ "_shasum": "997c08256e0c7999837b90e944db39d8a790276b",
+ "_shrinkwrap": null,
+ "_spec": "registry-auth-token@^3.0.1",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json",
+ "author": {
+ "name": "Espen Hovlandsdal",
+ "email": "espen@hovlandsdal.com"
+ },
+ "bugs": {
+ "url": "https://github.com/rexxars/registry-auth-token/issues"
+ },
+ "dependencies": {
+ "rc": "^1.1.6"
+ },
+ "description": "Get the auth token set for an npm registry (if any)",
+ "devDependencies": {
+ "eslint": "^2.4.0",
+ "eslint-config-bengler": "^1.0.7",
+ "istanbul": "^0.4.2",
+ "mocha": "^2.4.5",
+ "require-uncached": "^1.0.2"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "997c08256e0c7999837b90e944db39d8a790276b",
+ "tarball": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.1.0.tgz"
+ },
+ "gitHead": "349c63e86949846b70bc57e6801018800dc76382",
+ "homepage": "https://github.com/rexxars/registry-auth-token#readme",
+ "keywords": [
+ "npm",
+ "conf",
+ "config",
+ "npmconf",
+ "registry",
+ "auth",
+ "token",
+ "authtoken"
+ ],
+ "license": "MIT",
+ "main": "index.js",
+ "maintainers": [
+ {
+ "name": "leipert",
+ "email": "git@leipert.io"
+ },
+ {
+ "name": "rexxars",
+ "email": "rexxars@gmail.com"
+ }
+ ],
+ "name": "registry-auth-token",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+ssh://git@github.com/rexxars/registry-auth-token.git"
+ },
+ "scripts": {
+ "coverage": "istanbul cover _mocha",
+ "posttest": "eslint .",
+ "test": "mocha"
+ },
+ "version": "3.1.0"
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/registry-url.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/registry-url.js
new file mode 100644
index 000000000..cbd4589d4
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/registry-url.js
@@ -0,0 +1,5 @@
+module.exports = function (scope) {
+ var rc = require('rc')('npm', {registry: 'https://registry.npmjs.org/'})
+ var url = rc[scope + ':registry'] || rc.registry
+ return url.slice(-1) === '/' ? url : url + '/'
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/test/auth-token.test.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/test/auth-token.test.js
new file mode 100644
index 000000000..51cf6116e
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/test/auth-token.test.js
@@ -0,0 +1,325 @@
+var fs = require('fs')
+var path = require('path')
+var mocha = require('mocha')
+var assert = require('assert')
+var requireUncached = require('require-uncached')
+
+var npmRcPath = path.join(__dirname, '..', '.npmrc')
+var afterEach = mocha.afterEach
+var describe = mocha.describe
+var it = mocha.it
+
+var base64 = require('../base64')
+var decodeBase64 = base64.decodeBase64
+var encodeBase64 = base64.encodeBase64
+
+/*eslint max-nested-callbacks: ["error", 4]*/
+
+describe('auth-token', function () {
+ afterEach(function (done) {
+ fs.unlink(npmRcPath, function () {
+ done()
+ })
+ })
+
+ it('should read global if no local is found', function () {
+ var getAuthToken = requireUncached('../index')
+ getAuthToken()
+ })
+
+ it('should return undefined if no auth token is given for registry', function (done) {
+ fs.writeFile(npmRcPath, 'registry=http://registry.npmjs.eu/', function (err) {
+ var getAuthToken = requireUncached('../index')
+ assert(!err, err)
+ assert(!getAuthToken())
+ done()
+ })
+ })
+
+ describe('bearer token', function () {
+
+ it('should return auth token if registry is defined', function (done) {
+ var content = [
+ 'registry=http://registry.foobar.eu/',
+ '//registry.foobar.eu/:_authToken=foobar', ''
+ ].join('\n')
+
+ fs.writeFile(npmRcPath, content, function (err) {
+ var getAuthToken = requireUncached('../index')
+ assert(!err, err)
+ assert.deepEqual(getAuthToken(), {token: 'foobar', type: 'Bearer'})
+ done()
+ })
+ })
+
+ it('should return auth token if registry url has port specified', function (done) {
+ var content = [
+ 'registry=http://localhost:8770/',
+ // before the patch this token was selected.
+ '//localhost/:_authToken=ohno',
+ '//localhost:8770/:_authToken=beepboop', ''
+ ].join('\n')
+
+ fs.writeFile(npmRcPath, content, function (err) {
+ var getAuthToken = requireUncached('../index')
+ assert(!err, err)
+ assert.deepEqual(getAuthToken(), {token: 'beepboop', type: 'Bearer'})
+ done()
+ })
+ })
+
+ it('should return auth token defined by reference to an environment variable (with curly braces)', function (done) {
+ var environmentVariable = '__REGISTRY_AUTH_TOKEN_NPM_TOKEN__'
+ var content = [
+ 'registry=http://registry.foobar.cc/',
+ '//registry.foobar.cc/:_authToken=${' + environmentVariable + '}', ''
+ ].join('\n')
+ process.env[environmentVariable] = 'foobar'
+
+ fs.writeFile(npmRcPath, content, function (err) {
+ var getAuthToken = requireUncached('../index')
+ assert(!err, err)
+ assert.deepEqual(getAuthToken(), {token: 'foobar', type: 'Bearer'})
+ delete process.env[environmentVariable]
+ done()
+ })
+ })
+
+ it('should return auth token defined by reference to an environment variable (without curly braces)', function (done) {
+ var environmentVariable = '__REGISTRY_AUTH_TOKEN_NPM_TOKEN__'
+ var content = [
+ 'registry=http://registry.foobar.cc/',
+ '//registry.foobar.cc/:_authToken=$' + environmentVariable, ''
+ ].join('\n')
+ process.env[environmentVariable] = 'foobar'
+
+ fs.writeFile(npmRcPath, content, function (err) {
+ var getAuthToken = requireUncached('../index')
+ assert(!err, err)
+ assert.deepEqual(getAuthToken(), {token: 'foobar', type: 'Bearer'})
+ delete process.env[environmentVariable]
+ done()
+ })
+ })
+
+ it('should try with and without a slash at the end of registry url', function (done) {
+ var content = [
+ 'registry=http://registry.foobar.eu',
+ '//registry.foobar.eu:_authToken=barbaz', ''
+ ].join('\n')
+
+ fs.writeFile(npmRcPath, content, function (err) {
+ var getAuthToken = requireUncached('../index')
+ assert(!err, err)
+ assert.deepEqual(getAuthToken(), {token: 'barbaz', type: 'Bearer'})
+ done()
+ })
+ })
+
+ it('should fetch for the registry given (if defined)', function (done) {
+ var content = [
+ '//registry.foobar.eu:_authToken=barbaz',
+ '//registry.blah.foo:_authToken=whatev',
+ '//registry.last.thing:_authToken=yep', ''
+ ].join('\n')
+
+ fs.writeFile(npmRcPath, content, function (err) {
+ var getAuthToken = requireUncached('../index')
+ assert(!err, err)
+ assert.deepEqual(getAuthToken('//registry.blah.foo'), {token: 'whatev', type: 'Bearer'})
+ done()
+ })
+ })
+
+ it('recursively finds registries for deep url if option is set', function (done, undef) {
+ var opts = {recursive: true}
+ var content = [
+ '//registry.blah.com/foo:_authToken=whatev',
+ '//registry.blah.org/foo/bar:_authToken=recurseExactlyOneLevel',
+ '//registry.blah.edu/foo/bar/baz:_authToken=recurseNoLevel',
+ '//registry.blah.eu:_authToken=yep', ''
+ ].join('\n')
+
+ fs.writeFile(npmRcPath, content, function (err) {
+ var getAuthToken = requireUncached('../index')
+ assert(!err, err)
+ assert.deepEqual(getAuthToken('https://registry.blah.edu/foo/bar/baz', opts), {token: 'recurseNoLevel', type: 'Bearer'})
+ assert.deepEqual(getAuthToken('https://registry.blah.org/foo/bar/baz', opts), {token: 'recurseExactlyOneLevel', type: 'Bearer'})
+ assert.deepEqual(getAuthToken('https://registry.blah.com/foo/bar/baz', opts), {token: 'whatev', type: 'Bearer'})
+ assert.deepEqual(getAuthToken('http://registry.blah.eu/what/ever', opts), {token: 'yep', type: 'Bearer'})
+ assert.equal(getAuthToken('//some.registry', opts), undef)
+ done()
+ })
+ })
+
+ it('should try both with and without trailing slash', function (done) {
+ fs.writeFile(npmRcPath, '//registry.blah.com:_authToken=whatev', function (err) {
+ var getAuthToken = requireUncached('../index')
+ assert(!err, err)
+ assert.deepEqual(getAuthToken('https://registry.blah.com'), {token: 'whatev', type: 'Bearer'})
+ done()
+ })
+ })
+
+ it('should prefer bearer token over basic token', function (done) {
+ var content = [
+ 'registry=http://registry.foobar.eu/',
+ 'registry=http://registry.foobar.eu/',
+ '//registry.foobar.eu/:_authToken=bearerToken',
+ '//registry.foobar.eu/:_password=' + encodeBase64('foobar'),
+ '//registry.foobar.eu/:username=foobar', ''
+ ].join('\n')
+
+ fs.writeFile(npmRcPath, content, function (err) {
+ var getAuthToken = requireUncached('../index')
+ assert(!err, err)
+ assert.deepEqual(getAuthToken('//registry.foobar.eu'), {token: 'bearerToken', type: 'Bearer'})
+ done()
+ })
+ })
+
+ })
+
+ describe('basic token', function () {
+
+ it('should return undefined if password or username are missing', function (done, undef) {
+ var content = [
+ 'registry=http://registry.foobar.eu/',
+ '//registry.foobar.eu/:_password=' + encodeBase64('foobar'),
+ '//registry.foobar.com/:username=foobar', ''
+ ].join('\n')
+
+ fs.writeFile(npmRcPath, content, function (err) {
+ var getAuthToken = requireUncached('../index')
+ assert(!err, err)
+ assert.equal(getAuthToken('//registry.foobar.eu'), undef)
+ assert.equal(getAuthToken('//registry.foobar.com'), undef)
+ done()
+ })
+ })
+
+ it('should return basic token if username and password are defined', function (done) {
+ var content = [
+ 'registry=http://registry.foobar.eu/',
+ '//registry.foobar.eu/:_password=' + encodeBase64('foobar'),
+ '//registry.foobar.eu/:username=foobar', ''
+ ].join('\n')
+
+ fs.writeFile(npmRcPath, content, function (err) {
+ var getAuthToken = requireUncached('../index')
+ assert(!err, err)
+ var token = getAuthToken()
+ assert.deepEqual(token, {
+ token: 'Zm9vYmFyOmZvb2Jhcg==',
+ type: 'Basic',
+ username: 'foobar',
+ password: 'foobar'
+ })
+ assert.equal(decodeBase64(token.token), 'foobar:foobar')
+ done()
+ })
+ })
+
+ it('should return basic token if registry url has port specified', function (done) {
+ var content = [
+ 'registry=http://localhost:8770/',
+ // before the patch this token was selected.
+ '//localhost/:_authToken=ohno',
+ '//localhost:8770/:_password=' + encodeBase64('foobar'),
+ '//localhost:8770/:username=foobar', ''
+ ].join('\n')
+
+ fs.writeFile(npmRcPath, content, function (err) {
+ var getAuthToken = requireUncached('../index')
+ assert(!err, err)
+ var token = getAuthToken()
+ assert.deepEqual(token, {
+ token: 'Zm9vYmFyOmZvb2Jhcg==',
+ type: 'Basic',
+ username: 'foobar',
+ password: 'foobar'
+ })
+ assert.equal(decodeBase64(token.token), 'foobar:foobar')
+ done()
+ })
+ })
+
+ it('should try with and without a slash at the end of registry url', function (done) {
+ var content = [
+ 'registry=http://registry.foobar.eu',
+ '//registry.foobar.eu:_password=' + encodeBase64('barbay'),
+ '//registry.foobar.eu:username=barbaz', ''
+ ].join('\n')
+
+ fs.writeFile(npmRcPath, content, function (err) {
+ var getAuthToken = requireUncached('../index')
+ assert(!err, err)
+ var token = getAuthToken()
+ assert.deepEqual(token, {
+ token: 'YmFyYmF6OmJhcmJheQ==',
+ type: 'Basic',
+ password: 'barbay',
+ username: 'barbaz'
+ })
+ assert.equal(decodeBase64(token.token), 'barbaz:barbay')
+ done()
+ })
+ })
+
+ it('should fetch for the registry given (if defined)', function (done) {
+ var content = [
+ '//registry.foobar.eu:_authToken=barbaz',
+ '//registry.blah.foo:_password=' + encodeBase64('barbay'),
+ '//registry.blah.foo:username=barbaz',
+ '//registry.last.thing:_authToken=yep', ''
+ ].join('\n')
+
+ fs.writeFile(npmRcPath, content, function (err) {
+ var getAuthToken = requireUncached('../index')
+ assert(!err, err)
+ var token = getAuthToken('//registry.blah.foo')
+ assert.deepEqual(token, {
+ token: 'YmFyYmF6OmJhcmJheQ==',
+ type: 'Basic',
+ password: 'barbay',
+ username: 'barbaz'
+ })
+ assert.equal(decodeBase64(token.token), 'barbaz:barbay')
+ done()
+ })
+ })
+
+ it('recursively finds registries for deep url if option is set', function (done, undef) {
+ var opts = {recursive: true}
+ var content = [
+ '//registry.blah.com/foo:_password=' + encodeBase64('barbay'),
+ '//registry.blah.com/foo:username=barbaz',
+ '//registry.blah.eu:username=barbaz',
+ '//registry.blah.eu:_password=' + encodeBase64('foobaz'), ''
+ ].join('\n')
+
+ fs.writeFile(npmRcPath, content, function (err) {
+ var getAuthToken = requireUncached('../index')
+ assert(!err, err)
+ var token = getAuthToken('https://registry.blah.com/foo/bar/baz', opts)
+ assert.deepEqual(token, {
+ token: 'YmFyYmF6OmJhcmJheQ==',
+ type: 'Basic',
+ password: 'barbay',
+ username: 'barbaz'
+ })
+ assert.equal(decodeBase64(token.token), 'barbaz:barbay')
+ token = getAuthToken('https://registry.blah.eu/foo/bar/baz', opts)
+ assert.deepEqual(token, {
+ token: 'YmFyYmF6OmZvb2Jheg==',
+ type: 'Basic',
+ password: 'foobaz',
+ username: 'barbaz'
+ })
+ assert.equal(decodeBase64(token.token), 'barbaz:foobaz')
+ assert.equal(getAuthToken('//some.registry', opts), undef)
+ done()
+ })
+ })
+ })
+})
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/test/registry-url.test.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/test/registry-url.test.js
new file mode 100644
index 000000000..adb6951ba
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/test/registry-url.test.js
@@ -0,0 +1,64 @@
+var fs = require('fs')
+var path = require('path')
+var mocha = require('mocha')
+var assert = require('assert')
+var requireUncached = require('require-uncached')
+
+var npmRcPath = path.join(__dirname, '..', '.npmrc')
+var afterEach = mocha.afterEach
+var describe = mocha.describe
+var it = mocha.it
+
+describe('registry-url', function () {
+ afterEach(function (done) {
+ fs.unlink(npmRcPath, function () {
+ done()
+ })
+ })
+
+ it('should read global if no local is found', function () {
+ var getRegistryUrl = requireUncached('../registry-url')
+ getRegistryUrl()
+ })
+
+ it('should return default registry if no url is given for scope', function (done) {
+ fs.writeFile(npmRcPath, 'registry=https://registry.npmjs.org/', function (err) {
+ var getRegistryUrl = requireUncached('../registry-url')
+ assert(!err, err)
+ assert.equal(getRegistryUrl('@somescope'), 'https://registry.npmjs.org/')
+ done()
+ })
+ })
+
+ it('should return registry url if url is given for scope ', function (done) {
+ fs.writeFile(npmRcPath, '@somescope:registry=https://some.registry/', function (err) {
+ var getRegistryUrl = requireUncached('../registry-url')
+ assert(!err, err)
+ assert.equal(getRegistryUrl('@somescope'), 'https://some.registry/')
+ done()
+ })
+ })
+
+ it('should append trailing slash if not present', function (done) {
+ fs.writeFile(npmRcPath, '@somescope:registry=https://some.registry', function (err) {
+ var getRegistryUrl = requireUncached('../registry-url')
+ assert(!err, err)
+ assert.equal(getRegistryUrl('@somescope'), 'https://some.registry/')
+ done()
+ })
+ })
+
+ it('should return configured global registry if given', function (done) {
+ var content = [
+ 'registry=http://registry.foobar.eu/',
+ '@somescope:registry=https://some.url/', ''
+ ].join('\n')
+
+ fs.writeFile(npmRcPath, content, function (err) {
+ var getRegistryUrl = requireUncached('../registry-url')
+ assert(!err, err)
+ assert.equal(getRegistryUrl(), 'http://registry.foobar.eu/')
+ done()
+ })
+ })
+})
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/index.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/index.js
new file mode 100644
index 000000000..5502a235a
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/index.js
@@ -0,0 +1,6 @@
+'use strict';
+module.exports = function (scope) {
+ var rc = require('rc')('npm', {registry: 'https://registry.npmjs.org/'});
+ var url = rc[scope + ':registry'] || rc.registry;
+ return url.slice(-1) === '/' ? url : url + '/';
+};
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/license b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/.bin/rc b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/.bin/rc
new file mode 120000
index 000000000..a3f6fc7f1
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/.bin/rc
@@ -0,0 +1 @@
+../rc/index.js \ No newline at end of file
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/.npmignore b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/.npmignore
new file mode 100644
index 000000000..13abef4f5
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/.npmignore
@@ -0,0 +1,3 @@
+node_modules
+node_modules/*
+npm_debug.log
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/LICENSE.APACHE2 b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/LICENSE.APACHE2
new file mode 100644
index 000000000..6366c0471
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/LICENSE.APACHE2
@@ -0,0 +1,15 @@
+Apache License, Version 2.0
+
+Copyright (c) 2011 Dominic Tarr
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/LICENSE.BSD b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/LICENSE.BSD
new file mode 100644
index 000000000..c6f2e5490
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/LICENSE.BSD
@@ -0,0 +1,26 @@
+Copyright (c) 2013, Dominic Tarr
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+The views and conclusions contained in the software and documentation are those
+of the authors and should not be interpreted as representing official policies,
+either expressed or implied, of the FreeBSD Project.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/LICENSE.MIT b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/LICENSE.MIT
new file mode 100644
index 000000000..49e7da41f
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/LICENSE.MIT
@@ -0,0 +1,24 @@
+The MIT License
+
+Copyright (c) 2011 Dominic Tarr
+
+Permission is hereby granted, free of charge,
+to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to
+deal in the Software without restriction, including
+without limitation the rights to use, copy, modify,
+merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom
+the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
+ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/README.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/README.md
new file mode 100644
index 000000000..b7f77d566
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/README.md
@@ -0,0 +1,149 @@
+# rc
+
+The non-configurable configuration loader for lazy people.
+
+## Usage
+
+The only option is to pass rc the name of your app, and your default configuration.
+
+```javascript
+var conf = require('rc')(appname, {
+ //defaults go here.
+ port: 2468,
+
+ //defaults which are objects will be merged, not replaced
+ views: {
+ engine: 'jade'
+ }
+});
+```
+
+`rc` will return your configuration options merged with the defaults you specify.
+If you pass in a predefined defaults object, it will be mutated:
+
+```javascript
+var conf = {};
+require('rc')(appname, conf);
+```
+
+If `rc` finds any config files for your app, the returned config object will have
+a `configs` array containing their paths:
+
+```javascript
+var appCfg = require('rc')(appname, conf);
+appCfg.configs[0] // /etc/appnamerc
+appCfg.configs[1] // /home/dominictarr/.config/appname
+appCfg.config // same as appCfg.configs[appCfg.configs.length - 1]
+```
+
+## Standards
+
+Given your application name (`appname`), rc will look in all the obvious places for configuration.
+
+ * command line arguments (parsed by minimist)
+ * environment variables prefixed with `${appname}_`
+ * or use "\_\_" to indicate nested properties <br/> _(e.g. `appname_foo__bar__baz` => `foo.bar.baz`)_
+ * if you passed an option `--config file` then from that file
+ * a local `.${appname}rc` or the first found looking in `./ ../ ../../ ../../../` etc.
+ * `$HOME/.${appname}rc`
+ * `$HOME/.${appname}/config`
+ * `$HOME/.config/${appname}`
+ * `$HOME/.config/${appname}/config`
+ * `/etc/${appname}rc`
+ * `/etc/${appname}/config`
+ * the defaults object you passed in.
+
+All configuration sources that were found will be flattened into one object,
+so that sources **earlier** in this list override later ones.
+
+
+## Configuration File Formats
+
+Configuration files (e.g. `.appnamerc`) may be in either [json](http://json.org/example) or [ini](http://en.wikipedia.org/wiki/INI_file) format. The example configurations below are equivalent:
+
+
+#### Formatted as `ini`
+
+```
+; You can include comments in `ini` format if you want.
+
+dependsOn=0.10.0
+
+
+; `rc` has built-in support for ini sections, see?
+
+[commands]
+ www = ./commands/www
+ console = ./commands/repl
+
+
+; You can even do nested sections
+
+[generators.options]
+ engine = ejs
+
+[generators.modules]
+ new = generate-new
+ engine = generate-backend
+
+```
+
+#### Formatted as `json`
+
+```javascript
+{
+ // You can even comment your JSON, if you want
+ "dependsOn": "0.10.0",
+ "commands": {
+ "www": "./commands/www",
+ "console": "./commands/repl"
+ },
+ "generators": {
+ "options": {
+ "engine": "ejs"
+ },
+ "modules": {
+ "new": "generate-new",
+ "backend": "generate-backend"
+ }
+ }
+}
+```
+
+Comments are stripped from JSON config via [strip-json-comments](https://github.com/sindresorhus/strip-json-comments).
+
+> Since ini, and env variables do not have a standard for types, your application needs be prepared for strings.
+
+
+
+## Advanced Usage
+
+#### Pass in your own `argv`
+
+You may pass in your own `argv` as the third argument to `rc`. This is in case you want to [use your own command-line opts parser](https://github.com/dominictarr/rc/pull/12).
+
+```javascript
+require('rc')(appname, defaults, customArgvParser);
+```
+
+## Pass in your own parser
+
+If you have a special need to use a non-standard parser,
+you can do so by passing in the parser as the 4th argument.
+(leave the 3rd as null to get the default args parser)
+
+```javascript
+require('rc')(appname, defaults, null, parser);
+```
+
+This may also be used to force a more strict format,
+such as strict, valid JSON only.
+
+## Note on Performance
+
+`rc` is running `fs.statSync`-- so make sure you don't use it in a hot code path (e.g. a request handler)
+
+
+## License
+
+Multi-licensed under the two-clause BSD License, MIT License, or Apache License, version 2.0
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/browser.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/browser.js
new file mode 100644
index 000000000..9ea1a3e39
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/browser.js
@@ -0,0 +1,7 @@
+
+// when this is loaded into the browser,
+// just use the defaults...
+
+module.exports = function (name, defaults) {
+ return defaults
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/index.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/index.js
new file mode 100755
index 000000000..6f8f1139d
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/index.js
@@ -0,0 +1,60 @@
+#! /usr/bin/env node
+var cc = require('./lib/utils')
+var join = require('path').join
+var deepExtend = require('deep-extend')
+var etc = '/etc'
+var win = process.platform === "win32"
+var home = win
+ ? process.env.USERPROFILE
+ : process.env.HOME
+
+module.exports = function (name, defaults, argv, parse) {
+ if('string' !== typeof name)
+ throw new Error('rc(name): name *must* be string')
+ if(!argv)
+ argv = require('minimist')(process.argv.slice(2))
+ defaults = (
+ 'string' === typeof defaults
+ ? cc.json(defaults) : defaults
+ ) || {}
+
+ parse = parse || cc.parse
+
+ var env = cc.env(name + '_')
+
+ var configs = [defaults]
+ var configFiles = []
+ function addConfigFile (file) {
+ if (configFiles.indexOf(file) >= 0) return
+ var fileConfig = cc.file(file)
+ if (fileConfig) {
+ configs.push(parse(fileConfig))
+ configFiles.push(file)
+ }
+ }
+
+ // which files do we look at?
+ if (!win)
+ [join(etc, name, 'config'),
+ join(etc, name + 'rc')].forEach(addConfigFile)
+ if (home)
+ [join(home, '.config', name, 'config'),
+ join(home, '.config', name),
+ join(home, '.' + name, 'config'),
+ join(home, '.' + name + 'rc')].forEach(addConfigFile)
+ addConfigFile(cc.find('.'+name+'rc'))
+ if (env.config) addConfigFile(env.config)
+ if (argv.config) addConfigFile(argv.config)
+
+ return deepExtend.apply(null, configs.concat([
+ env,
+ argv,
+ configFiles.length ? {configs: configFiles, config: configFiles[configFiles.length - 1]} : undefined,
+ ]))
+}
+
+if(!module.parent) {
+ console.log(
+ JSON.stringify(module.exports(process.argv[2]), false, 2)
+ )
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/lib/utils.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/lib/utils.js
new file mode 100644
index 000000000..c1bbe4d38
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/lib/utils.js
@@ -0,0 +1,102 @@
+'use strict';
+var fs = require('fs')
+var ini = require('ini')
+var path = require('path')
+var stripJsonComments = require('strip-json-comments')
+
+var parse = exports.parse = function (content) {
+
+ //if it ends in .json or starts with { then it must be json.
+ //must be done this way, because ini accepts everything.
+ //can't just try and parse it and let it throw if it's not ini.
+ //everything is ini. even json with a syntax error.
+
+ if(/^\s*{/.test(content))
+ return JSON.parse(stripJsonComments(content))
+ return ini.parse(content)
+
+}
+
+var file = exports.file = function () {
+ var args = [].slice.call(arguments).filter(function (arg) { return arg != null })
+
+ //path.join breaks if it's a not a string, so just skip this.
+ for(var i in args)
+ if('string' !== typeof args[i])
+ return
+
+ var file = path.join.apply(null, args)
+ var content
+ try {
+ return fs.readFileSync(file,'utf-8')
+ } catch (err) {
+ return
+ }
+}
+
+var json = exports.json = function () {
+ var content = file.apply(null, arguments)
+ return content ? parse(content) : null
+}
+
+var env = exports.env = function (prefix, env) {
+ env = env || process.env
+ var obj = {}
+ var l = prefix.length
+ for(var k in env) {
+ if((k.indexOf(prefix)) === 0) {
+
+ var keypath = k.substring(l).split('__')
+
+ // Trim empty strings from keypath array
+ var _emptyStringIndex
+ while ((_emptyStringIndex=keypath.indexOf('')) > -1) {
+ keypath.splice(_emptyStringIndex, 1)
+ }
+
+ var cursor = obj
+ keypath.forEach(function _buildSubObj(_subkey,i){
+
+ // (check for _subkey first so we ignore empty strings)
+ // (check for cursor to avoid assignment to primitive objects)
+ if (!_subkey || typeof cursor !== 'object')
+ return
+
+ // If this is the last key, just stuff the value in there
+ // Assigns actual value from env variable to final key
+ // (unless it's just an empty string- in that case use the last valid key)
+ if (i === keypath.length-1)
+ cursor[_subkey] = env[k]
+
+
+ // Build sub-object if nothing already exists at the keypath
+ if (cursor[_subkey] === undefined)
+ cursor[_subkey] = {}
+
+ // Increment cursor used to track the object at the current depth
+ cursor = cursor[_subkey]
+
+ })
+
+ }
+
+ }
+
+ return obj
+}
+
+var find = exports.find = function () {
+ var rel = path.join.apply(null, [].slice.call(arguments))
+
+ function find(start, rel) {
+ var file = path.join(start, rel)
+ try {
+ fs.statSync(file)
+ return file
+ } catch (err) {
+ if(path.dirname(start) !== start) // root
+ return find(path.dirname(start), rel)
+ }
+ }
+ return find(process.cwd(), rel)
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/.bin/strip-json-comments b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/.bin/strip-json-comments
new file mode 120000
index 000000000..63d549f96
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/.bin/strip-json-comments
@@ -0,0 +1 @@
+../strip-json-comments/cli.js \ No newline at end of file
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/deep-extend/CHANGELOG.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/deep-extend/CHANGELOG.md
new file mode 100644
index 000000000..f3efe0b22
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/deep-extend/CHANGELOG.md
@@ -0,0 +1,21 @@
+Changelog
+=========
+
+v0.4.1
+------
+
+- Removed test code from <b>npm</b> package
+ ([see pull request #21](https://github.com/unclechu/node-deep-extend/pull/21));
+- Increased minimal version of Node from 0.4.0 to 0.12.0
+ (because can't run tests on lesser version anyway).
+
+v0.4.0
+------
+
+Broken backward compatibility with v0.3.x
+
+- Fixed bug with extending arrays instead of cloning;
+- Deep cloning for arrays;
+- Check for own property;
+- Fixed some documentation issues;
+- Strict JS mode.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/deep-extend/LICENSE b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/deep-extend/LICENSE
new file mode 100644
index 000000000..acc4662ea
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/deep-extend/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2013-2015, Viacheslav Lotsmanov
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/deep-extend/README.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/deep-extend/README.md
new file mode 100644
index 000000000..cc17c9cd0
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/deep-extend/README.md
@@ -0,0 +1,90 @@
+Deep Extend
+===========
+
+Recursive object extending.
+
+[![NPM](https://nodei.co/npm/deep-extend.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/deep-extend/)
+[![NPM](https://nodei.co/npm-dl/deep-extend.png?height=3)](https://nodei.co/npm/deep-extend/)
+
+Install
+-------
+
+```bash
+$ npm install deep-extend
+```
+
+Usage
+-----
+
+```javascript
+var deepExtend = require('deep-extend');
+var obj1 = {
+ a: 1,
+ b: 2,
+ d: {
+ a: 1,
+ b: [],
+ c: { test1: 123, test2: 321 }
+ },
+ f: 5,
+ g: 123,
+ i: 321,
+ j: [1, 2]
+};
+var obj2 = {
+ b: 3,
+ c: 5,
+ d: {
+ b: { first: 'one', second: 'two' },
+ c: { test2: 222 }
+ },
+ e: { one: 1, two: 2 },
+ f: [],
+ g: (void 0),
+ h: /abc/g,
+ i: null,
+ j: [3, 4]
+};
+
+deepExtend(obj1, obj2);
+
+console.log(obj1);
+/*
+{ a: 1,
+ b: 3,
+ d:
+ { a: 1,
+ b: { first: 'one', second: 'two' },
+ c: { test1: 123, test2: 222 } },
+ f: null,
+ g: undefined,
+ c: 5,
+ e: { one: 1, two: 2 },
+ h: /abc/g,
+ i: null,
+ j: [3, 4] }
+*/
+```
+
+Unit testing
+------------
+
+```bash
+$ npm test
+```
+
+Changelog
+---------
+
+[CHANGELOG.md](./CHANGELOG.md)
+
+Any issues?
+-----------
+
+Please, report about issues
+[here](https://github.com/unclechu/node-deep-extend/issues).
+
+License
+-------
+
+[MIT](./LICENSE)
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/deep-extend/index.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/deep-extend/index.js
new file mode 100644
index 000000000..762d81e95
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/deep-extend/index.js
@@ -0,0 +1 @@
+module.exports = require('./lib/deep-extend');
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/deep-extend/lib/deep-extend.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/deep-extend/lib/deep-extend.js
new file mode 100644
index 000000000..522461d4d
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/deep-extend/lib/deep-extend.js
@@ -0,0 +1,144 @@
+/*!
+ * @description Recursive object extending
+ * @author Viacheslav Lotsmanov <lotsmanov89@gmail.com>
+ * @license MIT
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2013-2015 Viacheslav Lotsmanov
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+ * the Software, and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+'use strict';
+
+function isSpecificValue(val) {
+ return (
+ val instanceof Buffer
+ || val instanceof Date
+ || val instanceof RegExp
+ ) ? true : false;
+}
+
+function cloneSpecificValue(val) {
+ if (val instanceof Buffer) {
+ var x = new Buffer(val.length);
+ val.copy(x);
+ return x;
+ } else if (val instanceof Date) {
+ return new Date(val.getTime());
+ } else if (val instanceof RegExp) {
+ return new RegExp(val);
+ } else {
+ throw new Error('Unexpected situation');
+ }
+}
+
+/**
+ * Recursive cloning array.
+ */
+function deepCloneArray(arr) {
+ var clone = [];
+ arr.forEach(function (item, index) {
+ if (typeof item === 'object' && item !== null) {
+ if (Array.isArray(item)) {
+ clone[index] = deepCloneArray(item);
+ } else if (isSpecificValue(item)) {
+ clone[index] = cloneSpecificValue(item);
+ } else {
+ clone[index] = deepExtend({}, item);
+ }
+ } else {
+ clone[index] = item;
+ }
+ });
+ return clone;
+}
+
+/**
+ * Extening object that entered in first argument.
+ *
+ * Returns extended object or false if have no target object or incorrect type.
+ *
+ * If you wish to clone source object (without modify it), just use empty new
+ * object as first argument, like this:
+ * deepExtend({}, yourObj_1, [yourObj_N]);
+ */
+var deepExtend = module.exports = function (/*obj_1, [obj_2], [obj_N]*/) {
+ if (arguments.length < 1 || typeof arguments[0] !== 'object') {
+ return false;
+ }
+
+ if (arguments.length < 2) {
+ return arguments[0];
+ }
+
+ var target = arguments[0];
+
+ // convert arguments to array and cut off target object
+ var args = Array.prototype.slice.call(arguments, 1);
+
+ var val, src, clone;
+
+ args.forEach(function (obj) {
+ // skip argument if it is array or isn't object
+ if (typeof obj !== 'object' || Array.isArray(obj)) {
+ return;
+ }
+
+ Object.keys(obj).forEach(function (key) {
+ src = target[key]; // source value
+ val = obj[key]; // new value
+
+ // recursion prevention
+ if (val === target) {
+ return;
+
+ /**
+ * if new value isn't object then just overwrite by new value
+ * instead of extending.
+ */
+ } else if (typeof val !== 'object' || val === null) {
+ target[key] = val;
+ return;
+
+ // just clone arrays (and recursive clone objects inside)
+ } else if (Array.isArray(val)) {
+ target[key] = deepCloneArray(val);
+ return;
+
+ // custom cloning and overwrite for specific objects
+ } else if (isSpecificValue(val)) {
+ target[key] = cloneSpecificValue(val);
+ return;
+
+ // overwrite by new value if source isn't object or array
+ } else if (typeof src !== 'object' || src === null || Array.isArray(src)) {
+ target[key] = deepExtend({}, val);
+ return;
+
+ // source value and new value is objects both, extending...
+ } else {
+ target[key] = deepExtend(src, val);
+ return;
+ }
+ });
+ });
+
+ return target;
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/deep-extend/package.json b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/deep-extend/package.json
new file mode 100644
index 000000000..0a9e53dd1
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/deep-extend/package.json
@@ -0,0 +1,132 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "deep-extend@~0.4.0",
+ "scope": null,
+ "escapedName": "deep-extend",
+ "name": "deep-extend",
+ "rawSpec": "~0.4.0",
+ "spec": ">=0.4.0 <0.5.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc"
+ ],
+ [
+ {
+ "raw": "deep-extend@~0.4.0",
+ "scope": null,
+ "escapedName": "deep-extend",
+ "name": "deep-extend",
+ "rawSpec": "~0.4.0",
+ "spec": ">=0.4.0 <0.5.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc"
+ ]
+ ],
+ "_from": "deep-extend@~0.4.0",
+ "_id": "deep-extend@0.4.1",
+ "_inCache": true,
+ "_location": "/update-notifier/latest-version/package-json/registry-url/rc/deep-extend",
+ "_nodeVersion": "0.12.0",
+ "_npmUser": {
+ "name": "unclechu",
+ "email": "lotsmanov89@gmail.com"
+ },
+ "_npmVersion": "2.5.1",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "deep-extend@~0.4.0",
+ "scope": null,
+ "escapedName": "deep-extend",
+ "name": "deep-extend",
+ "rawSpec": "~0.4.0",
+ "spec": ">=0.4.0 <0.5.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/latest-version/package-json/registry-url/rc"
+ ],
+ "_resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz",
+ "_shasum": "efe4113d08085f4e6f9687759810f807469e2253",
+ "_shrinkwrap": null,
+ "_spec": "deep-extend@~0.4.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc",
+ "author": {
+ "name": "Viacheslav Lotsmanov",
+ "email": "lotsmanov89@gmail.com"
+ },
+ "bugs": {
+ "url": "https://github.com/unclechu/node-deep-extend/issues"
+ },
+ "contributors": [
+ {
+ "name": "Romain Prieto",
+ "url": "https://github.com/rprieto"
+ },
+ {
+ "name": "Max Maximov",
+ "url": "https://github.com/maxmaximov"
+ }
+ ],
+ "dependencies": {},
+ "description": "Recursive object extending",
+ "devDependencies": {
+ "mocha": "^2.2.1",
+ "should": "^5.2.0"
+ },
+ "directories": {
+ "lib": "./lib/",
+ "test": "./test/"
+ },
+ "dist": {
+ "shasum": "efe4113d08085f4e6f9687759810f807469e2253",
+ "tarball": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz"
+ },
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.12.0"
+ },
+ "files": [
+ "lib/deep-extend.js",
+ "index.js"
+ ],
+ "gitHead": "08e39356bba769744c669eb219a31fee07decd19",
+ "homepage": "https://github.com/unclechu/node-deep-extend",
+ "keywords": [
+ "deep-extend",
+ "extend",
+ "deep",
+ "recursive",
+ "xtend",
+ "clone",
+ "merge",
+ "json"
+ ],
+ "license": "MIT",
+ "licenses": [
+ {
+ "type": "MIT",
+ "url": "https://raw.githubusercontent.com/unclechu/node-deep-extend/master/LICENSE"
+ }
+ ],
+ "main": "lib/deep-extend.js",
+ "maintainers": [
+ {
+ "name": "unclechu",
+ "email": "lotsmanov89@gmail.com"
+ }
+ ],
+ "name": "deep-extend",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/unclechu/node-deep-extend.git"
+ },
+ "scripts": {
+ "test": "mocha"
+ },
+ "version": "0.4.1"
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/.travis.yml b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/.travis.yml
new file mode 100644
index 000000000..74c57bf15
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/.travis.yml
@@ -0,0 +1,8 @@
+language: node_js
+node_js:
+ - "0.8"
+ - "0.10"
+ - "0.12"
+ - "iojs"
+before_install:
+ - npm install -g npm@~1.4.6
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/LICENSE b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/LICENSE
new file mode 100644
index 000000000..ee27ba4b4
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/LICENSE
@@ -0,0 +1,18 @@
+This software is released under the MIT license:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/example/parse.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/example/parse.js
new file mode 100644
index 000000000..abff3e8ee
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/example/parse.js
@@ -0,0 +1,2 @@
+var argv = require('../')(process.argv.slice(2));
+console.dir(argv);
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/index.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/index.js
new file mode 100644
index 000000000..e06783fb1
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/index.js
@@ -0,0 +1,235 @@
+module.exports = function (args, opts) {
+ if (!opts) opts = {};
+
+ var flags = { bools : {}, strings : {}, unknownFn: null };
+
+ if (typeof opts['unknown'] === 'function') {
+ flags.unknownFn = opts['unknown'];
+ }
+
+ if (typeof opts['boolean'] === 'boolean' && opts['boolean']) {
+ flags.allBools = true;
+ } else {
+ [].concat(opts['boolean']).filter(Boolean).forEach(function (key) {
+ flags.bools[key] = true;
+ });
+ }
+
+ var aliases = {};
+ Object.keys(opts.alias || {}).forEach(function (key) {
+ aliases[key] = [].concat(opts.alias[key]);
+ aliases[key].forEach(function (x) {
+ aliases[x] = [key].concat(aliases[key].filter(function (y) {
+ return x !== y;
+ }));
+ });
+ });
+
+ [].concat(opts.string).filter(Boolean).forEach(function (key) {
+ flags.strings[key] = true;
+ if (aliases[key]) {
+ flags.strings[aliases[key]] = true;
+ }
+ });
+
+ var defaults = opts['default'] || {};
+
+ var argv = { _ : [] };
+ Object.keys(flags.bools).forEach(function (key) {
+ setArg(key, defaults[key] === undefined ? false : defaults[key]);
+ });
+
+ var notFlags = [];
+
+ if (args.indexOf('--') !== -1) {
+ notFlags = args.slice(args.indexOf('--')+1);
+ args = args.slice(0, args.indexOf('--'));
+ }
+
+ function argDefined(key, arg) {
+ return (flags.allBools && /^--[^=]+$/.test(arg)) ||
+ flags.strings[key] || flags.bools[key] || aliases[key];
+ }
+
+ function setArg (key, val, arg) {
+ if (arg && flags.unknownFn && !argDefined(key, arg)) {
+ if (flags.unknownFn(arg) === false) return;
+ }
+
+ var value = !flags.strings[key] && isNumber(val)
+ ? Number(val) : val
+ ;
+ setKey(argv, key.split('.'), value);
+
+ (aliases[key] || []).forEach(function (x) {
+ setKey(argv, x.split('.'), value);
+ });
+ }
+
+ function setKey (obj, keys, value) {
+ var o = obj;
+ keys.slice(0,-1).forEach(function (key) {
+ if (o[key] === undefined) o[key] = {};
+ o = o[key];
+ });
+
+ var key = keys[keys.length - 1];
+ if (o[key] === undefined || flags.bools[key] || typeof o[key] === 'boolean') {
+ o[key] = value;
+ }
+ else if (Array.isArray(o[key])) {
+ o[key].push(value);
+ }
+ else {
+ o[key] = [ o[key], value ];
+ }
+ }
+
+ function aliasIsBoolean(key) {
+ return aliases[key].some(function (x) {
+ return flags.bools[x];
+ });
+ }
+
+ for (var i = 0; i < args.length; i++) {
+ var arg = args[i];
+
+ if (/^--.+=/.test(arg)) {
+ // Using [\s\S] instead of . because js doesn't support the
+ // 'dotall' regex modifier. See:
+ // http://stackoverflow.com/a/1068308/13216
+ var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
+ var key = m[1];
+ var value = m[2];
+ if (flags.bools[key]) {
+ value = value !== 'false';
+ }
+ setArg(key, value, arg);
+ }
+ else if (/^--no-.+/.test(arg)) {
+ var key = arg.match(/^--no-(.+)/)[1];
+ setArg(key, false, arg);
+ }
+ else if (/^--.+/.test(arg)) {
+ var key = arg.match(/^--(.+)/)[1];
+ var next = args[i + 1];
+ if (next !== undefined && !/^-/.test(next)
+ && !flags.bools[key]
+ && !flags.allBools
+ && (aliases[key] ? !aliasIsBoolean(key) : true)) {
+ setArg(key, next, arg);
+ i++;
+ }
+ else if (/^(true|false)$/.test(next)) {
+ setArg(key, next === 'true', arg);
+ i++;
+ }
+ else {
+ setArg(key, flags.strings[key] ? '' : true, arg);
+ }
+ }
+ else if (/^-[^-]+/.test(arg)) {
+ var letters = arg.slice(1,-1).split('');
+
+ var broken = false;
+ for (var j = 0; j < letters.length; j++) {
+ var next = arg.slice(j+2);
+
+ if (next === '-') {
+ setArg(letters[j], next, arg)
+ continue;
+ }
+
+ if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) {
+ setArg(letters[j], next.split('=')[1], arg);
+ broken = true;
+ break;
+ }
+
+ if (/[A-Za-z]/.test(letters[j])
+ && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
+ setArg(letters[j], next, arg);
+ broken = true;
+ break;
+ }
+
+ if (letters[j+1] && letters[j+1].match(/\W/)) {
+ setArg(letters[j], arg.slice(j+2), arg);
+ broken = true;
+ break;
+ }
+ else {
+ setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);
+ }
+ }
+
+ var key = arg.slice(-1)[0];
+ if (!broken && key !== '-') {
+ if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1])
+ && !flags.bools[key]
+ && (aliases[key] ? !aliasIsBoolean(key) : true)) {
+ setArg(key, args[i+1], arg);
+ i++;
+ }
+ else if (args[i+1] && /true|false/.test(args[i+1])) {
+ setArg(key, args[i+1] === 'true', arg);
+ i++;
+ }
+ else {
+ setArg(key, flags.strings[key] ? '' : true, arg);
+ }
+ }
+ }
+ else {
+ if (!flags.unknownFn || flags.unknownFn(arg) !== false) {
+ argv._.push(
+ flags.strings['_'] || !isNumber(arg) ? arg : Number(arg)
+ );
+ }
+ if (opts.stopEarly) {
+ argv._.push.apply(argv._, args.slice(i + 1));
+ break;
+ }
+ }
+ }
+
+ Object.keys(defaults).forEach(function (key) {
+ if (!hasKey(argv, key.split('.'))) {
+ setKey(argv, key.split('.'), defaults[key]);
+
+ (aliases[key] || []).forEach(function (x) {
+ setKey(argv, x.split('.'), defaults[key]);
+ });
+ }
+ });
+
+ if (opts['--']) {
+ argv['--'] = new Array();
+ notFlags.forEach(function(key) {
+ argv['--'].push(key);
+ });
+ }
+ else {
+ notFlags.forEach(function(key) {
+ argv._.push(key);
+ });
+ }
+
+ return argv;
+};
+
+function hasKey (obj, keys) {
+ var o = obj;
+ keys.slice(0,-1).forEach(function (key) {
+ o = (o[key] || {});
+ });
+
+ var key = keys[keys.length - 1];
+ return key in o;
+}
+
+function isNumber (x) {
+ if (typeof x === 'number') return true;
+ if (/^0x[0-9a-f]+$/i.test(x)) return true;
+ return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/package.json b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/package.json
new file mode 100644
index 000000000..f7e3711ae
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/package.json
@@ -0,0 +1,117 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "minimist@^1.2.0",
+ "scope": null,
+ "escapedName": "minimist",
+ "name": "minimist",
+ "rawSpec": "^1.2.0",
+ "spec": ">=1.2.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc"
+ ],
+ [
+ {
+ "raw": "minimist@^1.2.0",
+ "scope": null,
+ "escapedName": "minimist",
+ "name": "minimist",
+ "rawSpec": "^1.2.0",
+ "spec": ">=1.2.0 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc"
+ ]
+ ],
+ "_from": "minimist@^1.2.0",
+ "_id": "minimist@1.2.0",
+ "_inCache": true,
+ "_location": "/update-notifier/latest-version/package-json/registry-url/rc/minimist",
+ "_nodeVersion": "2.4.0",
+ "_npmUser": {
+ "name": "substack",
+ "email": "substack@gmail.com"
+ },
+ "_npmVersion": "3.2.2",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "minimist@^1.2.0",
+ "scope": null,
+ "escapedName": "minimist",
+ "name": "minimist",
+ "rawSpec": "^1.2.0",
+ "spec": ">=1.2.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/latest-version/package-json/registry-url/rc"
+ ],
+ "_resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "_shasum": "a35008b20f41383eec1fb914f4cd5df79a264284",
+ "_shrinkwrap": null,
+ "_spec": "minimist@^1.2.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc",
+ "author": {
+ "name": "James Halliday",
+ "email": "mail@substack.net",
+ "url": "http://substack.net"
+ },
+ "bugs": {
+ "url": "https://github.com/substack/minimist/issues"
+ },
+ "dependencies": {},
+ "description": "parse argument options",
+ "devDependencies": {
+ "covert": "^1.0.0",
+ "tap": "~0.4.0",
+ "tape": "^3.5.0"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "a35008b20f41383eec1fb914f4cd5df79a264284",
+ "tarball": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz"
+ },
+ "gitHead": "dc624482fcfec5bc669c68cdb861f00573ed4e64",
+ "homepage": "https://github.com/substack/minimist",
+ "keywords": [
+ "argv",
+ "getopt",
+ "parser",
+ "optimist"
+ ],
+ "license": "MIT",
+ "main": "index.js",
+ "maintainers": [
+ {
+ "name": "substack",
+ "email": "mail@substack.net"
+ }
+ ],
+ "name": "minimist",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/substack/minimist.git"
+ },
+ "scripts": {
+ "coverage": "covert test/*.js",
+ "test": "tap test/*.js"
+ },
+ "testling": {
+ "files": "test/*.js",
+ "browsers": [
+ "ie/6..latest",
+ "ff/5",
+ "firefox/latest",
+ "chrome/10",
+ "chrome/latest",
+ "safari/5.1",
+ "safari/latest",
+ "opera/12"
+ ]
+ },
+ "version": "1.2.0"
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/readme.markdown b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/readme.markdown
new file mode 100644
index 000000000..30a74cf8c
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/readme.markdown
@@ -0,0 +1,91 @@
+# minimist
+
+parse argument options
+
+This module is the guts of optimist's argument parser without all the
+fanciful decoration.
+
+[![browser support](https://ci.testling.com/substack/minimist.png)](http://ci.testling.com/substack/minimist)
+
+[![build status](https://secure.travis-ci.org/substack/minimist.png)](http://travis-ci.org/substack/minimist)
+
+# example
+
+``` js
+var argv = require('minimist')(process.argv.slice(2));
+console.dir(argv);
+```
+
+```
+$ node example/parse.js -a beep -b boop
+{ _: [], a: 'beep', b: 'boop' }
+```
+
+```
+$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz
+{ _: [ 'foo', 'bar', 'baz' ],
+ x: 3,
+ y: 4,
+ n: 5,
+ a: true,
+ b: true,
+ c: true,
+ beep: 'boop' }
+```
+
+# methods
+
+``` js
+var parseArgs = require('minimist')
+```
+
+## var argv = parseArgs(args, opts={})
+
+Return an argument object `argv` populated with the array arguments from `args`.
+
+`argv._` contains all the arguments that didn't have an option associated with
+them.
+
+Numeric-looking arguments will be returned as numbers unless `opts.string` or
+`opts.boolean` is set for that argument name.
+
+Any arguments after `'--'` will not be parsed and will end up in `argv._`.
+
+options can be:
+
+* `opts.string` - a string or array of strings argument names to always treat as
+strings
+* `opts.boolean` - a boolean, string or array of strings to always treat as
+booleans. if `true` will treat all double hyphenated arguments without equal signs
+as boolean (e.g. affects `--foo`, not `-f` or `--foo=bar`)
+* `opts.alias` - an object mapping string names to strings or arrays of string
+argument names to use as aliases
+* `opts.default` - an object mapping string argument names to default values
+* `opts.stopEarly` - when true, populate `argv._` with everything after the
+first non-option
+* `opts['--']` - when true, populate `argv._` with everything before the `--`
+and `argv['--']` with everything after the `--`. Here's an example:
+* `opts.unknown` - a function which is invoked with a command line parameter not
+defined in the `opts` configuration object. If the function returns `false`, the
+unknown option is not added to `argv`.
+
+```
+> require('./')('one two three -- four five --six'.split(' '), { '--': true })
+{ _: [ 'one', 'two', 'three' ],
+ '--': [ 'four', 'five', '--six' ] }
+```
+
+Note that with `opts['--']` set, parsing for arguments still stops after the
+`--`.
+
+# install
+
+With [npm](https://npmjs.org) do:
+
+```
+npm install minimist
+```
+
+# license
+
+MIT
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/all_bool.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/all_bool.js
new file mode 100644
index 000000000..25df1654b
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/all_bool.js
@@ -0,0 +1,32 @@
+var parse = require('../');
+var test = require('tape');
+
+test('flag boolean true (default all --args to boolean)', function (t) {
+ var argv = parse(['moo', '--honk', 'cow'], {
+ boolean: true
+ });
+
+ t.deepEqual(argv, {
+ honk: true,
+ _: ['moo', 'cow']
+ });
+
+ t.deepEqual(typeof argv.honk, 'boolean');
+ t.end();
+});
+
+test('flag boolean true only affects double hyphen arguments without equals signs', function (t) {
+ var argv = parse(['moo', '--honk', 'cow', '-p', '55', '--tacos=good'], {
+ boolean: true
+ });
+
+ t.deepEqual(argv, {
+ honk: true,
+ tacos: 'good',
+ p: 55,
+ _: ['moo', 'cow']
+ });
+
+ t.deepEqual(typeof argv.honk, 'boolean');
+ t.end();
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/bool.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/bool.js
new file mode 100644
index 000000000..6e793e4b6
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/bool.js
@@ -0,0 +1,166 @@
+var parse = require('../');
+var test = require('tape');
+
+test('flag boolean default false', function (t) {
+ var argv = parse(['moo'], {
+ boolean: ['t', 'verbose'],
+ default: { verbose: false, t: false }
+ });
+
+ t.deepEqual(argv, {
+ verbose: false,
+ t: false,
+ _: ['moo']
+ });
+
+ t.deepEqual(typeof argv.verbose, 'boolean');
+ t.deepEqual(typeof argv.t, 'boolean');
+ t.end();
+
+});
+
+test('boolean groups', function (t) {
+ var argv = parse([ '-x', '-z', 'one', 'two', 'three' ], {
+ boolean: ['x','y','z']
+ });
+
+ t.deepEqual(argv, {
+ x : true,
+ y : false,
+ z : true,
+ _ : [ 'one', 'two', 'three' ]
+ });
+
+ t.deepEqual(typeof argv.x, 'boolean');
+ t.deepEqual(typeof argv.y, 'boolean');
+ t.deepEqual(typeof argv.z, 'boolean');
+ t.end();
+});
+test('boolean and alias with chainable api', function (t) {
+ var aliased = [ '-h', 'derp' ];
+ var regular = [ '--herp', 'derp' ];
+ var opts = {
+ herp: { alias: 'h', boolean: true }
+ };
+ var aliasedArgv = parse(aliased, {
+ boolean: 'herp',
+ alias: { h: 'herp' }
+ });
+ var propertyArgv = parse(regular, {
+ boolean: 'herp',
+ alias: { h: 'herp' }
+ });
+ var expected = {
+ herp: true,
+ h: true,
+ '_': [ 'derp' ]
+ };
+
+ t.same(aliasedArgv, expected);
+ t.same(propertyArgv, expected);
+ t.end();
+});
+
+test('boolean and alias with options hash', function (t) {
+ var aliased = [ '-h', 'derp' ];
+ var regular = [ '--herp', 'derp' ];
+ var opts = {
+ alias: { 'h': 'herp' },
+ boolean: 'herp'
+ };
+ var aliasedArgv = parse(aliased, opts);
+ var propertyArgv = parse(regular, opts);
+ var expected = {
+ herp: true,
+ h: true,
+ '_': [ 'derp' ]
+ };
+ t.same(aliasedArgv, expected);
+ t.same(propertyArgv, expected);
+ t.end();
+});
+
+test('boolean and alias array with options hash', function (t) {
+ var aliased = [ '-h', 'derp' ];
+ var regular = [ '--herp', 'derp' ];
+ var alt = [ '--harp', 'derp' ];
+ var opts = {
+ alias: { 'h': ['herp', 'harp'] },
+ boolean: 'h'
+ };
+ var aliasedArgv = parse(aliased, opts);
+ var propertyArgv = parse(regular, opts);
+ var altPropertyArgv = parse(alt, opts);
+ var expected = {
+ harp: true,
+ herp: true,
+ h: true,
+ '_': [ 'derp' ]
+ };
+ t.same(aliasedArgv, expected);
+ t.same(propertyArgv, expected);
+ t.same(altPropertyArgv, expected);
+ t.end();
+});
+
+test('boolean and alias using explicit true', function (t) {
+ var aliased = [ '-h', 'true' ];
+ var regular = [ '--herp', 'true' ];
+ var opts = {
+ alias: { h: 'herp' },
+ boolean: 'h'
+ };
+ var aliasedArgv = parse(aliased, opts);
+ var propertyArgv = parse(regular, opts);
+ var expected = {
+ herp: true,
+ h: true,
+ '_': [ ]
+ };
+
+ t.same(aliasedArgv, expected);
+ t.same(propertyArgv, expected);
+ t.end();
+});
+
+// regression, see https://github.com/substack/node-optimist/issues/71
+test('boolean and --x=true', function(t) {
+ var parsed = parse(['--boool', '--other=true'], {
+ boolean: 'boool'
+ });
+
+ t.same(parsed.boool, true);
+ t.same(parsed.other, 'true');
+
+ parsed = parse(['--boool', '--other=false'], {
+ boolean: 'boool'
+ });
+
+ t.same(parsed.boool, true);
+ t.same(parsed.other, 'false');
+ t.end();
+});
+
+test('boolean --boool=true', function (t) {
+ var parsed = parse(['--boool=true'], {
+ default: {
+ boool: false
+ },
+ boolean: ['boool']
+ });
+
+ t.same(parsed.boool, true);
+ t.end();
+});
+
+test('boolean --boool=false', function (t) {
+ var parsed = parse(['--boool=false'], {
+ default: {
+ boool: true
+ },
+ boolean: ['boool']
+ });
+
+ t.same(parsed.boool, false);
+ t.end();
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/dash.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/dash.js
new file mode 100644
index 000000000..5a4fa5be4
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/dash.js
@@ -0,0 +1,31 @@
+var parse = require('../');
+var test = require('tape');
+
+test('-', function (t) {
+ t.plan(5);
+ t.deepEqual(parse([ '-n', '-' ]), { n: '-', _: [] });
+ t.deepEqual(parse([ '-' ]), { _: [ '-' ] });
+ t.deepEqual(parse([ '-f-' ]), { f: '-', _: [] });
+ t.deepEqual(
+ parse([ '-b', '-' ], { boolean: 'b' }),
+ { b: true, _: [ '-' ] }
+ );
+ t.deepEqual(
+ parse([ '-s', '-' ], { string: 's' }),
+ { s: '-', _: [] }
+ );
+});
+
+test('-a -- b', function (t) {
+ t.plan(3);
+ t.deepEqual(parse([ '-a', '--', 'b' ]), { a: true, _: [ 'b' ] });
+ t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
+ t.deepEqual(parse([ '--a', '--', 'b' ]), { a: true, _: [ 'b' ] });
+});
+
+test('move arguments after the -- into their own `--` array', function(t) {
+ t.plan(1);
+ t.deepEqual(
+ parse([ '--name', 'John', 'before', '--', 'after' ], { '--': true }),
+ { name: 'John', _: [ 'before' ], '--': [ 'after' ] });
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/default_bool.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/default_bool.js
new file mode 100644
index 000000000..780a31127
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/default_bool.js
@@ -0,0 +1,35 @@
+var test = require('tape');
+var parse = require('../');
+
+test('boolean default true', function (t) {
+ var argv = parse([], {
+ boolean: 'sometrue',
+ default: { sometrue: true }
+ });
+ t.equal(argv.sometrue, true);
+ t.end();
+});
+
+test('boolean default false', function (t) {
+ var argv = parse([], {
+ boolean: 'somefalse',
+ default: { somefalse: false }
+ });
+ t.equal(argv.somefalse, false);
+ t.end();
+});
+
+test('boolean default to null', function (t) {
+ var argv = parse([], {
+ boolean: 'maybe',
+ default: { maybe: null }
+ });
+ t.equal(argv.maybe, null);
+ var argv = parse(['--maybe'], {
+ boolean: 'maybe',
+ default: { maybe: null }
+ });
+ t.equal(argv.maybe, true);
+ t.end();
+
+})
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/dotted.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/dotted.js
new file mode 100644
index 000000000..d8b3e856e
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/dotted.js
@@ -0,0 +1,22 @@
+var parse = require('../');
+var test = require('tape');
+
+test('dotted alias', function (t) {
+ var argv = parse(['--a.b', '22'], {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
+ t.equal(argv.a.b, 22);
+ t.equal(argv.aa.bb, 22);
+ t.end();
+});
+
+test('dotted default', function (t) {
+ var argv = parse('', {default: {'a.b': 11}, alias: {'a.b': 'aa.bb'}});
+ t.equal(argv.a.b, 11);
+ t.equal(argv.aa.bb, 11);
+ t.end();
+});
+
+test('dotted default with no alias', function (t) {
+ var argv = parse('', {default: {'a.b': 11}});
+ t.equal(argv.a.b, 11);
+ t.end();
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/kv_short.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/kv_short.js
new file mode 100644
index 000000000..ae880be46
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/kv_short.js
@@ -0,0 +1,16 @@
+var parse = require('../');
+var test = require('tape');
+
+test('short -k=v' , function (t) {
+ t.plan(1);
+
+ var argv = parse([ '-b=123' ]);
+ t.deepEqual(argv, { b: 123, _: [] });
+});
+
+test('multi short -k=v' , function (t) {
+ t.plan(1);
+
+ var argv = parse([ '-a=whatever', '-b=robots' ]);
+ t.deepEqual(argv, { a: 'whatever', b: 'robots', _: [] });
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/long.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/long.js
new file mode 100644
index 000000000..5d3a1e09d
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/long.js
@@ -0,0 +1,31 @@
+var test = require('tape');
+var parse = require('../');
+
+test('long opts', function (t) {
+ t.deepEqual(
+ parse([ '--bool' ]),
+ { bool : true, _ : [] },
+ 'long boolean'
+ );
+ t.deepEqual(
+ parse([ '--pow', 'xixxle' ]),
+ { pow : 'xixxle', _ : [] },
+ 'long capture sp'
+ );
+ t.deepEqual(
+ parse([ '--pow=xixxle' ]),
+ { pow : 'xixxle', _ : [] },
+ 'long capture eq'
+ );
+ t.deepEqual(
+ parse([ '--host', 'localhost', '--port', '555' ]),
+ { host : 'localhost', port : 555, _ : [] },
+ 'long captures sp'
+ );
+ t.deepEqual(
+ parse([ '--host=localhost', '--port=555' ]),
+ { host : 'localhost', port : 555, _ : [] },
+ 'long captures eq'
+ );
+ t.end();
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/num.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/num.js
new file mode 100644
index 000000000..2cc77f4d6
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/num.js
@@ -0,0 +1,36 @@
+var parse = require('../');
+var test = require('tape');
+
+test('nums', function (t) {
+ var argv = parse([
+ '-x', '1234',
+ '-y', '5.67',
+ '-z', '1e7',
+ '-w', '10f',
+ '--hex', '0xdeadbeef',
+ '789'
+ ]);
+ t.deepEqual(argv, {
+ x : 1234,
+ y : 5.67,
+ z : 1e7,
+ w : '10f',
+ hex : 0xdeadbeef,
+ _ : [ 789 ]
+ });
+ t.deepEqual(typeof argv.x, 'number');
+ t.deepEqual(typeof argv.y, 'number');
+ t.deepEqual(typeof argv.z, 'number');
+ t.deepEqual(typeof argv.w, 'string');
+ t.deepEqual(typeof argv.hex, 'number');
+ t.deepEqual(typeof argv._[0], 'number');
+ t.end();
+});
+
+test('already a number', function (t) {
+ var argv = parse([ '-x', 1234, 789 ]);
+ t.deepEqual(argv, { x : 1234, _ : [ 789 ] });
+ t.deepEqual(typeof argv.x, 'number');
+ t.deepEqual(typeof argv._[0], 'number');
+ t.end();
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/parse.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/parse.js
new file mode 100644
index 000000000..58f24572c
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/parse.js
@@ -0,0 +1,197 @@
+var parse = require('../');
+var test = require('tape');
+
+test('parse args', function (t) {
+ t.deepEqual(
+ parse([ '--no-moo' ]),
+ { moo : false, _ : [] },
+ 'no'
+ );
+ t.deepEqual(
+ parse([ '-v', 'a', '-v', 'b', '-v', 'c' ]),
+ { v : ['a','b','c'], _ : [] },
+ 'multi'
+ );
+ t.end();
+});
+
+test('comprehensive', function (t) {
+ t.deepEqual(
+ parse([
+ '--name=meowmers', 'bare', '-cats', 'woo',
+ '-h', 'awesome', '--multi=quux',
+ '--key', 'value',
+ '-b', '--bool', '--no-meep', '--multi=baz',
+ '--', '--not-a-flag', 'eek'
+ ]),
+ {
+ c : true,
+ a : true,
+ t : true,
+ s : 'woo',
+ h : 'awesome',
+ b : true,
+ bool : true,
+ key : 'value',
+ multi : [ 'quux', 'baz' ],
+ meep : false,
+ name : 'meowmers',
+ _ : [ 'bare', '--not-a-flag', 'eek' ]
+ }
+ );
+ t.end();
+});
+
+test('flag boolean', function (t) {
+ var argv = parse([ '-t', 'moo' ], { boolean: 't' });
+ t.deepEqual(argv, { t : true, _ : [ 'moo' ] });
+ t.deepEqual(typeof argv.t, 'boolean');
+ t.end();
+});
+
+test('flag boolean value', function (t) {
+ var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], {
+ boolean: [ 't', 'verbose' ],
+ default: { verbose: true }
+ });
+
+ t.deepEqual(argv, {
+ verbose: false,
+ t: true,
+ _: ['moo']
+ });
+
+ t.deepEqual(typeof argv.verbose, 'boolean');
+ t.deepEqual(typeof argv.t, 'boolean');
+ t.end();
+});
+
+test('newlines in params' , function (t) {
+ var args = parse([ '-s', "X\nX" ])
+ t.deepEqual(args, { _ : [], s : "X\nX" });
+
+ // reproduce in bash:
+ // VALUE="new
+ // line"
+ // node program.js --s="$VALUE"
+ args = parse([ "--s=X\nX" ])
+ t.deepEqual(args, { _ : [], s : "X\nX" });
+ t.end();
+});
+
+test('strings' , function (t) {
+ var s = parse([ '-s', '0001234' ], { string: 's' }).s;
+ t.equal(s, '0001234');
+ t.equal(typeof s, 'string');
+
+ var x = parse([ '-x', '56' ], { string: 'x' }).x;
+ t.equal(x, '56');
+ t.equal(typeof x, 'string');
+ t.end();
+});
+
+test('stringArgs', function (t) {
+ var s = parse([ ' ', ' ' ], { string: '_' })._;
+ t.same(s.length, 2);
+ t.same(typeof s[0], 'string');
+ t.same(s[0], ' ');
+ t.same(typeof s[1], 'string');
+ t.same(s[1], ' ');
+ t.end();
+});
+
+test('empty strings', function(t) {
+ var s = parse([ '-s' ], { string: 's' }).s;
+ t.equal(s, '');
+ t.equal(typeof s, 'string');
+
+ var str = parse([ '--str' ], { string: 'str' }).str;
+ t.equal(str, '');
+ t.equal(typeof str, 'string');
+
+ var letters = parse([ '-art' ], {
+ string: [ 'a', 't' ]
+ });
+
+ t.equal(letters.a, '');
+ t.equal(letters.r, true);
+ t.equal(letters.t, '');
+
+ t.end();
+});
+
+
+test('string and alias', function(t) {
+ var x = parse([ '--str', '000123' ], {
+ string: 's',
+ alias: { s: 'str' }
+ });
+
+ t.equal(x.str, '000123');
+ t.equal(typeof x.str, 'string');
+ t.equal(x.s, '000123');
+ t.equal(typeof x.s, 'string');
+
+ var y = parse([ '-s', '000123' ], {
+ string: 'str',
+ alias: { str: 's' }
+ });
+
+ t.equal(y.str, '000123');
+ t.equal(typeof y.str, 'string');
+ t.equal(y.s, '000123');
+ t.equal(typeof y.s, 'string');
+ t.end();
+});
+
+test('slashBreak', function (t) {
+ t.same(
+ parse([ '-I/foo/bar/baz' ]),
+ { I : '/foo/bar/baz', _ : [] }
+ );
+ t.same(
+ parse([ '-xyz/foo/bar/baz' ]),
+ { x : true, y : true, z : '/foo/bar/baz', _ : [] }
+ );
+ t.end();
+});
+
+test('alias', function (t) {
+ var argv = parse([ '-f', '11', '--zoom', '55' ], {
+ alias: { z: 'zoom' }
+ });
+ t.equal(argv.zoom, 55);
+ t.equal(argv.z, argv.zoom);
+ t.equal(argv.f, 11);
+ t.end();
+});
+
+test('multiAlias', function (t) {
+ var argv = parse([ '-f', '11', '--zoom', '55' ], {
+ alias: { z: [ 'zm', 'zoom' ] }
+ });
+ t.equal(argv.zoom, 55);
+ t.equal(argv.z, argv.zoom);
+ t.equal(argv.z, argv.zm);
+ t.equal(argv.f, 11);
+ t.end();
+});
+
+test('nested dotted objects', function (t) {
+ var argv = parse([
+ '--foo.bar', '3', '--foo.baz', '4',
+ '--foo.quux.quibble', '5', '--foo.quux.o_O',
+ '--beep.boop'
+ ]);
+
+ t.same(argv.foo, {
+ bar : 3,
+ baz : 4,
+ quux : {
+ quibble : 5,
+ o_O : true
+ }
+ });
+ t.same(argv.beep, { boop : true });
+ t.end();
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/parse_modified.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/parse_modified.js
new file mode 100644
index 000000000..a22248532
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/parse_modified.js
@@ -0,0 +1,9 @@
+var parse = require('../');
+var test = require('tape');
+
+test('parse with modifier functions' , function (t) {
+ t.plan(1);
+
+ var argv = parse([ '-b', '123' ], { boolean: 'b' });
+ t.deepEqual(argv, { b: true, _: [123] });
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/short.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/short.js
new file mode 100644
index 000000000..ac18880f1
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/short.js
@@ -0,0 +1,67 @@
+var parse = require('../');
+var test = require('tape');
+
+test('numeric short args', function (t) {
+ t.plan(2);
+ t.deepEqual(parse([ '-n123' ]), { n: 123, _: [] });
+ t.deepEqual(
+ parse([ '-123', '456' ]),
+ { 1: true, 2: true, 3: 456, _: [] }
+ );
+});
+
+test('short', function (t) {
+ t.deepEqual(
+ parse([ '-b' ]),
+ { b : true, _ : [] },
+ 'short boolean'
+ );
+ t.deepEqual(
+ parse([ 'foo', 'bar', 'baz' ]),
+ { _ : [ 'foo', 'bar', 'baz' ] },
+ 'bare'
+ );
+ t.deepEqual(
+ parse([ '-cats' ]),
+ { c : true, a : true, t : true, s : true, _ : [] },
+ 'group'
+ );
+ t.deepEqual(
+ parse([ '-cats', 'meow' ]),
+ { c : true, a : true, t : true, s : 'meow', _ : [] },
+ 'short group next'
+ );
+ t.deepEqual(
+ parse([ '-h', 'localhost' ]),
+ { h : 'localhost', _ : [] },
+ 'short capture'
+ );
+ t.deepEqual(
+ parse([ '-h', 'localhost', '-p', '555' ]),
+ { h : 'localhost', p : 555, _ : [] },
+ 'short captures'
+ );
+ t.end();
+});
+
+test('mixed short bool and capture', function (t) {
+ t.same(
+ parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
+ {
+ f : true, p : 555, h : 'localhost',
+ _ : [ 'script.js' ]
+ }
+ );
+ t.end();
+});
+
+test('short and long', function (t) {
+ t.deepEqual(
+ parse([ '-h', 'localhost', '-fp', '555', 'script.js' ]),
+ {
+ f : true, p : 555, h : 'localhost',
+ _ : [ 'script.js' ]
+ }
+ );
+ t.end();
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/stop_early.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/stop_early.js
new file mode 100644
index 000000000..bdf9fbcb0
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/stop_early.js
@@ -0,0 +1,15 @@
+var parse = require('../');
+var test = require('tape');
+
+test('stops parsing on the first non-option when stopEarly is set', function (t) {
+ var argv = parse(['--aaa', 'bbb', 'ccc', '--ddd'], {
+ stopEarly: true
+ });
+
+ t.deepEqual(argv, {
+ aaa: 'bbb',
+ _: ['ccc', '--ddd']
+ });
+
+ t.end();
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/unknown.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/unknown.js
new file mode 100644
index 000000000..462a36bdd
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/unknown.js
@@ -0,0 +1,102 @@
+var parse = require('../');
+var test = require('tape');
+
+test('boolean and alias is not unknown', function (t) {
+ var unknown = [];
+ function unknownFn(arg) {
+ unknown.push(arg);
+ return false;
+ }
+ var aliased = [ '-h', 'true', '--derp', 'true' ];
+ var regular = [ '--herp', 'true', '-d', 'true' ];
+ var opts = {
+ alias: { h: 'herp' },
+ boolean: 'h',
+ unknown: unknownFn
+ };
+ var aliasedArgv = parse(aliased, opts);
+ var propertyArgv = parse(regular, opts);
+
+ t.same(unknown, ['--derp', '-d']);
+ t.end();
+});
+
+test('flag boolean true any double hyphen argument is not unknown', function (t) {
+ var unknown = [];
+ function unknownFn(arg) {
+ unknown.push(arg);
+ return false;
+ }
+ var argv = parse(['--honk', '--tacos=good', 'cow', '-p', '55'], {
+ boolean: true,
+ unknown: unknownFn
+ });
+ t.same(unknown, ['--tacos=good', 'cow', '-p']);
+ t.same(argv, {
+ honk: true,
+ _: []
+ });
+ t.end();
+});
+
+test('string and alias is not unknown', function (t) {
+ var unknown = [];
+ function unknownFn(arg) {
+ unknown.push(arg);
+ return false;
+ }
+ var aliased = [ '-h', 'hello', '--derp', 'goodbye' ];
+ var regular = [ '--herp', 'hello', '-d', 'moon' ];
+ var opts = {
+ alias: { h: 'herp' },
+ string: 'h',
+ unknown: unknownFn
+ };
+ var aliasedArgv = parse(aliased, opts);
+ var propertyArgv = parse(regular, opts);
+
+ t.same(unknown, ['--derp', '-d']);
+ t.end();
+});
+
+test('default and alias is not unknown', function (t) {
+ var unknown = [];
+ function unknownFn(arg) {
+ unknown.push(arg);
+ return false;
+ }
+ var aliased = [ '-h', 'hello' ];
+ var regular = [ '--herp', 'hello' ];
+ var opts = {
+ default: { 'h': 'bar' },
+ alias: { 'h': 'herp' },
+ unknown: unknownFn
+ };
+ var aliasedArgv = parse(aliased, opts);
+ var propertyArgv = parse(regular, opts);
+
+ t.same(unknown, []);
+ t.end();
+ unknownFn(); // exercise fn for 100% coverage
+});
+
+test('value following -- is not unknown', function (t) {
+ var unknown = [];
+ function unknownFn(arg) {
+ unknown.push(arg);
+ return false;
+ }
+ var aliased = [ '--bad', '--', 'good', 'arg' ];
+ var opts = {
+ '--': true,
+ unknown: unknownFn
+ };
+ var argv = parse(aliased, opts);
+
+ t.same(unknown, ['--bad']);
+ t.same(argv, {
+ '--': ['good', 'arg'],
+ '_': []
+ })
+ t.end();
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/whitespace.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/whitespace.js
new file mode 100644
index 000000000..8a52a58ce
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/minimist/test/whitespace.js
@@ -0,0 +1,8 @@
+var parse = require('../');
+var test = require('tape');
+
+test('whitespace should be whitespace' , function (t) {
+ t.plan(1);
+ var x = parse([ '-x', '\t' ]).x;
+ t.equal(x, '\t');
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/strip-json-comments/cli.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/strip-json-comments/cli.js
new file mode 100755
index 000000000..aec5aa20e
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/strip-json-comments/cli.js
@@ -0,0 +1,41 @@
+#!/usr/bin/env node
+'use strict';
+var fs = require('fs');
+var strip = require('./strip-json-comments');
+var input = process.argv[2];
+
+
+function getStdin(cb) {
+ var ret = '';
+
+ process.stdin.setEncoding('utf8');
+
+ process.stdin.on('data', function (data) {
+ ret += data;
+ });
+
+ process.stdin.on('end', function () {
+ cb(ret);
+ });
+}
+
+if (process.argv.indexOf('-h') !== -1 || process.argv.indexOf('--help') !== -1) {
+ console.log('strip-json-comments input-file > output-file');
+ console.log('or');
+ console.log('strip-json-comments < input-file > output-file');
+ return;
+}
+
+if (process.argv.indexOf('-v') !== -1 || process.argv.indexOf('--version') !== -1) {
+ console.log(require('./package').version);
+ return;
+}
+
+if (input) {
+ process.stdout.write(strip(fs.readFileSync(input, 'utf8')));
+ return;
+}
+
+getStdin(function (data) {
+ process.stdout.write(strip(data));
+});
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/strip-json-comments/license b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/strip-json-comments/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/strip-json-comments/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/strip-json-comments/package.json b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/strip-json-comments/package.json
new file mode 100644
index 000000000..38aeb8b24
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/strip-json-comments/package.json
@@ -0,0 +1,124 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "strip-json-comments@~1.0.4",
+ "scope": null,
+ "escapedName": "strip-json-comments",
+ "name": "strip-json-comments",
+ "rawSpec": "~1.0.4",
+ "spec": ">=1.0.4 <1.1.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token/node_modules/rc"
+ ],
+ [
+ {
+ "raw": "strip-json-comments@~1.0.4",
+ "scope": null,
+ "escapedName": "strip-json-comments",
+ "name": "strip-json-comments",
+ "rawSpec": "~1.0.4",
+ "spec": ">=1.0.4 <1.1.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc"
+ ]
+ ],
+ "_from": "strip-json-comments@~1.0.4",
+ "_id": "strip-json-comments@1.0.4",
+ "_inCache": true,
+ "_location": "/update-notifier/latest-version/package-json/registry-url/rc/strip-json-comments",
+ "_nodeVersion": "0.12.5",
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.11.2",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "strip-json-comments@~1.0.4",
+ "scope": null,
+ "escapedName": "strip-json-comments",
+ "name": "strip-json-comments",
+ "rawSpec": "~1.0.4",
+ "spec": ">=1.0.4 <1.1.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/latest-version/package-json/registry-url/rc"
+ ],
+ "_resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz",
+ "_shasum": "1e15fbcac97d3ee99bf2d73b4c656b082bbafb91",
+ "_shrinkwrap": null,
+ "_spec": "strip-json-comments@~1.0.4",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bin": {
+ "strip-json-comments": "cli.js"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/strip-json-comments/issues"
+ },
+ "dependencies": {},
+ "description": "Strip comments from JSON. Lets you use comments in your JSON files!",
+ "devDependencies": {
+ "mocha": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "1e15fbcac97d3ee99bf2d73b4c656b082bbafb91",
+ "tarball": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ },
+ "files": [
+ "cli.js",
+ "strip-json-comments.js"
+ ],
+ "gitHead": "f58348696368583cc5bb18525fe31eacc9bd00e1",
+ "homepage": "https://github.com/sindresorhus/strip-json-comments",
+ "keywords": [
+ "json",
+ "strip",
+ "remove",
+ "delete",
+ "trim",
+ "comments",
+ "multiline",
+ "parse",
+ "config",
+ "configuration",
+ "conf",
+ "settings",
+ "util",
+ "env",
+ "environment",
+ "cli",
+ "bin"
+ ],
+ "license": "MIT",
+ "main": "strip-json-comments",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "strip-json-comments",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/strip-json-comments.git"
+ },
+ "scripts": {
+ "test": "mocha --ui tdd"
+ },
+ "version": "1.0.4"
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/strip-json-comments/readme.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/strip-json-comments/readme.md
new file mode 100644
index 000000000..63ce165b2
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/strip-json-comments/readme.md
@@ -0,0 +1,80 @@
+# strip-json-comments [![Build Status](https://travis-ci.org/sindresorhus/strip-json-comments.svg?branch=master)](https://travis-ci.org/sindresorhus/strip-json-comments)
+
+> Strip comments from JSON. Lets you use comments in your JSON files!
+
+This is now possible:
+
+```js
+{
+ // rainbows
+ "unicorn": /* ❤ */ "cake"
+}
+```
+
+It will remove single-line comments `//` and multi-line comments `/**/`.
+
+Also available as a [gulp](https://github.com/sindresorhus/gulp-strip-json-comments)/[grunt](https://github.com/sindresorhus/grunt-strip-json-comments)/[broccoli](https://github.com/sindresorhus/broccoli-strip-json-comments) plugin.
+
+-
+
+*There's also [`json-comments`](https://npmjs.org/package/json-comments), but it's only for Node.js, inefficient, bloated as it also minifies, and comes with a `require` hook, which is :(*
+
+
+## Install
+
+```sh
+$ npm install --save strip-json-comments
+```
+
+```sh
+$ bower install --save strip-json-comments
+```
+
+```sh
+$ component install sindresorhus/strip-json-comments
+```
+
+
+## Usage
+
+```js
+var json = '{/*rainbows*/"unicorn":"cake"}';
+JSON.parse(stripJsonComments(json));
+//=> {unicorn: 'cake'}
+```
+
+
+## API
+
+### stripJsonComments(input)
+
+#### input
+
+Type: `string`
+
+Accepts a string with JSON and returns a string without comments.
+
+
+## CLI
+
+```sh
+$ npm install --global strip-json-comments
+```
+
+```sh
+$ strip-json-comments --help
+
+strip-json-comments input-file > output-file
+# or
+strip-json-comments < input-file > output-file
+```
+
+
+## Related
+
+- [`strip-css-comments`](https://github.com/sindresorhus/strip-css-comments)
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/strip-json-comments/strip-json-comments.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/strip-json-comments/strip-json-comments.js
new file mode 100644
index 000000000..eb77ce745
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/node_modules/strip-json-comments/strip-json-comments.js
@@ -0,0 +1,73 @@
+/*!
+ strip-json-comments
+ Strip comments from JSON. Lets you use comments in your JSON files!
+ https://github.com/sindresorhus/strip-json-comments
+ by Sindre Sorhus
+ MIT License
+*/
+(function () {
+ 'use strict';
+
+ var singleComment = 1;
+ var multiComment = 2;
+
+ function stripJsonComments(str) {
+ var currentChar;
+ var nextChar;
+ var insideString = false;
+ var insideComment = false;
+ var ret = '';
+
+ for (var i = 0; i < str.length; i++) {
+ currentChar = str[i];
+ nextChar = str[i + 1];
+
+ if (!insideComment && currentChar === '"') {
+ var escaped = str[i - 1] === '\\' && str[i - 2] !== '\\';
+ if (!insideComment && !escaped && currentChar === '"') {
+ insideString = !insideString;
+ }
+ }
+
+ if (insideString) {
+ ret += currentChar;
+ continue;
+ }
+
+ if (!insideComment && currentChar + nextChar === '//') {
+ insideComment = singleComment;
+ i++;
+ } else if (insideComment === singleComment && currentChar + nextChar === '\r\n') {
+ insideComment = false;
+ i++;
+ ret += currentChar;
+ ret += nextChar;
+ continue;
+ } else if (insideComment === singleComment && currentChar === '\n') {
+ insideComment = false;
+ } else if (!insideComment && currentChar + nextChar === '/*') {
+ insideComment = multiComment;
+ i++;
+ continue;
+ } else if (insideComment === multiComment && currentChar + nextChar === '*/') {
+ insideComment = false;
+ i++;
+ continue;
+ }
+
+ if (insideComment) {
+ continue;
+ }
+
+ ret += currentChar;
+ }
+
+ return ret;
+ }
+
+ if (typeof module !== 'undefined' && module.exports) {
+ module.exports = stripJsonComments;
+ } else {
+ window.stripJsonComments = stripJsonComments;
+ }
+})();
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/package.json b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/package.json
new file mode 100644
index 000000000..7bab9edeb
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/package.json
@@ -0,0 +1,108 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "rc@^1.1.6",
+ "scope": null,
+ "escapedName": "rc",
+ "name": "rc",
+ "rawSpec": "^1.1.6",
+ "spec": ">=1.1.6 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-auth-token"
+ ],
+ [
+ {
+ "raw": "rc@^1.0.1",
+ "scope": null,
+ "escapedName": "rc",
+ "name": "rc",
+ "rawSpec": "^1.0.1",
+ "spec": ">=1.0.1 <2.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url"
+ ]
+ ],
+ "_from": "rc@^1.0.1",
+ "_id": "rc@1.1.6",
+ "_inCache": true,
+ "_location": "/update-notifier/latest-version/package-json/registry-url/rc",
+ "_nodeVersion": "4.2.3",
+ "_npmUser": {
+ "name": "dominictarr",
+ "email": "dominic.tarr@gmail.com"
+ },
+ "_npmVersion": "3.5.1",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "rc@^1.0.1",
+ "scope": null,
+ "escapedName": "rc",
+ "name": "rc",
+ "rawSpec": "^1.0.1",
+ "spec": ">=1.0.1 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/latest-version/package-json/registry-url"
+ ],
+ "_resolved": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz",
+ "_shasum": "43651b76b6ae53b5c802f1151fa3fc3b059969c9",
+ "_shrinkwrap": null,
+ "_spec": "rc@^1.0.1",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url",
+ "author": {
+ "name": "Dominic Tarr",
+ "email": "dominic.tarr@gmail.com",
+ "url": "dominictarr.com"
+ },
+ "bin": {
+ "rc": "./index.js"
+ },
+ "browserify": "browser.js",
+ "bugs": {
+ "url": "https://github.com/dominictarr/rc/issues"
+ },
+ "dependencies": {
+ "deep-extend": "~0.4.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~1.0.4"
+ },
+ "description": "hardwired configuration loader",
+ "devDependencies": {},
+ "directories": {},
+ "dist": {
+ "shasum": "43651b76b6ae53b5c802f1151fa3fc3b059969c9",
+ "tarball": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz"
+ },
+ "gitHead": "132062de0e61881a025cc4784d9a2798409c2bf1",
+ "homepage": "https://github.com/dominictarr/rc#readme",
+ "keywords": [
+ "config",
+ "rc",
+ "unix",
+ "defaults"
+ ],
+ "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
+ "main": "index.js",
+ "maintainers": [
+ {
+ "name": "dominictarr",
+ "email": "dominic.tarr@gmail.com"
+ }
+ ],
+ "name": "rc",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/dominictarr/rc.git"
+ },
+ "scripts": {
+ "test": "set -e; node test/test.js; node test/ini.js; node test/nested-env-vars.js"
+ },
+ "version": "1.1.6"
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/test/ini.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/test/ini.js
new file mode 100644
index 000000000..cdb199006
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/test/ini.js
@@ -0,0 +1,15 @@
+var cc =require('../lib/utils')
+var INI = require('ini')
+var assert = require('assert')
+
+function test(obj) {
+
+ var _json, _ini
+ var json = cc.parse (_json = JSON.stringify(obj))
+ var ini = cc.parse (_ini = INI.stringify(obj))
+ console.log(_ini, _json)
+ assert.deepEqual(json, ini)
+}
+
+
+test({hello: true})
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/test/nested-env-vars.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/test/nested-env-vars.js
new file mode 100644
index 000000000..47be98982
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/test/nested-env-vars.js
@@ -0,0 +1,38 @@
+
+var n = 'rc'+Math.random()
+var assert = require('assert')
+
+
+// Basic usage
+process.env[n+'_someOpt__a'] = 42
+process.env[n+'_someOpt__x__'] = 99
+process.env[n+'_someOpt__a__b'] = 186
+process.env[n+'_someOpt__a__b__c'] = 243
+process.env[n+'_someOpt__x__y'] = 1862
+process.env[n+'_someOpt__z'] = 186577
+
+// Should ignore empty strings from orphaned '__'
+process.env[n+'_someOpt__z__x__'] = 18629
+process.env[n+'_someOpt__w__w__'] = 18629
+
+// Leading '__' should ignore everything up to 'z'
+process.env[n+'___z__i__'] = 9999
+
+var config = require('../')(n, {
+ option: true
+})
+
+console.log('\n\n------ nested-env-vars ------\n',config)
+
+assert.equal(config.option, true)
+assert.equal(config.someOpt.a, 42)
+assert.equal(config.someOpt.x, 99)
+// Should not override `a` once it's been set
+assert.equal(config.someOpt.a/*.b*/, 42)
+// Should not override `x` once it's been set
+assert.equal(config.someOpt.x/*.y*/, 99)
+assert.equal(config.someOpt.z, 186577)
+// Should not override `z` once it's been set
+assert.equal(config.someOpt.z/*.x*/, 186577)
+assert.equal(config.someOpt.w.w, 18629)
+assert.equal(config.z.i, 9999)
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/test/test.js b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/test/test.js
new file mode 100644
index 000000000..4f6335189
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/node_modules/rc/test/test.js
@@ -0,0 +1,59 @@
+
+var n = 'rc'+Math.random()
+var assert = require('assert')
+
+process.env[n+'_envOption'] = 42
+
+var config = require('../')(n, {
+ option: true
+})
+
+console.log(config)
+
+assert.equal(config.option, true)
+assert.equal(config.envOption, 42)
+
+var customArgv = require('../')(n, {
+ option: true
+}, { // nopt-like argv
+ option: false,
+ envOption: 24,
+ argv: {
+ remain: [],
+ cooked: ['--no-option', '--envOption', '24'],
+ original: ['--no-option', '--envOption=24']
+ }
+})
+
+console.log(customArgv)
+
+assert.equal(customArgv.option, false)
+assert.equal(customArgv.envOption, 24)
+
+var fs = require('fs')
+var path = require('path')
+var jsonrc = path.resolve('.' + n + 'rc');
+
+fs.writeFileSync(jsonrc, [
+ '{',
+ '// json overrides default',
+ '"option": false,',
+ '/* env overrides json */',
+ '"envOption": 24',
+ '}'
+].join('\n'));
+
+var commentedJSON = require('../')(n, {
+ option: true
+})
+
+fs.unlinkSync(jsonrc);
+
+console.log(commentedJSON)
+
+assert.equal(commentedJSON.option, false)
+assert.equal(commentedJSON.envOption, 42)
+
+assert.equal(commentedJSON.config, jsonrc)
+assert.equal(commentedJSON.configs.length, 1)
+assert.equal(commentedJSON.configs[0], jsonrc)
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/package.json b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/package.json
new file mode 100644
index 000000000..67e3f2931
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/package.json
@@ -0,0 +1,109 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "registry-url@^3.0.3",
+ "scope": null,
+ "escapedName": "registry-url",
+ "name": "registry-url",
+ "rawSpec": "^3.0.3",
+ "spec": ">=3.0.3 <4.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json"
+ ]
+ ],
+ "_from": "registry-url@>=3.0.3 <4.0.0",
+ "_id": "registry-url@3.1.0",
+ "_inCache": true,
+ "_location": "/update-notifier/latest-version/package-json/registry-url",
+ "_nodeVersion": "4.3.0",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/registry-url-3.1.0.tgz_1459781197285_0.25229517510160804"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.14.12",
+ "_phantomChildren": {
+ "ini": "1.3.4"
+ },
+ "_requested": {
+ "raw": "registry-url@^3.0.3",
+ "scope": null,
+ "escapedName": "registry-url",
+ "name": "registry-url",
+ "rawSpec": "^3.0.3",
+ "spec": ">=3.0.3 <4.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/latest-version/package-json"
+ ],
+ "_resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
+ "_shasum": "3d4ef870f73dde1d77f0cf9a381432444e174942",
+ "_shrinkwrap": null,
+ "_spec": "registry-url@^3.0.3",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/registry-url/issues"
+ },
+ "dependencies": {
+ "rc": "^1.0.1"
+ },
+ "description": "Get the set npm registry URL",
+ "devDependencies": {
+ "ava": "*",
+ "pify": "^2.3.0",
+ "require-uncached": "^1.0.2",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "3d4ef870f73dde1d77f0cf9a381432444e174942",
+ "tarball": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "79d07a452fe0c990fa0b154d510c68fc483b4689",
+ "homepage": "https://github.com/sindresorhus/registry-url",
+ "keywords": [
+ "npm",
+ "conf",
+ "config",
+ "npmconf",
+ "registry",
+ "url",
+ "uri",
+ "scope"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "registry-url",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/registry-url.git"
+ },
+ "scripts": {
+ "test": "xo && ava --serial"
+ },
+ "version": "3.1.0"
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/readme.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/readme.md
new file mode 100644
index 000000000..6fc55bc5f
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/node_modules/registry-url/readme.md
@@ -0,0 +1,50 @@
+# registry-url [![Build Status](https://travis-ci.org/sindresorhus/registry-url.svg?branch=master)](https://travis-ci.org/sindresorhus/registry-url)
+
+> Get the set npm registry URL
+
+It's usually `https://registry.npmjs.org/`, but [configurable](https://www.npmjs.org/doc/misc/npm-config.html#registry).
+
+Use this if you do anything with the npm registry as users will expect it to use their configured registry.
+
+
+## Install
+
+```
+$ npm install --save registry-url
+```
+
+
+## Usage
+
+```ini
+# .npmrc
+registry = 'https://custom-registry.com/'
+```
+
+```js
+const registryUrl = require('registry-url');
+
+console.log(registryUrl());
+//=> 'https://custom-registry.com/'
+```
+
+It can also retrieve the registry URL associated with an [npm scope](https://docs.npmjs.com/misc/scope).
+
+```ini
+# .npmrc
+@myco:registry = 'https://custom-registry.com/'
+```
+
+```js
+const registryUrl = require('registry-url');
+
+console.log(registryUrl('@myco'));
+//=> 'https://custom-registry.com/'
+```
+
+If the provided scope is not in the user's `.npmrc` file, then `registry-url` will check for the existence of `registry`, or if that's not set, fallback to the default npm registry.
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/package.json b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/package.json
new file mode 100644
index 000000000..9896a2206
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/package.json
@@ -0,0 +1,116 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "package-json@^3.0.0",
+ "scope": null,
+ "escapedName": "package-json",
+ "name": "package-json",
+ "rawSpec": "^3.0.0",
+ "spec": ">=3.0.0 <4.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version"
+ ]
+ ],
+ "_from": "package-json@>=3.0.0 <4.0.0",
+ "_id": "package-json@3.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/latest-version/package-json",
+ "_nodeVersion": "4.6.2",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/package-json-3.0.0.tgz_1486978854880_0.7248586353380233"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.15.11",
+ "_phantomChildren": {
+ "ini": "1.3.4"
+ },
+ "_requested": {
+ "raw": "package-json@^3.0.0",
+ "scope": null,
+ "escapedName": "package-json",
+ "name": "package-json",
+ "rawSpec": "^3.0.0",
+ "spec": ">=3.0.0 <4.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier/latest-version"
+ ],
+ "_resolved": "https://registry.npmjs.org/package-json/-/package-json-3.0.0.tgz",
+ "_shasum": "dc11f79ebdb436e55fe2b9b294ee3f2a87a33b13",
+ "_shrinkwrap": null,
+ "_spec": "package-json@^3.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier/node_modules/latest-version",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/package-json/issues"
+ },
+ "dependencies": {
+ "got": "^6.7.1",
+ "registry-auth-token": "^3.0.1",
+ "registry-url": "^3.0.3",
+ "semver": "^5.1.0"
+ },
+ "description": "Get the package.json of a package from the npm registry",
+ "devDependencies": {
+ "ava": "*",
+ "mock-private-registry": "^1.1.0",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "dc11f79ebdb436e55fe2b9b294ee3f2a87a33b13",
+ "tarball": "https://registry.npmjs.org/package-json/-/package-json-3.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "1436eb4b8b191f5099a1c453c104e71445bc37fa",
+ "homepage": "https://github.com/sindresorhus/package-json#readme",
+ "keywords": [
+ "npm",
+ "registry",
+ "package",
+ "pkg",
+ "package.json",
+ "json",
+ "module",
+ "scope",
+ "scoped"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "rexxars",
+ "email": "rexxars@gmail.com"
+ },
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "package-json",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/package-json.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "3.0.0"
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/readme.md b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/readme.md
new file mode 100644
index 000000000..72527f7cf
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/node_modules/package-json/readme.md
@@ -0,0 +1,62 @@
+# package-json [![Build Status](https://travis-ci.org/sindresorhus/package-json.svg?branch=master)](https://travis-ci.org/sindresorhus/package-json)
+
+> Get the package.json of a package from the npm registry
+
+
+## Install
+
+```
+$ npm install --save package-json
+```
+
+
+## Usage
+
+```js
+const packageJson = require('package-json');
+
+packageJson('pageres', 'latest').then(json => {
+ console.log(json);
+ //=> {name: 'pageres', ...}
+});
+
+// Also works with scoped packages
+packageJson('@company/package', 'latest').then(json => {
+ console.log(json);
+ //=> {name: 'package', ...}
+});
+```
+
+
+## API
+
+### packageJson(name, [version])
+
+You can optionally specify a version (e.g. `1.0.0`) or `latest`. If you don't specify a version you'll get the [main entry](http://registry.npmjs.org/pageres/) containing all versions.
+
+The version can also be in any format supported by the [semver](https://www.npmjs.com/package/semver) module. For example:
+
+- `1` - get the latest `1.x.x`
+- `1.2` - get the latest `1.2.x`
+- `^1.2.3` - get the latest `1.x.x` but at least `1.2.3`
+- `~1.2.3` - get the latest `1.2.x` but at least `1.2.3`
+
+
+## Authentication
+
+Both public and private registries are supported, for both scoped and unscoped packages, as long as the registry uses either bearer tokens or basic authentication.
+
+
+## Related
+
+- [package-json-cli](https://github.com/sindresorhus/package-json-cli) - CLI for this module
+- [latest-version](https://github.com/sindresorhus/latest-version) - Get the latest version of an npm package
+- [pkg-versions](https://github.com/sindresorhus/pkg-versions) - Get the version numbers of a package from the npm registry
+- [npm-keyword](https://github.com/sindresorhus/npm-keyword) - Get a list of npm packages with a certain keyword
+- [npm-user](https://github.com/sindresorhus/npm-user) - Get user info of an npm user
+- [npm-email](https://github.com/sindresorhus/npm-email) - Get the email of an npm user
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/latest-version/package.json b/node_modules/update-notifier/node_modules/latest-version/package.json
new file mode 100644
index 000000000..01227593b
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/package.json
@@ -0,0 +1,109 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "latest-version@^3.0.0",
+ "scope": null,
+ "escapedName": "latest-version",
+ "name": "latest-version",
+ "rawSpec": "^3.0.0",
+ "spec": ">=3.0.0 <4.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier"
+ ]
+ ],
+ "_from": "latest-version@>=3.0.0 <4.0.0",
+ "_id": "latest-version@3.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/latest-version",
+ "_nodeVersion": "4.6.2",
+ "_npmOperationalInternal": {
+ "host": "packages-18-east.internal.npmjs.com",
+ "tmp": "tmp/latest-version-3.0.0.tgz_1486989736223_0.4567320039495826"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.15.11",
+ "_phantomChildren": {
+ "ini": "1.3.4",
+ "semver": "5.3.0"
+ },
+ "_requested": {
+ "raw": "latest-version@^3.0.0",
+ "scope": null,
+ "escapedName": "latest-version",
+ "name": "latest-version",
+ "rawSpec": "^3.0.0",
+ "spec": ">=3.0.0 <4.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier"
+ ],
+ "_resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.0.0.tgz",
+ "_shasum": "3104f008c0c391084107f85a344bc61e38970649",
+ "_shrinkwrap": null,
+ "_spec": "latest-version@^3.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/latest-version/issues"
+ },
+ "dependencies": {
+ "package-json": "^3.0.0"
+ },
+ "description": "Get the latest version of an npm package",
+ "devDependencies": {
+ "ava": "*",
+ "semver-regex": "^1.0.0",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "3104f008c0c391084107f85a344bc61e38970649",
+ "tarball": "https://registry.npmjs.org/latest-version/-/latest-version-3.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "6858116bcf3b17c19a9d1b81bc88b6765289ce75",
+ "homepage": "https://github.com/sindresorhus/latest-version#readme",
+ "keywords": [
+ "latest",
+ "version",
+ "npm",
+ "pkg",
+ "package",
+ "package.json",
+ "current",
+ "module"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "latest-version",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/latest-version.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "3.0.0"
+}
diff --git a/node_modules/update-notifier/node_modules/latest-version/readme.md b/node_modules/update-notifier/node_modules/latest-version/readme.md
new file mode 100644
index 000000000..3fcffdd0d
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/latest-version/readme.md
@@ -0,0 +1,40 @@
+# latest-version [![Build Status](https://travis-ci.org/sindresorhus/latest-version.svg?branch=master)](https://travis-ci.org/sindresorhus/latest-version)
+
+> Get the latest version of an npm package
+
+Fetches the version directly from the registry instead of depending on the massive [npm](https://github.com/npm/npm/blob/8b5e7b6ae5b4cd2d7d62eaf93b1428638b387072/package.json#L37-L85) module like the [latest](https://github.com/bahamas10/node-latest) module does.
+
+
+## Install
+
+```
+$ npm install --save latest-version
+```
+
+
+## Usage
+
+```js
+const latestVersion = require('latest-version');
+
+latestVersion('ava').then(version => {
+ console.log(version);
+ //=> '0.18.0'
+});
+
+latestVersion('@sindresorhus/df').then(version => {
+ console.log(version);
+ //=> '1.0.1'
+});
+```
+
+
+## Related
+
+- [latest-version-cli](https://github.com/sindresorhus/latest-version-cli) - CLI for this module
+- [package-json](https://github.com/sindresorhus/package-json) - Get the package.json of a package from the npm registry
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/lazy-req/index.js b/node_modules/update-notifier/node_modules/lazy-req/index.js
new file mode 100644
index 000000000..307f08f39
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/lazy-req/index.js
@@ -0,0 +1,53 @@
+'use strict';
+const lazy = (mod, fn, id) => mod === undefined ? fn(id) : mod;
+
+module.exports = fn => {
+ return id => {
+ let mod;
+
+ return function () {
+ if (arguments.length === 0) {
+ mod = lazy(mod, fn, id);
+ return mod;
+ }
+
+ const ret = {};
+
+ [].forEach.call(arguments, prop => {
+ Object.defineProperty(ret, prop, {
+ get: () => {
+ mod = lazy(mod, fn, id);
+ if (typeof mod[prop] === 'function') {
+ return function () {
+ return mod[prop].apply(mod, arguments);
+ };
+ }
+
+ return mod[prop];
+ }
+ });
+ });
+
+ return ret;
+ };
+ };
+};
+
+module.exports.proxy = fn => {
+ return id => {
+ let mod;
+
+ const handler = {
+ get: (target, property) => {
+ mod = lazy(mod, fn, id);
+ return Reflect.get(mod, property);
+ },
+ apply: (target, thisArg, argumentsList) => {
+ mod = lazy(mod, fn, id);
+ return Reflect.apply(mod, thisArg, argumentsList);
+ }
+ };
+
+ return new Proxy(() => {}, handler);
+ };
+};
diff --git a/node_modules/update-notifier/node_modules/lazy-req/license b/node_modules/update-notifier/node_modules/lazy-req/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/lazy-req/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/lazy-req/package.json b/node_modules/update-notifier/node_modules/lazy-req/package.json
new file mode 100644
index 000000000..a3a7f6915
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/lazy-req/package.json
@@ -0,0 +1,111 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "lazy-req@^2.0.0",
+ "scope": null,
+ "escapedName": "lazy-req",
+ "name": "lazy-req",
+ "rawSpec": "^2.0.0",
+ "spec": ">=2.0.0 <3.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier"
+ ]
+ ],
+ "_from": "lazy-req@>=2.0.0 <3.0.0",
+ "_id": "lazy-req@2.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/lazy-req",
+ "_nodeVersion": "4.6.2",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/lazy-req-2.0.0.tgz_1484646276710_0.28619852592237294"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.15.11",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "lazy-req@^2.0.0",
+ "scope": null,
+ "escapedName": "lazy-req",
+ "name": "lazy-req",
+ "rawSpec": "^2.0.0",
+ "spec": ">=2.0.0 <3.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier"
+ ],
+ "_resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-2.0.0.tgz",
+ "_shasum": "c9450a363ecdda2e6f0c70132ad4f37f8f06f2b4",
+ "_shrinkwrap": null,
+ "_spec": "lazy-req@^2.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/lazy-req/issues"
+ },
+ "contributors": [
+ {
+ "name": "Jorge Bucaran",
+ "email": "jbucaran@me.com"
+ }
+ ],
+ "dependencies": {},
+ "description": "Require modules lazily",
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "c9450a363ecdda2e6f0c70132ad4f37f8f06f2b4",
+ "tarball": "https://registry.npmjs.org/lazy-req/-/lazy-req-2.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "498395dd746a0ecfd6aeb785ecb93c593d5a680f",
+ "homepage": "https://github.com/sindresorhus/lazy-req#readme",
+ "keywords": [
+ "require",
+ "load",
+ "module",
+ "modules",
+ "lazy",
+ "lazily",
+ "defer",
+ "deferred",
+ "proxy",
+ "proxies"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "lazy-req",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/lazy-req.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "2.0.0"
+}
diff --git a/node_modules/update-notifier/node_modules/lazy-req/readme.md b/node_modules/update-notifier/node_modules/lazy-req/readme.md
new file mode 100644
index 000000000..99599bc25
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/lazy-req/readme.md
@@ -0,0 +1,64 @@
+# lazy-req [![Build Status](https://travis-ci.org/sindresorhus/lazy-req.svg?branch=master)](https://travis-ci.org/sindresorhus/lazy-req)
+
+> Require modules lazily
+
+
+## Install
+
+```
+$ npm install --save lazy-req
+```
+
+
+## Usage
+
+```js
+// pass in `require` or a custom require function
+const lazyReq = require('lazy-req')(require);
+const _ = lazyReq('lodash');
+
+// Where you would normally do
+_.isNumber(2);
+
+// You now instead call it as a function
+_().isNumber(2);
+
+// It's cached on consecutive calls
+_().isString('unicorn');
+
+// Extract lazy variations of the props you need
+const members = lazyReq('lodash')('isNumber', 'isString');
+
+// Useful when using destructuring assignment in ES2015
+const {isNumber, isString} = lazyReq('lodash')('isNumber', 'isString');
+
+// Works out of the box for functions and regular properties
+const stuff = lazyReq('./math-lib')('sum', 'PHI');
+console.log(stuff.sum(1, 2)); // => 3
+console.log(stuff.PHI); // => 1.618033
+```
+
+### Proxy support in Node.js 6 or later
+
+If you use Node.js 6 or later, you can take advantage of ES2015 proxies and don't need to call it as a function.
+
+```js
+const lazyReq = require('lazy-req').proxy(require);
+const _ = lazyReq('lodash');
+
+// No need to call it as a function but still lazily required
+_.isNumber(2);
+```
+
+## Related
+
+- [resolve-from](https://github.com/sindresorhus/resolve-from) - Resolve the path of a module from a given path
+- [req-from](https://github.com/sindresorhus/req-from) - Require a module from a given path
+- [resolve-pkg](https://github.com/sindresorhus/resolve-pkg) - Resolve the path of a package regardless of it having an entry point
+- [lazy-value](https://github.com/sindresorhus/lazy-value) - Create a lazily evaluated value
+- [define-lazy-prop](https://github.com/sindresorhus/define-lazy-prop) - Define a lazily evaluated property on an object
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/semver-diff/index.js b/node_modules/update-notifier/node_modules/semver-diff/index.js
new file mode 100644
index 000000000..92c9c9700
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/semver-diff/index.js
@@ -0,0 +1,27 @@
+'use strict';
+var semver = require('semver');
+
+module.exports = function (a, b) {
+ if (semver.gt(a, b)) {
+ return null;
+ }
+
+ a = semver.parse(a);
+ b = semver.parse(b);
+
+ for (var key in a) {
+ if (key === 'major' || key === 'minor' || key === 'patch') {
+ if (a[key] !== b[key]) {
+ return key;
+ }
+ }
+
+ if (key === 'prerelease' || key === 'build') {
+ if (JSON.stringify(a[key]) !== JSON.stringify(b[key])) {
+ return key;
+ }
+ }
+ }
+
+ return null;
+};
diff --git a/node_modules/update-notifier/node_modules/semver-diff/license b/node_modules/update-notifier/node_modules/semver-diff/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/semver-diff/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/semver-diff/package.json b/node_modules/update-notifier/node_modules/semver-diff/package.json
new file mode 100644
index 000000000..584e79aaf
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/semver-diff/package.json
@@ -0,0 +1,97 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "semver-diff@^2.0.0",
+ "scope": null,
+ "escapedName": "semver-diff",
+ "name": "semver-diff",
+ "rawSpec": "^2.0.0",
+ "spec": ">=2.0.0 <3.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier"
+ ]
+ ],
+ "_from": "semver-diff@>=2.0.0 <3.0.0",
+ "_id": "semver-diff@2.1.0",
+ "_inCache": true,
+ "_location": "/update-notifier/semver-diff",
+ "_nodeVersion": "4.2.1",
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.14.7",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "semver-diff@^2.0.0",
+ "scope": null,
+ "escapedName": "semver-diff",
+ "name": "semver-diff",
+ "rawSpec": "^2.0.0",
+ "spec": ">=2.0.0 <3.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier"
+ ],
+ "_resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz",
+ "_shasum": "4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36",
+ "_shrinkwrap": null,
+ "_spec": "semver-diff@^2.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "http://sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/semver-diff/issues"
+ },
+ "dependencies": {
+ "semver": "^5.0.3"
+ },
+ "description": "Get the diff type of two semver versions: 0.0.1 0.0.2 → patch",
+ "devDependencies": {
+ "mocha": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36",
+ "tarball": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "58205f4b171e86b07942a30fb4502bc0ca60a071",
+ "homepage": "https://github.com/sindresorhus/semver-diff",
+ "keywords": [
+ "semver",
+ "version",
+ "semantic",
+ "diff",
+ "difference"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "semver-diff",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/semver-diff.git"
+ },
+ "scripts": {
+ "test": "mocha"
+ },
+ "version": "2.1.0"
+}
diff --git a/node_modules/update-notifier/node_modules/semver-diff/readme.md b/node_modules/update-notifier/node_modules/semver-diff/readme.md
new file mode 100644
index 000000000..06a172f16
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/semver-diff/readme.md
@@ -0,0 +1,52 @@
+# semver-diff [![Build Status](https://travis-ci.org/sindresorhus/semver-diff.svg?branch=master)](https://travis-ci.org/sindresorhus/semver-diff)
+
+> Get the diff type of two [semver](https://github.com/isaacs/node-semver) versions: `0.0.1 0.0.2` → `patch`
+
+
+## Install
+
+```sh
+$ npm install --save semver-diff
+```
+
+
+## Usage
+
+```js
+var semverDiff = require('semver-diff');
+
+semverDiff('1.1.1', '1.1.2');
+//=> 'patch'
+
+semverDiff('0.0.1', '1.0.0');
+//=> 'major'
+
+semverDiff('0.0.1', '0.1.0');
+//=> 'minor'
+
+semverDiff('0.0.1-foo', '0.0.1-foo.bar');
+//=> 'prerelease'
+
+semverDiff('0.1.0', '0.1.0+foo');
+//=> 'build'
+
+semverDiff('0.0.1', '0.0.1');
+//=> null
+
+semverDiff('0.0.2', '0.0.1');
+//=> null
+```
+
+
+## API
+
+### semverDiff(versionA, versionB)
+
+Returns the difference type between two semver versions, or `null` if they're identical or the second one is lower than the first.
+
+Possible values: `'major'`, `'minor'`, `'patch'`, `'prerelease'`, `'build'`, `null`.
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/update-notifier/node_modules/xdg-basedir/index.js b/node_modules/update-notifier/node_modules/xdg-basedir/index.js
new file mode 100644
index 000000000..f5aa17695
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/xdg-basedir/index.js
@@ -0,0 +1,28 @@
+'use strict';
+const os = require('os');
+const path = require('path');
+
+const home = os.homedir();
+const env = process.env;
+
+exports.data = env.XDG_DATA_HOME ||
+ (home ? path.join(home, '.local', 'share') : null);
+
+exports.config = env.XDG_CONFIG_HOME ||
+ (home ? path.join(home, '.config') : null);
+
+exports.cache = env.XDG_CACHE_HOME || (home ? path.join(home, '.cache') : null);
+
+exports.runtime = env.XDG_RUNTIME_DIR || null;
+
+exports.dataDirs = (env.XDG_DATA_DIRS || '/usr/local/share/:/usr/share/').split(':');
+
+if (exports.data) {
+ exports.dataDirs.unshift(exports.data);
+}
+
+exports.configDirs = (env.XDG_CONFIG_DIRS || '/etc/xdg').split(':');
+
+if (exports.config) {
+ exports.configDirs.unshift(exports.config);
+}
diff --git a/node_modules/update-notifier/node_modules/xdg-basedir/license b/node_modules/update-notifier/node_modules/xdg-basedir/license
new file mode 100644
index 000000000..654d0bfe9
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/xdg-basedir/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/update-notifier/node_modules/xdg-basedir/package.json b/node_modules/update-notifier/node_modules/xdg-basedir/package.json
new file mode 100644
index 000000000..6d5f73361
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/xdg-basedir/package.json
@@ -0,0 +1,109 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "xdg-basedir@^3.0.0",
+ "scope": null,
+ "escapedName": "xdg-basedir",
+ "name": "xdg-basedir",
+ "rawSpec": "^3.0.0",
+ "spec": ">=3.0.0 <4.0.0",
+ "type": "range"
+ },
+ "/Users/ceej/code/Tools/npm/node_modules/update-notifier"
+ ]
+ ],
+ "_from": "xdg-basedir@>=3.0.0 <4.0.0",
+ "_id": "xdg-basedir@3.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier/xdg-basedir",
+ "_nodeVersion": "4.6.2",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/xdg-basedir-3.0.0.tgz_1486978344594_0.5195651547983289"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.15.11",
+ "_phantomChildren": {},
+ "_requested": {
+ "raw": "xdg-basedir@^3.0.0",
+ "scope": null,
+ "escapedName": "xdg-basedir",
+ "name": "xdg-basedir",
+ "rawSpec": "^3.0.0",
+ "spec": ">=3.0.0 <4.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/update-notifier",
+ "/update-notifier/configstore"
+ ],
+ "_resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
+ "_shasum": "496b2cc109eca8dbacfe2dc72b603c17c5870ad4",
+ "_shrinkwrap": null,
+ "_spec": "xdg-basedir@^3.0.0",
+ "_where": "/Users/ceej/code/Tools/npm/node_modules/update-notifier",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/xdg-basedir/issues"
+ },
+ "dependencies": {},
+ "description": "Get XDG Base Directory paths",
+ "devDependencies": {
+ "ava": "*",
+ "require-uncached": "^1.0.2",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "496b2cc109eca8dbacfe2dc72b603c17c5870ad4",
+ "tarball": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "d441833e9dad9694b04495905ab8fe484e3b8b99",
+ "homepage": "https://github.com/sindresorhus/xdg-basedir#readme",
+ "keywords": [
+ "xdg",
+ "base",
+ "directory",
+ "dir",
+ "basedir",
+ "path",
+ "data",
+ "config",
+ "cache",
+ "linux",
+ "unix",
+ "spec"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "xdg-basedir",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/xdg-basedir.git"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "version": "3.0.0"
+}
diff --git a/node_modules/update-notifier/node_modules/xdg-basedir/readme.md b/node_modules/update-notifier/node_modules/xdg-basedir/readme.md
new file mode 100644
index 000000000..61f8c16be
--- /dev/null
+++ b/node_modules/update-notifier/node_modules/xdg-basedir/readme.md
@@ -0,0 +1,60 @@
+# xdg-basedir [![Build Status](https://travis-ci.org/sindresorhus/xdg-basedir.svg?branch=master)](https://travis-ci.org/sindresorhus/xdg-basedir)
+
+> Get [XDG Base Directory](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html) paths
+
+
+## Install
+
+```
+$ npm install --save xdg-basedir
+```
+
+
+## Usage
+
+```js
+const xdgBasedir = require('xdg-basedir');
+
+xdgBasedir.data;
+//=> '/home/sindresorhus/.local/share'
+
+xdgBasedir.config;
+//=> '/home/sindresorhus/.config'
+
+xdgBasedir.dataDirs
+//=> ['/home/sindresorhus/.local/share', '/usr/local/share/', '/usr/share/']
+```
+
+
+## API
+
+The properties `.data`, `.config`, `.cache`, `.runtime` will return `null` in the uncommon case that both the XDG environment variable is not set and the users home directory can't be found. You need to handle this case. A common solution is to [fall back to a temp directory](https://github.com/yeoman/configstore/blob/b82690fc401318ad18dcd7d151a0003a4898a314/index.js#L15).
+
+### .data
+
+Directory for user specific data files.
+
+### .config
+
+Directory for user specific configuration files.
+
+### .cache
+
+Directory for user specific non-essential data files.
+
+### .runtime
+
+Directory for user-specific non-essential runtime files and other file objects (such as sockets, named pipes, etc).
+
+### .dataDirs
+
+Preference-ordered array of base directories to search for data files in addition to `.data`.
+
+### .configDirs
+
+Preference-ordered array of base directories to search for configuration files in addition to `.config`.
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/node_modules/update-notifier/package.json b/node_modules/update-notifier/package.json
new file mode 100644
index 000000000..34fb27823
--- /dev/null
+++ b/node_modules/update-notifier/package.json
@@ -0,0 +1,149 @@
+{
+ "_args": [
+ [
+ {
+ "raw": "update-notifier",
+ "scope": null,
+ "escapedName": "update-notifier",
+ "name": "update-notifier",
+ "rawSpec": "",
+ "spec": "latest",
+ "type": "tag"
+ },
+ "/Users/ceej/code/Tools/npm"
+ ]
+ ],
+ "_from": "update-notifier@latest",
+ "_id": "update-notifier@2.0.0",
+ "_inCache": true,
+ "_location": "/update-notifier",
+ "_nodeVersion": "4.6.2",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/update-notifier-2.0.0.tgz_1486998603563_0.23791463673114777"
+ },
+ "_npmUser": {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ "_npmVersion": "2.15.11",
+ "_phantomChildren": {
+ "ansi-regex": "2.1.1",
+ "graceful-fs": "4.1.11",
+ "ini": "1.3.4",
+ "mkdirp": "0.5.1",
+ "semver": "5.3.0",
+ "strip-ansi": "3.0.1",
+ "which": "1.2.12",
+ "write-file-atomic": "1.3.1"
+ },
+ "_requested": {
+ "raw": "update-notifier",
+ "scope": null,
+ "escapedName": "update-notifier",
+ "name": "update-notifier",
+ "rawSpec": "",
+ "spec": "latest",
+ "type": "tag"
+ },
+ "_requiredBy": [
+ "#USER",
+ "/"
+ ],
+ "_resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.0.0.tgz",
+ "_shasum": "1f2712fd2079f415980b5af95eb120e4aceea9a6",
+ "_shrinkwrap": null,
+ "_spec": "update-notifier",
+ "_where": "/Users/ceej/code/Tools/npm",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/yeoman/update-notifier/issues"
+ },
+ "dependencies": {
+ "boxen": "^1.0.0",
+ "chalk": "^1.0.0",
+ "configstore": "^3.0.0",
+ "is-npm": "^1.0.0",
+ "latest-version": "^3.0.0",
+ "lazy-req": "^2.0.0",
+ "semver-diff": "^2.0.0",
+ "xdg-basedir": "^3.0.0"
+ },
+ "description": "Update notifications for your CLI app",
+ "devDependencies": {
+ "clear-require": "^2.0.0",
+ "fixture-stdout": "^0.2.1",
+ "mocha": "*",
+ "strip-ansi": "^3.0.1",
+ "xo": "^0.17.0"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "1f2712fd2079f415980b5af95eb120e4aceea9a6",
+ "tarball": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.0.0.tgz"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "files": [
+ "index.js",
+ "check.js"
+ ],
+ "gitHead": "d295cf395852979bd9db90715b31b9fbb0db9b70",
+ "homepage": "https://github.com/yeoman/update-notifier#readme",
+ "keywords": [
+ "npm",
+ "update",
+ "updater",
+ "notify",
+ "notifier",
+ "check",
+ "checker",
+ "cli",
+ "module",
+ "package",
+ "version"
+ ],
+ "license": "BSD-2-Clause",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ {
+ "name": "addyosmani",
+ "email": "addyosmani@gmail.com"
+ },
+ {
+ "name": "passy",
+ "email": "phartig@rdrei.net"
+ },
+ {
+ "name": "sboudrias",
+ "email": "admin@simonboudrias.com"
+ },
+ {
+ "name": "eddiemonge",
+ "email": "eddie+npm@eddiemonge.com"
+ },
+ {
+ "name": "arthurvr",
+ "email": "contact@arthurverschaeve.be"
+ }
+ ],
+ "name": "update-notifier",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/yeoman/update-notifier.git"
+ },
+ "scripts": {
+ "test": "xo && mocha --timeout 20000"
+ },
+ "version": "2.0.0"
+}
diff --git a/node_modules/update-notifier/readme.md b/node_modules/update-notifier/readme.md
new file mode 100644
index 000000000..2c5cda9c8
--- /dev/null
+++ b/node_modules/update-notifier/readme.md
@@ -0,0 +1,168 @@
+# update-notifier [![Build Status](https://travis-ci.org/yeoman/update-notifier.svg?branch=master)](https://travis-ci.org/yeoman/update-notifier)
+
+> Update notifications for your CLI app
+
+![](screenshot.png)
+
+Inform users of your package of updates in a non-intrusive way.
+
+#### Contents
+
+- [Examples](#examples)
+- [How](#how)
+- [API](#api)
+- [About](#about)
+- [Users](#users)
+
+
+## Examples
+
+### Simple
+
+```js
+const updateNotifier = require('update-notifier');
+const pkg = require('./package.json');
+
+updateNotifier({pkg}).notify();
+```
+
+### Comprehensive
+
+```js
+const updateNotifier = require('update-notifier');
+const pkg = require('./package.json');
+
+// Checks for available update and returns an instance
+const notifier = updateNotifier({pkg});
+
+// Notify using the built-in convenience method
+notifier.notify();
+
+// `notifier.update` contains some useful info about the update
+console.log(notifier.update);
+/*
+{
+ latest: '1.0.1',
+ current: '1.0.0',
+ type: 'patch', // Possible values: latest, major, minor, patch, prerelease, build
+ name: 'pageres'
+}
+*/
+```
+
+### Options and custom message
+
+```js
+const notifier = updateNotifier({
+ pkg,
+ updateCheckInterval: 1000 * 60 * 60 * 24 * 7 // 1 week
+});
+
+if (notifier.update) {
+ console.log(`Update available: ${notifier.update.latest}`);
+}
+```
+
+
+## How
+
+Whenever you initiate the update notifier and it's not within the interval threshold, it will asynchronously check with npm in the background for available updates, then persist the result. The next time the notifier is initiated, the result will be loaded into the `.update` property. This prevents any impact on your package startup performance.
+The update check is done in a unref'ed [child process](https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options). This means that if you call `process.exit`, the check will still be performed in its own process.
+
+The first time the user runs your app, it will check for an update, and even if an update is available, it will wait the specified `updateCheckInterval` before notifying the user. This is done to not be annoying to the user, but might surprise you as an implementer if you're testing whether it works. Check out [`example.js`](example.js) to quickly test out `update-notifier` and see how you can test that it works in your app.
+
+
+## API
+
+### notifier = updateNotifier(options)
+
+Checks if there is an available update. Accepts options defined below. Returns an instance with an `.update` property there is an available update, otherwise `undefined`.
+
+### options
+
+#### pkg
+
+Type: `Object`
+
+##### name
+
+*Required*<br>
+Type: `string`
+
+##### version
+
+*Required*<br>
+Type: `string`
+
+#### updateCheckInterval
+
+Type: `number`<br>
+Default: `1000 * 60 * 60 * 24` *(1 day)*
+
+How often to check for updates.
+
+#### callback(error, update)
+
+Type: `Function`
+
+Passing a callback here will make it check for an update directly and report right away. Not recommended as you won't get the benefits explained in [`How`](#how). `update` is equal to `notifier.update`.
+
+### notifier.notify([options])
+
+Convenience method to display a notification message. *(See screenshot)*
+
+Only notifies if there is an update and the process is [TTY](https://nodejs.org/api/process.html#process_tty_terminals_and_process_stdout).
+
+#### options
+
+Type: `Object`
+
+##### defer
+
+Type: `boolean`<br>
+Default: `true`
+
+Defer showing the notification to after the process has exited.
+
+##### message
+
+Type: `string`<br>
+Default: [See above screenshot](https://github.com/yeoman/update-notifier#update-notifier-)
+
+Message that will be shown when an update is available.
+
+##### boxenOpts
+
+Type: `Object`<br>
+Default: `{padding: 1, margin: 1, align: 'center', borderColor: 'yellow', borderStyle: 'round'}` *(See screenshot)*
+
+Options object that will be passed to [`boxen`](https://github.com/sindresorhus/boxen).
+
+### User settings
+
+Users of your module have the ability to opt-out of the update notifier by changing the `optOut` property to `true` in `~/.config/configstore/update-notifier-[your-module-name].json`. The path is available in `notifier.config.path`.
+
+Users can also opt-out by [setting the environment variable](https://github.com/sindresorhus/guides/blob/master/set-environment-variables.md) `NO_UPDATE_NOTIFIER` with any value or by using the `--no-update-notifier` flag on a per run basis.
+
+
+## About
+
+The idea for this module came from the desire to apply the browser update strategy to CLI tools, where everyone is always on the latest version. We first tried automatic updating, which we discovered wasn't popular. This is the second iteration of that idea, but limited to just update notifications.
+
+
+## Users
+
+There are a bunch projects using it:
+
+- [Yeoman](http://yeoman.io) - Modern workflows for modern webapps
+- [AVA](https://ava.li) - Simple concurrent test runner
+- [XO](https://github.com/sindresorhus/xo) - JavaScript happiness style linter
+- [Pageres](https://github.com/sindresorhus/pageres) - Capture website screenshots
+- [Node GH](http://nodegh.io) - GitHub command line tool
+
+[And 1200+ more…](https://www.npmjs.org/browse/depended/update-notifier)
+
+
+## License
+
+[BSD license](http://opensource.org/licenses/bsd-license.php) and copyright Google
diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json
index b0a1734e2..de941631a 100644
--- a/npm-shrinkwrap.json
+++ b/npm-shrinkwrap.json
@@ -4845,6 +4845,393 @@
"from": "unpipe@>=1.0.0 <1.1.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
},
+ "update-notifier": {
+ "version": "2.0.0",
+ "from": "update-notifier@latest",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.0.0.tgz",
+ "dependencies": {
+ "boxen": {
+ "version": "1.0.0",
+ "from": "boxen@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.0.0.tgz",
+ "dependencies": {
+ "ansi-align": {
+ "version": "1.1.0",
+ "from": "ansi-align@>=1.1.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-1.1.0.tgz",
+ "dependencies": {
+ "string-width": {
+ "version": "1.0.2",
+ "from": "string-width@>=1.0.1 <2.0.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "dependencies": {
+ "code-point-at": {
+ "version": "1.1.0",
+ "from": "code-point-at@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz"
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "from": "is-fullwidth-code-point@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "dependencies": {
+ "number-is-nan": {
+ "version": "1.0.1",
+ "from": "number-is-nan@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "camelcase": {
+ "version": "4.0.0",
+ "from": "camelcase@>=4.0.0 <5.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.0.0.tgz"
+ },
+ "cli-boxes": {
+ "version": "1.0.0",
+ "from": "cli-boxes@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz"
+ },
+ "string-width": {
+ "version": "2.0.0",
+ "from": "string-width@>=2.0.0 <3.0.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz",
+ "dependencies": {
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "from": "is-fullwidth-code-point@>=2.0.0 <3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz"
+ }
+ }
+ },
+ "term-size": {
+ "version": "0.1.1",
+ "from": "term-size@>=0.1.0 <0.2.0",
+ "resolved": "https://registry.npmjs.org/term-size/-/term-size-0.1.1.tgz",
+ "dependencies": {
+ "execa": {
+ "version": "0.4.0",
+ "from": "execa@>=0.4.0 <0.5.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.4.0.tgz",
+ "dependencies": {
+ "cross-spawn-async": {
+ "version": "2.2.5",
+ "from": "cross-spawn-async@>=2.1.1 <3.0.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz",
+ "dependencies": {
+ "lru-cache": {
+ "version": "4.0.2",
+ "from": "lru-cache@>=4.0.0 <5.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz",
+ "dependencies": {
+ "pseudomap": {
+ "version": "1.0.2",
+ "from": "pseudomap@>=1.0.1 <2.0.0",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz"
+ },
+ "yallist": {
+ "version": "2.0.0",
+ "from": "yallist@>=2.0.0 <3.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.0.0.tgz"
+ }
+ }
+ }
+ }
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "from": "is-stream@>=1.1.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz"
+ },
+ "npm-run-path": {
+ "version": "1.0.0",
+ "from": "npm-run-path@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-1.0.0.tgz"
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "from": "object-assign@>=4.0.1 <5.0.0",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
+ },
+ "path-key": {
+ "version": "1.0.0",
+ "from": "path-key@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-1.0.0.tgz"
+ },
+ "strip-eof": {
+ "version": "1.0.0",
+ "from": "strip-eof@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz"
+ }
+ }
+ }
+ }
+ },
+ "widest-line": {
+ "version": "1.0.0",
+ "from": "widest-line@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz",
+ "dependencies": {
+ "string-width": {
+ "version": "1.0.2",
+ "from": "string-width@>=1.0.1 <2.0.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "dependencies": {
+ "code-point-at": {
+ "version": "1.1.0",
+ "from": "code-point-at@^1.0.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz"
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "from": "is-fullwidth-code-point@^1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "dependencies": {
+ "number-is-nan": {
+ "version": "1.0.1",
+ "from": "number-is-nan@^1.0.0",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "from": "chalk@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "from": "ansi-styles@>=2.2.1 <3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz"
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "from": "escape-string-regexp@>=1.0.2 <2.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "from": "has-ansi@>=2.0.0 <3.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz"
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "from": "supports-color@>=2.0.0 <3.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz"
+ }
+ }
+ },
+ "configstore": {
+ "version": "3.0.0",
+ "from": "configstore@>=3.0.0 <4.0.0",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.0.0.tgz",
+ "dependencies": {
+ "dot-prop": {
+ "version": "4.1.0",
+ "from": "dot-prop@>=4.1.0 <5.0.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.1.0.tgz",
+ "dependencies": {
+ "is-obj": {
+ "version": "1.0.1",
+ "from": "is-obj@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz"
+ }
+ }
+ },
+ "unique-string": {
+ "version": "1.0.0",
+ "from": "unique-string@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
+ "dependencies": {
+ "crypto-random-string": {
+ "version": "1.0.0",
+ "from": "crypto-random-string@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz"
+ }
+ }
+ }
+ }
+ },
+ "is-npm": {
+ "version": "1.0.0",
+ "from": "is-npm@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz"
+ },
+ "latest-version": {
+ "version": "3.0.0",
+ "from": "latest-version@>=3.0.0 <4.0.0",
+ "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.0.0.tgz",
+ "dependencies": {
+ "package-json": {
+ "version": "3.0.0",
+ "from": "package-json@>=3.0.0 <4.0.0",
+ "resolved": "https://registry.npmjs.org/package-json/-/package-json-3.0.0.tgz",
+ "dependencies": {
+ "got": {
+ "version": "6.7.1",
+ "from": "got@>=6.7.1 <7.0.0",
+ "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
+ "dependencies": {
+ "create-error-class": {
+ "version": "3.0.2",
+ "from": "create-error-class@>=3.0.0 <4.0.0",
+ "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
+ "dependencies": {
+ "capture-stack-trace": {
+ "version": "1.0.0",
+ "from": "capture-stack-trace@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz"
+ }
+ }
+ },
+ "duplexer3": {
+ "version": "0.1.4",
+ "from": "duplexer3@>=0.1.4 <0.2.0",
+ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz"
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "from": "get-stream@>=3.0.0 <4.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz"
+ },
+ "is-redirect": {
+ "version": "1.0.0",
+ "from": "is-redirect@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz"
+ },
+ "is-retry-allowed": {
+ "version": "1.1.0",
+ "from": "is-retry-allowed@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz"
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "from": "is-stream@^1.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz"
+ },
+ "lowercase-keys": {
+ "version": "1.0.0",
+ "from": "lowercase-keys@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz"
+ },
+ "safe-buffer": {
+ "version": "5.0.1",
+ "from": "safe-buffer@>=5.0.1 <6.0.0",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz"
+ },
+ "timed-out": {
+ "version": "4.0.1",
+ "from": "timed-out@>=4.0.0 <5.0.0",
+ "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz"
+ },
+ "unzip-response": {
+ "version": "2.0.1",
+ "from": "unzip-response@>=2.0.1 <3.0.0",
+ "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz"
+ },
+ "url-parse-lax": {
+ "version": "1.0.0",
+ "from": "url-parse-lax@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
+ "dependencies": {
+ "prepend-http": {
+ "version": "1.0.4",
+ "from": "prepend-http@>=1.0.1 <2.0.0",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz"
+ }
+ }
+ }
+ }
+ },
+ "registry-auth-token": {
+ "version": "3.1.0",
+ "from": "registry-auth-token@>=3.0.1 <4.0.0",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.1.0.tgz",
+ "dependencies": {
+ "rc": {
+ "version": "1.1.6",
+ "from": "rc@>=1.1.6 <2.0.0",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz",
+ "dependencies": {
+ "deep-extend": {
+ "version": "0.4.1",
+ "from": "deep-extend@>=0.4.0 <0.5.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz"
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "from": "minimist@>=1.2.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz"
+ },
+ "strip-json-comments": {
+ "version": "1.0.4",
+ "from": "strip-json-comments@>=1.0.4 <1.1.0",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz"
+ }
+ }
+ }
+ }
+ },
+ "registry-url": {
+ "version": "3.1.0",
+ "from": "registry-url@>=3.0.3 <4.0.0",
+ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
+ "dependencies": {
+ "rc": {
+ "version": "1.1.6",
+ "from": "rc@^1.0.1",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz",
+ "dependencies": {
+ "deep-extend": {
+ "version": "0.4.1",
+ "from": "deep-extend@~0.4.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz"
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "from": "minimist@^1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz"
+ },
+ "strip-json-comments": {
+ "version": "1.0.4",
+ "from": "strip-json-comments@~1.0.4",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "lazy-req": {
+ "version": "2.0.0",
+ "from": "lazy-req@>=2.0.0 <3.0.0",
+ "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-2.0.0.tgz"
+ },
+ "semver-diff": {
+ "version": "2.1.0",
+ "from": "semver-diff@>=2.0.0 <3.0.0",
+ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz"
+ },
+ "xdg-basedir": {
+ "version": "3.0.0",
+ "from": "xdg-basedir@>=3.0.0 <4.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz"
+ }
+ }
+ },
"uuid": {
"version": "3.0.1",
"from": "uuid@latest",
diff --git a/package.json b/package.json
index ae83af8ad..27050a03c 100644
--- a/package.json
+++ b/package.json
@@ -102,6 +102,7 @@
"umask": "~1.1.0",
"unique-filename": "~1.1.0",
"unpipe": "~1.0.0",
+ "update-notifier": "~2.0.0",
"uuid": "~3.0.1",
"validate-npm-package-name": "~3.0.0",
"which": "~1.2.12",
@@ -189,6 +190,7 @@
"umask",
"unique-filename",
"unpipe",
+ "update-notifier",
"validate-npm-package-license",
"validate-npm-package-name",
"which",